From f88a7b7bec4da8dcb648baee70a9e01fc0572197 Mon Sep 17 00:00:00 2001 From: Christophe Fergeau Date: Mon, 6 Jul 2015 17:57:52 +0200 Subject: Use installed spice-protocol for code generation Now that spice-protocol ships the needed .proto files as well as the corresponding python scripts, spice-common can use these in order to generate the C code for the SPICE (de)marshallers. --- common/Makefile.am | 52 +++++++++++++++++++++++----------------------------- configure.ac | 4 +++- m4/spice-deps.m4 | 1 + 3 files changed, 27 insertions(+), 30 deletions(-) diff --git a/common/Makefile.am b/common/Makefile.am index b4384e8..2be512c 100644 --- a/common/Makefile.am +++ b/common/Makefile.am @@ -14,7 +14,7 @@ SERVER_MARSHALLERS = \ 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 = \ @@ -99,45 +99,39 @@ libspice_common_la_LIBADD = \ $(SPICE_COMMON_LIBS) \ $(NULL) -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 \ +MARSHALLERS_DEPS = \ + $(CODE_GENERATOR_BASEDIR)/python_modules/__init__.py \ + $(CODE_GENERATOR_BASEDIR)/python_modules/codegen.py \ + $(CODE_GENERATOR_BASEDIR)/python_modules/demarshal.py \ + $(CODE_GENERATOR_BASEDIR)/python_modules/marshal.py \ + $(CODE_GENERATOR_BASEDIR)/python_modules/ptypes.py \ + $(CODE_GENERATOR_BASEDIR)/python_modules/spice_parser.py \ + $(CODE_GENERATOR_BASEDIR)/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 common/messages.h $< $@ >/dev/null +generated_client_demarshallers.c: $(CODE_GENERATOR_BASEDIR)/spice.proto $(MARSHALLERS_DEPS) + $(AM_V_GEN)$(PYTHON) $(CODE_GENERATOR_BASEDIR)/spice_codegen.py --generate-demarshallers --client --include common/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 common/messages.h --prefix 1 --ptrsize 8 $< $@ >/dev/null +generated_client_demarshallers1.c: $(CODE_GENERATOR_BASEDIR)/spice1.proto $(MARSHALLERS_DEPS) + $(AM_V_GEN)$(PYTHON) $(CODE_GENERATOR_BASEDIR)/spice_codegen.py --generate-demarshallers --client --include common/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 common/messages.h --include client_marshallers.h --client $< $@ >/dev/null +generated_client_marshallers.c: $(CODE_GENERATOR_BASEDIR)/spice.proto $(MARSHALLERS_DEPS) + $(AM_V_GEN)$(PYTHON) $(CODE_GENERATOR_BASEDIR)/spice_codegen.py --generate-marshallers -P --include common/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 common/messages.h --include client_marshallers.h --client --prefix 1 --ptrsize 8 $< $@ >/dev/null +generated_client_marshallers1.c: $(CODE_GENERATOR_BASEDIR)/spice1.proto $(MARSHALLERS_DEPS) + $(AM_V_GEN)$(PYTHON) $(CODE_GENERATOR_BASEDIR)/spice_codegen.py --generate-marshallers -P --include common/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 common/messages.h $< $@ >/dev/null +generated_server_demarshallers.c: $(CODE_GENERATOR_BASEDIR)/spice.proto $(MARSHALLERS_DEPS) + $(AM_V_GEN)$(PYTHON) $(CODE_GENERATOR_BASEDIR)/spice_codegen.py --generate-demarshallers --server --include common/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 common/messages.h $< $@ >/dev/null +generated_server_marshallers.c: $(CODE_GENERATOR_BASEDIR)/spice.proto $(MARSHALLERS_DEPS) + $(AM_V_GEN)$(PYTHON) $(CODE_GENERATOR_BASEDIR)/spice_codegen.py --generate-marshallers $(STRUCTS) --server --include common/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 common/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 +generated_server_marshallers.h: $(CODE_GENERATOR_BASEDIR)/spice.proto $(MARSHALLERS_DEPS) + $(AM_V_GEN)$(PYTHON) $(CODE_GENERATOR_BASEDIR)/spice_codegen.py --generate-marshallers $(STRUCTS) --server --include common/messages.h -H $< $@ >/dev/null EXTRA_DIST = \ $(CLIENT_MARSHALLERS) \ diff --git a/configure.ac b/configure.ac index 1dacfa2..bc7ace2 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,9 @@ AM_PROG_CC_C_O SPICE_CHECK_SYSDEPS # Checks for libraries -PKG_CHECK_MODULES([PROTOCOL], [spice-protocol]) +PKG_CHECK_MODULES([PROTOCOL], [spice-protocol >= 0.12.10]) +CODE_GENERATOR_BASEDIR=`pkg-config --variable=codegendir spice-protocol` +AC_SUBST([CODE_GENERATOR_BASEDIR]) SPICE_CHECK_PYTHON_MODULES() diff --git a/m4/spice-deps.m4 b/m4/spice-deps.m4 index 68dec42..e4b2c8d 100644 --- a/m4/spice-deps.m4 +++ b/m4/spice-deps.m4 @@ -168,6 +168,7 @@ AC_DEFUN([SPICE_CHECK_GLIB2], [ # tarballs so they are disabled by default. #--------------------------- AC_DEFUN([SPICE_CHECK_PYTHON_MODULES], [ + AM_PATH_PYTHON AC_ARG_ENABLE([python-checks], AS_HELP_STRING([--enable-python-checks=@<:@yes/no@:>@], [Enable checks for Python modules needed to build from git @<:@default=no@:>@]), -- cgit v1.2.3