From 28b22a308cb6cf0232067636fb6676a4c96d82f7 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Wed, 1 Aug 2007 16:50:33 +0000 Subject: * src/generate.sh: Moved requirements test to configure.ac * rubygen: Cleanup and improvements, template for cluster work. * configure.ac: - support for ruby code generator + cleanup. - moved "can generate" tests to configure.ac - removed redundant APR stuff. * bootstrap: Remove codegen from bootstrap, all in config/make. * src/Makefile.am (libqpidcommon_la_LIBADD): - Ruby code generator. - Improvements to existing generator rules. - Removed APR stuff. * configure.ac (CPPUNIT_CXXFLAGS): Removed APR stuff. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@561869 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/Makefile.am | 97 ++++++++++++++++++++++++++++------------------- cpp/src/generate.sh | 20 +++++----- cpp/src/tests/Makefile.am | 3 +- cpp/src/tests/ais_check | 2 +- cpp/src/tests/cluster.mk | 1 + 5 files changed, 73 insertions(+), 50 deletions(-) (limited to 'cpp/src') diff --git a/cpp/src/Makefile.am b/cpp/src/Makefile.am index 458f28abd2..d4293b70fd 100644 --- a/cpp/src/Makefile.am +++ b/cpp/src/Makefile.am @@ -1,31 +1,75 @@ SUBDIRS = . tests -# Generated code --include generate.mk +## Generated code -generate.mk $(generated_cpp) $(generated_h): gen/timestamp +# Note: generated soure and makefiles included in distribution so a +# distribution can be built without code generation tools and XML +# sources. -gen/timestamp: generate.sh $(generator) - $(srcdir)/generate.sh - touch $@ +EXTRA_DIST= $(platform_dist) + +EXTRA_DIST += gen/generate.mk generate.sh $(generated_cpp) $(generated_h) \ + rubygen.mk $(rgen_srcs) + +# AMQP_XML is defined in ../configure.ac +specs=@AMQP_XML@ $(top_srcdir)/xml/cluster.xml + +# Makefiles are either generated or copied from $srcdir. +sinclude gen/generate.mk +sinclude rubygen.mk + +DISTCLEANFILES=gen/generate.mk rubygen.mk + +if GENERATE + +# Java code generator. +# Must generate into a separate gen directory because otherwise +# there's no way to figure out which files are generated. + +gentools_dir=$(top_srcdir)/gentools + +gen/generate.mk: generate.sh $(specs) $(generator) + env gentools_dir=$(gentools_dir) specs="$(specs)" $(srcdir)/generate.sh + +gen $(generated_cpp) $(generated_h): gen/generate.mk # Empty rule in case a generator file is renamed/removed. $(generator): -DISTCLEANFILES=generate.mk - -clean-gen: +maintainer-clean-local: rm -rf gen -maintainer-clean-local: - clean-gen +# Ruby generator. + +rgen_dir=$(top_srcdir)/rubygen +rgen_tdir=$(rgen_dir)/templates +rgen_script=$(rgen_dir)/generate +rgen_cmd=ruby -I $(rgen_dir) $(rgen_script) + +rgen_templates=$(rgen_tdir)/frame_body_lists.rb + +rubygen.mk: $(rgen_script) $(specs) $(rgen_templates) + echo rgen_srcs=`$(rgen_cmd) - $(specs) $(rgen_templates)` > $@ + echo rgen_srcs=`$(rgen_cmd) . $(specs) $(rgen_templates)` -EXTRA_DIST=generate.sh $(generated_cpp) $(generated_h) $(platform_dist) +$(rgen_srcs): rubygen.mk -AM_CXXFLAGS = $(WARNING_CFLAGS) $(APR_CXXFLAGS) +else # !GENERATE +# If not generating, copy generated makefiles from source dir to build dir. +gen/generate.mk: + cp $(srcdir)/$@ $@ +rubygen.mk: + cp $(srcdir)/$@ $@ +endif # GENERATE + +## Compiler flags + +AM_CXXFLAGS = $(WARNING_CFLAGS) AM_LDFLAGS = -version-info $(LIBTOOL_VERSION_INFO_ARG) INCLUDES = -Igen -I$(srcdir)/gen +## Automake macros to build libraries and executables. + qpidd_LDADD = \ libqpidbroker.la \ libqpidcommon.la @@ -33,21 +77,6 @@ qpidd_LDADD = \ sbin_PROGRAMS = qpidd qpidd_SOURCES = qpidd.cpp -apr_plat_src = \ - qpid/sys/apr/APRBase.cpp \ - qpid/sys/apr/APRPool.cpp \ - qpid/sys/apr/Socket.cpp \ - qpid/sys/apr/Time.cpp \ - qpid/sys/apr/Thread.cpp \ - qpid/sys/apr/Shlib.cpp - -apr_plat_hdr = \ - qpid/sys/apr/APRBase.h \ - qpid/sys/apr/APRPool.h \ - qpid/sys/apr/Condition.h \ - qpid/sys/apr/Mutex.h \ - qpid/sys/apr/Thread.h - posix_plat_src = \ qpid/sys/epoll/EpollPoller.cpp \ qpid/sys/posix/check.cpp \ @@ -64,15 +93,8 @@ posix_plat_hdr = \ qpid/sys/posix/Mutex.h \ qpid/sys/posix/Thread.h -if USE_APR_PLATFORM - platform_dist=$(posix_plat_src) $(posix_plat_hdr) - platform_src = $(apr_plat_src) - platform_hdr = $(apr_plat_hdr) -else - platform_dist=$(apr_plat_src) $(apr_plat_hdr) - platform_src = $(posix_plat_src) - platform_hdr = $(posix_plat_hdr) -endif +platform_src = $(posix_plat_src) +platform_hdr = $(posix_plat_hdr) lib_LTLIBRARIES = libqpidcommon.la libqpidbroker.la libqpidclient.la @@ -91,7 +113,6 @@ libqpidcommon_la_LIBADD = \ -lboost_program_options \ -luuid \ libLogger.la \ - $(APR_LIBS) \ $(LIB_DLOPEN) \ $(LIB_CLOCK_GETTIME) diff --git a/cpp/src/generate.sh b/cpp/src/generate.sh index 1d8f946ecd..2cc31ff922 100755 --- a/cpp/src/generate.sh +++ b/cpp/src/generate.sh @@ -1,19 +1,19 @@ # !/bin/sh # Generate code from AMQP specification. -# srcdir must +# specs and gentools_dir are set by Makefile # -srcdir=`dirname $0` set -e -gentools_dir="$srcdir/../gentools" -specs_dir="$srcdir/../../specs" -specs="$specs_dir/amqp-transitional.0-10.xml $srcdir/../xml/cluster.xml" - test -z "$JAVA" && JAVA=java ; -test -z "$JAVAC" && JAVAC=javac ; +test -z "$JAVAC" && JAVAC=javac ; + +checkspecs() { + for s in $specs; do test -f $s || return 1; done + return 0 +} # Can we generate code? -if { test -d $gentools_dir && test -d $specs_dir && \ +if { test -d $gentools_dir && checkspecs && which $JAVA && which $JAVAC; } > /dev/null; then echo "Generating code." @@ -40,8 +40,8 @@ make_assign() { make_assign "generator" "" $specs \ `find ../gentools \( -name '*.java' -o -name '*.tmpl' \) -print` fi -) > generate.mk-t -mv generate.mk-t generate.mk +) > gen/generate.mk-t +mv gen/generate.mk-t gen/generate.mk diff --git a/cpp/src/tests/Makefile.am b/cpp/src/tests/Makefile.am index 82918c1aec..bc173d61d6 100644 --- a/cpp/src/tests/Makefile.am +++ b/cpp/src/tests/Makefile.am @@ -14,6 +14,7 @@ check_PROGRAMS= check_LTLIBRARIES= TESTS= EXTRA_DIST= +CLEANFILES= # # Unit test programs. @@ -171,7 +172,7 @@ all-am: .valgrind.supp .valgrindrc # ltmain invocations, one may corrupt the temporaries of the other. .NOTPARALLEL: -CLEANFILES=valgrind.out *.log *.vglog .valgrindrc .valgrind.supp dummy_test $(unit_wrappers) +CLEANFILES+=valgrind.out *.log *.vglog .valgrindrc .valgrind.supp dummy_test $(unit_wrappers) MAINTAINERCLEANFILES=gen.mk interop_runner_SOURCES = \ diff --git a/cpp/src/tests/ais_check b/cpp/src/tests/ais_check index 69a0469a26..ce3bbe1b1c 100755 --- a/cpp/src/tests/ais_check +++ b/cpp/src/tests/ais_check @@ -34,6 +34,6 @@ fi FAILED=0 for test in `cat ais_tests`; do - $srcdir/$test || FAILED=`expr $FAILED + 1` + ./$test || FAILED=`expr $FAILED + 1` done exit $FAILED diff --git a/cpp/src/tests/cluster.mk b/cpp/src/tests/cluster.mk index 8b603efb14..092647c9eb 100644 --- a/cpp/src/tests/cluster.mk +++ b/cpp/src/tests/cluster.mk @@ -21,6 +21,7 @@ AIS_TESTS= ais_check: ais_tests ais_tests: echo $(AIS_TESTS) >$@ +CLEANFILES+=ais_tests AIS_TESTS+=Cpg check_PROGRAMS+=Cpg -- cgit v1.2.1