summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Makefile.am97
-rwxr-xr-xcpp/src/generate.sh20
-rw-r--r--cpp/src/tests/Makefile.am3
-rwxr-xr-xcpp/src/tests/ais_check2
-rw-r--r--cpp/src/tests/cluster.mk1
5 files changed, 73 insertions, 50 deletions
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