----- Original Message ----- > This macro gathers the various checks/substitutions that spice-common's > configure.ac needs to do. It's meant to be called by users of the > spice-common submodule instead of calling AC_CONFIG_SUBDIRS() which is > much slower and less flexible. Speed? It takes less than 10s on my machine at configure time. benefit is really marginal. But more, that goes in the wrong direction. The idea was and is till to have a shared library. But for that to happen, somebody needs to clean up API, and version it etc.. I would rather take this change happily than some awkward build change. > This also removes spice-protocol as a submodule, it's a standalone module > with its own releases, so we can depend on it instead. However, I agree with that. > --- > Makefile.am | 1 - > autogen.sh | 19 ------- > common/Makefile.am | 82 ++++++++++++++--------------- > configure.ac | 152 > ----------------------------------------------------- > m4/spice-common.m4 | 98 ++++++++++++++++++++++++++++++++++ > spice-protocol | 1 - > 6 files changed, 138 insertions(+), 215 deletions(-) > delete mode 100755 autogen.sh > delete mode 100644 configure.ac > create mode 100644 m4/spice-common.m4 > delete mode 160000 spice-protocol > > diff --git a/Makefile.am b/Makefile.am > index 380bf24..e39273d 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -2,7 +2,6 @@ NULL = > ACLOCAL_AMFLAGS = -I m4 > > SUBDIRS = python_modules common > -DIST_SUBDIRS = spice-protocol $(SUBDIRS) > > EXTRA_DIST = \ > spice_codegen.py \ > diff --git a/autogen.sh b/autogen.sh > deleted file mode 100755 > index e4ada55..0000000 > --- a/autogen.sh > +++ /dev/null > @@ -1,19 +0,0 @@ > -#!/bin/sh > - > -set -e # exit on errors > - > -srcdir=`dirname $0` > -test -z "$srcdir" && srcdir=. > - > -olddir=`pwd` > -cd "$srcdir" > - > -git submodule update --init > - > -mkdir -p m4 > -autoreconf --verbose --force --install > - > -cd "$olddir" > -if [ -z "$NOCONFIGURE" ]; then > - "$srcdir"/configure --enable-maintainer-mode ${1+"$@"} > -fi > diff --git a/common/Makefile.am b/common/Makefile.am > index 73703fc..aa71aa6 100644 > --- a/common/Makefile.am > +++ b/common/Makefile.am > @@ -2,19 +2,19 @@ NULL = > > # Avoid need for python(pyparsing) by end users > CLIENT_MARSHALLERS = \ > - $(srcdir)/generated_client_demarshallers.c \ > - $(srcdir)/generated_client_demarshallers1.c \ > - $(srcdir)/generated_client_marshallers.c \ > - $(srcdir)/generated_client_marshallers1.c \ > + generated_client_demarshallers.c \ > + generated_client_demarshallers1.c \ > + generated_client_marshallers.c \ > + generated_client_marshallers1.c \ > $(NULL) > > SERVER_MARSHALLERS = \ > - $(srcdir)/generated_server_demarshallers.c \ > - $(srcdir)/generated_server_marshallers.c \ > - $(srcdir)/generated_server_marshallers.h \ > + generated_server_demarshallers.c \ > + generated_server_marshallers.c \ > + generated_server_marshallers.h \ > $(NULL) > > -BUILT_SOURCES = $(CLIENT_MARSHALLERS) $(SERVER_MARSHALLERS) > $(top_srcdir)/spice-protocol/spice/enums.h > +BUILT_SOURCES = $(CLIENT_MARSHALLERS) $(SERVER_MARSHALLERS) > > noinst_LTLIBRARIES = libspice-common.la libspice-common-server.la > libspice-common-client.la > libspice_common_la_SOURCES = \ > @@ -80,61 +80,61 @@ libspice_common_la_SOURCES += \ > $(NULL) > endif > > +#FIXME: need to make it possible for the toplevel module (spice) to be able > +#to add its own CFLAGS while letting the spice-common module silently adds > +#the flags it needs > +#AM_CPPFLAGS = $(AM_CPPFLAGS) $(xxxxx) ? > +#FIXME: need to remove the hardcoded -std=gnu99 here > AM_CPPFLAGS = \ > - $(GL_CFLAGS) \ > - $(PIXMAN_CFLAGS) \ > - $(CELT051_CFLAGS) \ > - $(OPUS_CFLAGS) \ > - $(PROTOCOL_CFLAGS) \ > - $(SMARTCARD_CFLAGS) \ > + $(SPICE_COMMON_CFLAGS) \ > $(VISIBILITY_HIDDEN_CFLAGS) \ > $(WARN_CFLAGS) \ > -std=gnu99 \ > $(NULL) > > -libspice_common_la_LIBADD = \ > - $(OPUS_LIBS) \ > - $(CELT051_LIBS) > +libspice_common_la_LIBADD = \ > + $(SPICE_COMMON_LIBS) > > +topdir=$(abs_srcdir)/.. > MARSHALLERS_DEPS = \ > - $(top_srcdir)/python_modules/__init__.py \ > - $(top_srcdir)/python_modules/codegen.py \ > - $(top_srcdir)/python_modules/demarshal.py \ > - $(top_srcdir)/python_modules/marshal.py \ > - $(top_srcdir)/python_modules/ptypes.py \ > - $(top_srcdir)/python_modules/spice_parser.py \ > - $(top_srcdir)/spice_codegen.py \ > + $(topdir)/python_modules/__init__.py \ > + $(topdir)/python_modules/codegen.py \ > + $(topdir)/python_modules/demarshal.py \ > + $(topdir)/python_modules/marshal.py \ > + $(topdir)/python_modules/ptypes.py \ > + $(topdir)/python_modules/spice_parser.py \ > + $(topdir)/spice_codegen.py \ > $(NULL) > > # Note despite being autogenerated these are not part of CLEANFILES, they > are > # actually a part of EXTRA_DIST, to avoid the need for pyparser by end users > -generated_client_demarshallers.c: $(top_srcdir)/spice.proto > $(MARSHALLERS_DEPS) > - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py > --generate-demarshallers --client --include messages.h $< $@ >/dev/null > +generated_client_demarshallers.c: $(topdir)/spice.proto $(MARSHALLERS_DEPS) > + $(AM_V_GEN)$(PYTHON) $(topdir)/spice_codegen.py --generate-demarshallers > --client --include messages.h $< $@ >/dev/null > > -generated_client_demarshallers1.c: $(top_srcdir)/spice1.proto > $(MARSHALLERS_DEPS) > - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py > --generate-demarshallers --client --include messages.h --prefix 1 --ptrsize > 8 $< $@ >/dev/null > +generated_client_demarshallers1.c: $(topdir)/spice1.proto > $(MARSHALLERS_DEPS) > + $(AM_V_GEN)$(PYTHON) $(topdir)/spice_codegen.py --generate-demarshallers > --client --include messages.h --prefix 1 --ptrsize 8 $< $@ >/dev/null > > -generated_client_marshallers.c: $(top_srcdir)/spice.proto > $(MARSHALLERS_DEPS) > - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers > -P --include messages.h --include client_marshallers.h --client $< $@ > >/dev/null > +generated_client_marshallers.c: $(topdir)/spice.proto $(MARSHALLERS_DEPS) > + $(AM_V_GEN)$(PYTHON) $(topdir)/spice_codegen.py --generate-marshallers -P > --include messages.h --include client_marshallers.h --client $< $@ > >/dev/null > > -generated_client_marshallers1.c: $(top_srcdir)/spice1.proto > $(MARSHALLERS_DEPS) > - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers > -P --include messages.h --include client_marshallers.h --client --prefix 1 > --ptrsize 8 $< $@ >/dev/null > +generated_client_marshallers1.c: $(topdir)/spice1.proto $(MARSHALLERS_DEPS) > + $(AM_V_GEN)$(PYTHON) $(topdir)/spice_codegen.py --generate-marshallers -P > --include messages.h --include client_marshallers.h --client --prefix 1 > --ptrsize 8 $< $@ >/dev/null > > -generated_server_demarshallers.c: $(top_srcdir)/spice.proto > $(MARSHALLERS_DEPS) > - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py > --generate-demarshallers --server --include messages.h $< $@ >/dev/null > +generated_server_demarshallers.c: $(topdir)/spice.proto $(MARSHALLERS_DEPS) > + $(AM_V_GEN)$(PYTHON) $(topdir)/spice_codegen.py --generate-demarshallers > --server --include messages.h $< $@ >/dev/null > > STRUCTS = -M String -M Rect -M Point -M DisplayBase -M Fill -M Opaque -M > Copy -M Blend -M Blackness -M Whiteness -M Invers -M Rop3 -M Stroke -M Text > -M Transparent -M AlphaBlend -M Composite > -generated_server_marshallers.c: $(top_srcdir)/spice.proto > $(MARSHALLERS_DEPS) > - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers > $(STRUCTS) --server --include messages.h $< $@ >/dev/null > +generated_server_marshallers.c: $(topdir)/spice.proto $(MARSHALLERS_DEPS) > + $(AM_V_GEN)$(PYTHON) $(topdir)/spice_codegen.py --generate-marshallers > $(STRUCTS) --server --include messages.h $< $@ >/dev/null > > -generated_server_marshallers.h: $(top_srcdir)/spice.proto > $(MARSHALLERS_DEPS) > - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers > $(STRUCTS) --server --include messages.h -H $< $@ >/dev/null > +generated_server_marshallers.h: $(topdir)/spice.proto $(MARSHALLERS_DEPS) > + $(AM_V_GEN)$(PYTHON) $(topdir)/spice_codegen.py --generate-marshallers > $(STRUCTS) --server --include messages.h -H $< $@ >/dev/null > > # this is going to upset automake distcheck, since we try to write to > # readonly srcdir. To limit the fail chances, rebuild automatically > # enums.h only if the spice.proto has changed. > -$(top_srcdir)/spice-protocol/spice/enums.h: $(top_srcdir)/spice.proto # > $(MARSHALLERS_DEPS) > - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-enums $< $@ > >/dev/null > +$(top_srcdir)/spice-protocol/spice/enums.h: $(topdir)/spice.proto # > $(MARSHALLERS_DEPS) > + $(AM_V_GEN)$(PYTHON) $(topdir)/spice_codegen.py --generate-enums $< $@ > >/dev/null > > EXTRA_DIST = \ > $(CLIENT_MARSHALLERS) \ > @@ -154,5 +154,3 @@ EXTRA_DIST = \ > sw_canvas.c \ > sw_canvas.h \ > $(NULL) > - > --include $(top_srcdir)/git.mk > diff --git a/configure.ac b/configure.ac > deleted file mode 100644 > index bb469c6..0000000 > --- a/configure.ac > +++ /dev/null > @@ -1,152 +0,0 @@ > -AC_PREREQ([2.63]) > - > -AC_INIT([spice-common], > - [noversion], > - [spice-devel@xxxxxxxxxxxxxxxxxxxxx]) > - > -AC_CONFIG_SRCDIR([common/bitops.h]) > -AC_CONFIG_MACRO_DIR([m4]) > -AM_CONFIG_HEADER([config.h]) > -AC_CONFIG_AUX_DIR([build-aux]) > - > -# For automake >= 1.12 > -m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) > - > -# Checks for programs > -AM_INIT_AUTOMAKE([1.11 dist-xz no-dist-gzip tar-ustar foreign -Wall > -Werror]) > -AM_MAINTAINER_MODE > -AM_SILENT_RULES([yes]) > -LT_INIT > - > -AC_PROG_CC > -AC_PROG_CC_C99 > -if test "x$ac_cv_prog_cc_c99" = xno; then > - AC_MSG_ERROR([C99 compiler is required.]) > -fi > -AM_PROG_CC_C_O > - > -# Checks for libraries > -AC_CONFIG_SUBDIRS([spice-protocol]) > -PROTOCOL_CFLAGS='-I ${top_srcdir}/spice-protocol' > -AC_SUBST(PROTOCOL_CFLAGS) > - > -PKG_CHECK_MODULES(PIXMAN, pixman-1 >= 0.17.7) > -AC_SUBST(PIXMAN_CFLAGS) > - > -AC_ARG_ENABLE([smartcard], > - AS_HELP_STRING([--enable-smartcard=@<:@yes/no/auto@:>@], > - [Enable smartcard support @<:@default=auto@:>@]), > - [], > - [enable_smartcard="auto"]) > - > -have_smartcard=no > -if test "x$enable_smartcard" != "xno"; then > - PKG_CHECK_MODULES(SMARTCARD, libcacard >= 0.1.2, [have_smartcard=yes], > [have_smartcard=no]) > - if test "x$enable_smartcard" != "xauto" && test "x$have_smartcard" = > "xno"; then > - AC_MSG_ERROR("Smartcard support requested but libcacard could not be > found") > - fi > - if test "x$have_smartcard" = "xyes"; then > - AC_DEFINE(USE_SMARTCARD, [1], [Define if supporting smartcard proxying]) > - fi > -fi > -AM_CONDITIONAL([WITH_SMARTCARD], [test "x$have_smartcard" = "xyes"]) > - > -AC_ARG_ENABLE(celt051, > -[ --disable-celt051 Disable celt051 audio codec (enabled by > default)],, > -[enable_celt051="yes"]) > - > -if test "x$enable_celt051" = "xyes"; then > - PKG_CHECK_MODULES(CELT051, celt051 >= 0.5.1.1, have_celt051=yes, > have_celt051=no) > - AC_SUBST(CELT051_CFLAGS) > - AC_SUBST(CELT051_LIBS) > - AC_SUBST(CELT051_LIBDIR) > -else > - have_celt051=no > -fi > - > -AM_CONDITIONAL([HAVE_CELT051], [test "x$have_celt051" = "xyes"]) > -AM_COND_IF([HAVE_CELT051], AC_DEFINE([HAVE_CELT051], 1, [Define if we have > celt051 codec])) > - > -PKG_CHECK_MODULES([OPUS], [opus >= 0.9.14], have_opus=yes, have_opus=no) > - > -AM_CONDITIONAL([HAVE_OPUS], [test "x$have_opus" = "xyes"]) > -if test "x$have_opus" = "xyes" ; then > - AC_DEFINE([HAVE_OPUS], [1], [Define if we have OPUS]) > - SPICE_REQUIRES+=" opus >= 0.9.14" > - opus_version=`pkg-config --modversion opus` > -fi > - > -AC_ARG_ENABLE([opengl], > - AS_HELP_STRING([--enable-opengl=@<:@yes/no@:>@], > - [Enable opengl support (not recommended) > @<:@default=no@:>@]), > - [], > - [enable_opengl="no"]) > -AM_CONDITIONAL(SUPPORT_GL, test "x$enable_opengl" = "xyes") > - > -if test "x$enable_opengl" = "xyes"; then > - AC_CHECK_LIB(GL, glBlendFunc, GL_LIBS="$GL_LIBS -lGL", enable_opengl=no) > - AC_CHECK_LIB(GLU, gluSphere, GL_LIBS="$GL_LIBS -lGLU", enable_opengl=no) > - AC_DEFINE([USE_OPENGL], [1], [Define to build with OpenGL support]) > - AC_DEFINE([GL_GLEXT_PROTOTYPES], [], [Enable GLExt prototypes]) > - > - if test "x$enable_opengl" = "xno"; then > - AC_MSG_ERROR([GL libraries not available]) > - fi > -fi > -AC_SUBST(GL_CFLAGS) > -AC_SUBST(GL_LIBS) > - > -# Checks for header files > -AC_PATH_X > -AC_FUNC_ALLOCA > -AC_CHECK_HEADERS([arpa/inet.h malloc.h netinet/in.h stddef.h stdint.h > stdlib.h string.h sys/socket.h unistd.h]) > - > -# Checks for typedefs, structures, and compiler characteristics > -AC_C_INLINE > -AC_TYPE_INT16_T > -AC_TYPE_INT32_T > -AC_TYPE_INT64_T > -AC_TYPE_INT8_T > -AC_TYPE_PID_T > -AC_TYPE_SIZE_T > -AC_TYPE_UINT16_T > -AC_TYPE_UINT32_T > -AC_TYPE_UINT64_T > -AC_TYPE_UINT8_T > - > -# Checks for library functions > -# do not check malloc or realloc, since that cannot be cross-compiled > checked > -AC_FUNC_ERROR_AT_LINE > -AC_FUNC_FORK > -AC_CHECK_FUNCS([dup2 floor inet_ntoa memmove memset pow sqrt]) > - > -# Others > -AC_CANONICAL_HOST > - > -AC_MSG_CHECKING([for native Win32]) > -case "$host_os" in > - *mingw*|*cygwin*) > - os_win32=yes > - ;; > - *) > - os_win32=no > - ;; > -esac > -AC_MSG_RESULT([$os_win32]) > -AM_CONDITIONAL([OS_WIN32],[test "$os_win32" = "yes"]) > - > -# The End! > -AC_CONFIG_FILES([ > - Makefile > - common/Makefile > - python_modules/Makefile > -]) > - > -AH_BOTTOM([ > -/* argh.. this is evil */ > -#if defined(FIXME_SERVER_SMARTCARD) && defined(USE_SMARTCARD) > -%:undef USE_SMARTCARD > -#endif > -]) > - > -AC_OUTPUT > diff --git a/m4/spice-common.m4 b/m4/spice-common.m4 > new file mode 100644 > index 0000000..ab34f09 > --- /dev/null > +++ b/m4/spice-common.m4 > @@ -0,0 +1,98 @@ > +dnl Input: relative path to the spice-common dir from $top_srcdir > +dnl SPICE_COMMON_CFLAGS > +dnl SPICE_COMMON_LIBS > +dnl SPICE_COMMON_REQUIRES > +dnl AC_DEFINE(USE_SMARTCARD) > +dnl AM_CONDITIONAL(WITH_SMARTCARD) > +dnl AC_DEFINE(HAVE_CELT051) > +dnl AM_CONDITIONAL(HAVE_CELT051) > +dnl AC_DEFINE(HAVE_OPUS) > +dnl AM_CONDITIONAL(HAVE_OPUS) > +AC_DEFUN([SPICE_COMMON_SETUP], [ > + SPICE_COMMON_CFLAGS="-I\${top_srcdir}/$1/" > + SPICE_COMMON_LIBS= > + SPICE_COMMON_REQUIRES= > + > + > + PKG_CHECK_MODULES(ac_spice_PROTOCOL, spice-protocol >= 0.12.0) > + SPICE_COMMON_CFLAGS+=" $ac_spice_PROTOCOL_CFLAGS" > + SPICE_COMMON_LIBS+=" $ac_spice_PROTOCOL_LIBS" > + > + > + PKG_CHECK_MODULES(ac_spice_PIXMAN, pixman-1 >= 0.17.7) > + SPICE_COMMON_CFLAGS+=" $ac_spice_PIXMAN_CFLAGS" > + SPICE_COMMON_LIBS+=" $ac_spice_PIXMAN_LIBS" > + SPICE_COMMON_REQUIRES+=" pixman-1 >= 0.17.7" > + > + > + AC_ARG_ENABLE([smartcard], > + AS_HELP_STRING([--enable-smartcard=@<:@yes/no/auto@:>@], > + [Enable smartcard support @<:@default=auto@:>@]), > + [], > + [ac_spice_enable_smartcard="auto"]) > + > + > + ac_spice_have_smartcard=no > + if test "x$ac_spice_enable_smartcard" != "xno"; then > + PKG_CHECK_MODULES(ac_spice_SMARTCARD, libcacard >= 0.1.2, > + [ac_spice_have_smartcard=yes], > + [ac_spice_have_smartcard=no]) > + if test "x$ac_spice_enable_smartcard" != "xauto" && test > "x$ac_spice_have_smartcard" = "xno"; then > + AC_MSG_ERROR("Smartcard support requested but libcacard could not be > found") > + fi > + if test "x$ac_spice_have_smartcard" = "xyes"; then > + AC_DEFINE(USE_SMARTCARD, [1], [Define if supporting smartcard > proxying]) > + SPICE_COMMON_REQUIRES+=" libcacard >= 0.1.2" > + fi > + fi > + AM_CONDITIONAL([WITH_SMARTCARD], [test "x$ac_spice_have_smartcard" = > "xyes"]) > + SPICE_COMMON_CFLAGS+=" $ac_spice_SMARTCARD_CFLAGS" > + SPICE_COMMON_LIBS+=" $ac_spice_SMARTCARD_LIBS" > + > + > + AC_ARG_ENABLE(celt051, > + [ --disable-celt051 Disable celt051 audio codec > (enabled by default)],, > + [ac_spice_enable_celt051="yes"]) > + > + if test "x$ac_spice_enable_celt051" = "xyes"; then > + PKG_CHECK_MODULES(ac_spice_CELT051, celt051 >= 0.5.1.1, > ac_spice_have_celt051=yes, ac_spice_have_celt051=no) > + else > + ac_spice_have_celt051=no > + fi > + > + AM_CONDITIONAL([HAVE_CELT051], [test "x$ac_spice_have_celt051" = > "xyes"]) > + AM_COND_IF([HAVE_CELT051], > + SPICE_COMMON_REQUIRES+=" celt051 >= 0.5.1.1" > + AC_DEFINE([HAVE_CELT051], 1, [Define if we have celt051 > codec])) > + SPICE_COMMON_CFLAGS+=" $ac_spice_CELT051_CFLAGS" > + SPICE_COMMON_LIBS+=" $ac_spice_CELT051_LIBS" > + > + > + PKG_CHECK_MODULES([ac_spice_OPUS], [opus >= 0.9.14], > ac_spice_have_opus=yes, ac_spice_have_opus=no) > + > + AM_CONDITIONAL([HAVE_OPUS], [test "x$ac_spice_have_opus" = "xyes"]) > + if test "x$ac_spice_have_opus" = "xyes" ; then > + AC_DEFINE([HAVE_OPUS], [1], [Define if we have OPUS]) > + SPICE_COMMON_REQUIRES+=" opus >= 0.9.14" > + fi > + SPICE_COMMON_CFLAGS+=" $ac_spice_OPUS_CFLAGS" > + SPICE_COMMON_LIBS+=" $ac_spice_OPUS_LIBS" > + echo "SPICE_COMMON CFLAGS: $SPICE_COMMON_CFLAGS" > + echo "SPICE_COMMON_REQUIRES: $SPICE_COMMON_REQUIRES" > + > + AC_CONFIG_FILES([ > + $1/Makefile > + $1/common/Makefile > + $1/python_modules/Makefile > + ]) > + > + > + dnl needed because the generated server-side demarshalling smartcard > + dnl code does not compile for some reason > + AH_BOTTOM([/* argh.. this is evil */ > + #if defined(FIXME_SERVER_SMARTCARD) && defined(USE_SMARTCARD) > + %:undef USE_SMARTCARD > + #endif > + ]) > +]) > + > diff --git a/spice-protocol b/spice-protocol > deleted file mode 160000 > index a3de8dd..0000000 > --- a/spice-protocol > +++ /dev/null > @@ -1 +0,0 @@ > -Subproject commit a3de8dd8d250d6e3895c0167009cb58540c7ed19 > -- > 1.8.4.2 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel