From e592f06a7e03c4fe15372171b871bcc207cc4089 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Sat, 14 Apr 2007 16:38:02 +0000 Subject: * Moved code generation into top-level gen/ dir with own Makefile.am to correctly install generated headers. * Fixed gen-src.mk/Makefile dependency loop, bootstrap no longer needs to pre-create gen-src.mk. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@528835 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/Makefile.am | 2 +- cpp/bootstrap | 10 -------- cpp/configure.ac | 1 + cpp/docs/api/user.doxygen.in | 2 +- cpp/gen/Makefile.am | 41 +++++++++++++++++++++++++++++++++ cpp/gen/gen-src-mk.sh | 36 +++++++++++++++++++++++++++++ cpp/qpidc.spec.in | 1 - cpp/src/Makefile.am | 55 +++++++------------------------------------- cpp/src/make-gen-src-mk.sh | 31 ------------------------- cpp/src/qpidd.cpp | 4 ++-- cpp/src/tests/Makefile.am | 2 +- 11 files changed, 91 insertions(+), 94 deletions(-) create mode 100644 cpp/gen/Makefile.am create mode 100755 cpp/gen/gen-src-mk.sh delete mode 100755 cpp/src/make-gen-src-mk.sh (limited to 'cpp') diff --git a/cpp/Makefile.am b/cpp/Makefile.am index 1a7432ffe0..09c8b6d7c8 100644 --- a/cpp/Makefile.am +++ b/cpp/Makefile.am @@ -16,7 +16,7 @@ EXTRA_DIST = \ $(SPEC) $(SPEC).in $(PC) $(PC).in\ rpm/README.qpidd-devel -SUBDIRS = src docs/api docs/man +SUBDIRS = gen src docs/api docs/man # Update libtool, if needed. libtool: $(LIBTOOL_DEPS) diff --git a/cpp/bootstrap b/cpp/bootstrap index 55bb6152a1..d911a3bfd1 100755 --- a/cpp/bootstrap +++ b/cpp/bootstrap @@ -12,16 +12,6 @@ export JAVA JAVAC # If we're building in the qpid tree, we can generate # some Makefile snippets: -if test -d ../specs; then - # Transform gen/Makefile.am, removing automake-constructs and the - # contents of the sole automake-else clause (the warning), then - # use the result to run the rules that create gen-src.mk, a file - # that must be created before we run automake. - (cd src && rm -f gen/gen-src.mk - perl -ne '/warning:|^(if|else|endif|include)\b/ or print' Makefile.am \ - | make -f - srcdir=. gen/gen-src.mk > /dev/null ) -fi - # Generate (for automake) lots of repetitive parts of tests/Makefile.am. (cd src/tests && rm -f gen.mk perl -ne '/^include / or print' Makefile.am \ diff --git a/cpp/configure.ac b/cpp/configure.ac index 715b28e2e3..b180559e40 100644 --- a/cpp/configure.ac +++ b/cpp/configure.ac @@ -142,6 +142,7 @@ AC_CONFIG_FILES([ qpidc.pc qpidc.spec Makefile + gen/Makefile src/Makefile src/tests/Makefile docs/man/Makefile diff --git a/cpp/docs/api/user.doxygen.in b/cpp/docs/api/user.doxygen.in index 5c390cc9c8..ea50311ce6 100644 --- a/cpp/docs/api/user.doxygen.in +++ b/cpp/docs/api/user.doxygen.in @@ -467,7 +467,7 @@ WARN_LOGFILE = doxygen.log # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = @abs_top_srcdir@/src +INPUT = @abs_top_srcdir@/src @abs_top_builddir@/gen # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp diff --git a/cpp/gen/Makefile.am b/cpp/gen/Makefile.am new file mode 100644 index 0000000000..de524374e1 --- /dev/null +++ b/cpp/gen/Makefile.am @@ -0,0 +1,41 @@ +# +# Generate code from AMQP XML specification. +# +-include gen-src.mk + +BUILT_SOURCES = gen-src.mk $(generated_cpp) $(generated_h) + +# Distribute the generated sources, since the code generator depends +# on tools that may not be available in the build environment. +EXTRA_DIST = $(BUILT_SOURCES) + +# Install generated headers +nobase_include_HEADERS = $(generated_h) + +# Don't attempt to run the code generator unless configure has set +# CAN_GENERATE_CODE, indicating that the amqp.xml and tools needed +# to run the code generator are available. +# +if CAN_GENERATE_CODE +gentools_dir = $(top_srcdir)/gentools +gentools_srcdir = $(gentools_dir)/src/org/apache/qpid/gentools +spec_dir = $(top_srcdir)/../specs +spec = $(spec_dir)/amqp.0-9.xml $(spec_dir)/amqp-errata.0-9.xml + +qpid $(generated_cpp) $(generated_h): $(spec) $(java_sources) $(cxx_templates) + rm -rf qpid + mkdir -p qpid/framing + cd $(gentools_srcdir) && rm -f *.class && $(JAVAC) *.java + $(JAVA) -cp $(gentools_dir)/src org.apache.qpid.gentools.Main \ + -c -o qpid/framing -t $(gentools_dir)/templ.cpp $(spec) + touch qpid + +gen-src.mk: qpid gen-src-mk.sh + ./gen-src-mk.sh $(gentools_dir) $(gentools_srcdir) > $@-t + mv $@-t $@ + +endif + +maintainer-clean-local: + rm -rf qpid gen-src.mk $(gentools_srcdir)/*.class + diff --git a/cpp/gen/gen-src-mk.sh b/cpp/gen/gen-src-mk.sh new file mode 100755 index 0000000000..c17bc14307 --- /dev/null +++ b/cpp/gen/gen-src-mk.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# Generates gen-src.mk makefile fragment, to stdout. +# Usage: + +gentools_dir=$1 +gentools_srcdir=$2 + +backslashify() { + for x in $* ; do + echo " \\" + echo -n " $x" + done + echo ; echo +} + + +echo -n "generated_cpp = " +backslashify `find * -name '*.cpp' -print` +echo -n "generated_h = " +backslashify `find * -name '*.h' -print` + +echo +echo -n "java_sources =" +backslashify `find $gentools_srcdir -name '*.java' -print` +echo -n "cxx_templates =" +backslashify `find $gentools_dir/templ.cpp -name '*.tmpl'` + +cat < $@-t - mv $@-t $@ - -endif - -maintainer-clean: - rm -f $(gentools_srcdir)/*.class - rm -f $(gen) - -# Force build during dist phase so help2man will work. -dist-hook: $(lib_LTLIBRARIES) $(sbin_PROGRAMS) +# Force build of qpidd during dist phase so help2man will work. +dist-hook: qpidd diff --git a/cpp/src/make-gen-src-mk.sh b/cpp/src/make-gen-src-mk.sh deleted file mode 100755 index 21655e5512..0000000000 --- a/cpp/src/make-gen-src-mk.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# Generates the gen-src.mk makefile fragment, to stdout. -# Usage: - -gentools_dir=$1 -gentools_srcdir=$2 -gen=$3 - -wildcard() { echo `ls $* 2>/dev/null` ; } - -cat < #include #include diff --git a/cpp/src/tests/Makefile.am b/cpp/src/tests/Makefile.am index 388da8e9a9..34a513d583 100644 --- a/cpp/src/tests/Makefile.am +++ b/cpp/src/tests/Makefile.am @@ -1,5 +1,5 @@ AM_CXXFLAGS = $(WARNING_CFLAGS) $(CPPUNIT_CXXFLAGS) $(APR_CXXFLAGS) -INCLUDES = -I$(srcdir)/.. -I$(srcdir)/../gen +INCLUDES = -I$(srcdir)/.. -I$(top_builddir)/gen # Unit tests broker_unit_tests = \ -- cgit v1.2.1