summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rwxr-xr-xcpp/bootstrap11
-rw-r--r--cpp/configure.ac13
-rw-r--r--cpp/gen/Makefile.am38
-rw-r--r--cpp/gen/gen-src.mk99
4 files changed, 45 insertions, 116 deletions
diff --git a/cpp/bootstrap b/cpp/bootstrap
index fe76a84989..34b16cb16b 100755
--- a/cpp/bootstrap
+++ b/cpp/bootstrap
@@ -4,10 +4,19 @@ aclocal -I m4
autoheader
libtoolize --automake
+# If we're building in the qpid tree, we can generate
+# some Makefile snippets:
+
+if test -d ../gentools && test -d ../specs; then
+ (cd gen && rm -f gen-src.mk
+ perl -ne '/^(abs_srcdir|if|else|endif|include)\b/ or print' Makefile.am \
+ | make -f - abs_srcdir=`pwd` srcdir=. gen-src.mk > /dev/null )
+fi
+
# Generate (for automake) lots of repetitive parts of tests/Makefile.am.
(cd tests && rm -f gen.mk
perl -ne '/^include / or print' Makefile.am \
- | make -f - abs_srcdir=`dirname $(pwd)` gen.mk )
+ | make -f - abs_srcdir=`dirname $(pwd)` gen.mk > /dev/null )
automake
autoconf
diff --git a/cpp/configure.ac b/cpp/configure.ac
index 955c114a7e..95e2f6ca1d 100644
--- a/cpp/configure.ac
+++ b/cpp/configure.ac
@@ -33,6 +33,19 @@ AC_ARG_ENABLE(warnings,
esac],
[enableval=yes])
+# Turn on this automake conditional if we are in a qpid
+# hierarchy (i.e. with gentools/ and specs/ sibling directories),
+# and if we have working java + javac.
+build=yes
+AC_CHECK_PROGS([JAVA], [java], [no])
+AC_CHECK_PROGS([JAVAC], [javac], [no])
+build=yes
+test x$JAVA = xno && build=no
+test x$JAVAC = xno && build=no
+test -d $srcdir/../gentools || build=no
+test -d $srcdir/../specs || build=no
+AM_CONDITIONAL([BUILD_IN_MESSAGE_TREE], [test x$build = xyes])
+
# Warnings: Enable as many as possible, keep the code clean. Please
# do not disable warnings or remove -Werror without discussing on
# qpid-dev list.
diff --git a/cpp/gen/Makefile.am b/cpp/gen/Makefile.am
index 1f38a419d6..8c179dfd06 100644
--- a/cpp/gen/Makefile.am
+++ b/cpp/gen/Makefile.am
@@ -1,6 +1,3 @@
-# TODO aconway 2006-11-30: nasty hack, should be done by automake?
-abs_srcdir = @abs_srcdir@
-
include gen-src.mk
BUILT_SOURCES = $(generated_sources)
@@ -10,21 +7,20 @@ BUILT_SOURCES = $(generated_sources)
EXTRA_DIST = $(BUILT_SOURCES)
MAINTAINERCLEANFILES = $(BUILT_SOURCES)
-gentools_dir = $(abs_srcdir)/../../gentools
-spec_dir = $(abs_srcdir)/../../specs
+gentools_dir = $(srcdir)/../../gentools
+spec_dir = $(srcdir)/../../specs
spec = $(spec_dir)/amqp-8.0.xml
+gentools_srcdir = $(gentools_dir)/src/org/apache/qpid/gentools
-# FIXME: add dependencies?
-timestamp: $(spec)
- if test -d $(gentools_dir); then \
- rm -f $(generated_sources); \
- (cd $(gentools_dir)/src/org/apache/qpid/gentools && \
- rm -f *.class && javac *.java); \
- java -cp $(gentools_dir)/src org.apache.qpid.gentools.Main \
- -c -o . -t $(gentools_dir)/templ.cpp $(spec); \
- else \
- echo "warning: failed to regenerate gen/*.{cpp,h}" 1>&2; \
- fi
+timestamp: $(spec) $(java_sources) $(cxx_templates)
+if BUILD_IN_MESSAGE_TREE
+ rm -f $(generated_sources)
+ (cd $(gentools_srcdir) && rm -f *.class && $(JAVAC) *.java); \
+ $(JAVA) -cp $(gentools_dir)/src org.apache.qpid.gentools.Main \
+ -c -o . -t $(gentools_dir)/templ.cpp $(spec)
+else
+ echo "warning: failed to regenerate gen/*.{cpp,h}" 1>&2
+endif
touch timestamp
EXTRA_DIST += timestamp
@@ -35,4 +31,14 @@ gen-src.mk: timestamp
( echo 'generated_sources = \' \
&& ls *.cpp *.h | sort -u | sed 's/.*/ & \\/;$$s/ \\//' \
) > $@-t
+if BUILD_IN_MESSAGE_TREE
+ ( echo 'java_sources = \' \
+ && find $(gentools_srcdir) -name '*.java' \
+ | sort -u | sed 's/.*/ & \\/;$$s/ \\//' \
+ ) >> $@-t
+ ( echo 'cxx_templates = \' \
+ && find $(gentools_dir)/templ.cpp -name '*.tmpl' \
+ | sort -u | sed 's/.*/ & \\/;$$s/ \\//' \
+ ) >> $@-t
+endif
mv $@-t $@
diff --git a/cpp/gen/gen-src.mk b/cpp/gen/gen-src.mk
deleted file mode 100644
index 607bda2bd7..0000000000
--- a/cpp/gen/gen-src.mk
+++ /dev/null
@@ -1,99 +0,0 @@
-generated_sources = \
- AccessRequestBody.h \
- AccessRequestOkBody.h \
- AMQP_ClientOperations.h \
- AMQP_ClientProxy.cpp \
- AMQP_ClientProxy.h \
- AMQP_Constants.h \
- AMQP_MethodVersionMap.cpp \
- AMQP_MethodVersionMap.h \
- AMQP_ServerOperations.h \
- AMQP_ServerProxy.cpp \
- AMQP_ServerProxy.h \
- BasicAckBody.h \
- BasicCancelBody.h \
- BasicCancelOkBody.h \
- BasicConsumeBody.h \
- BasicConsumeOkBody.h \
- BasicDeliverBody.h \
- BasicGetBody.h \
- BasicGetEmptyBody.h \
- BasicGetOkBody.h \
- BasicPublishBody.h \
- BasicQosBody.h \
- BasicQosOkBody.h \
- BasicRecoverBody.h \
- BasicRejectBody.h \
- BasicReturnBody.h \
- ChannelAlertBody.h \
- ChannelCloseBody.h \
- ChannelCloseOkBody.h \
- ChannelFlowBody.h \
- ChannelFlowOkBody.h \
- ChannelOpenBody.h \
- ChannelOpenOkBody.h \
- ConnectionCloseBody.h \
- ConnectionCloseOkBody.h \
- ConnectionOpenBody.h \
- ConnectionOpenOkBody.h \
- ConnectionRedirectBody.h \
- ConnectionSecureBody.h \
- ConnectionSecureOkBody.h \
- ConnectionStartBody.h \
- ConnectionStartOkBody.h \
- ConnectionTuneBody.h \
- ConnectionTuneOkBody.h \
- DtxSelectBody.h \
- DtxSelectOkBody.h \
- DtxStartBody.h \
- DtxStartOkBody.h \
- ExchangeDeclareBody.h \
- ExchangeDeclareOkBody.h \
- ExchangeDeleteBody.h \
- ExchangeDeleteOkBody.h \
- FileAckBody.h \
- FileCancelBody.h \
- FileCancelOkBody.h \
- FileConsumeBody.h \
- FileConsumeOkBody.h \
- FileDeliverBody.h \
- FileOpenBody.h \
- FileOpenOkBody.h \
- FilePublishBody.h \
- FileQosBody.h \
- FileQosOkBody.h \
- FileRejectBody.h \
- FileReturnBody.h \
- FileStageBody.h \
- QueueBindBody.h \
- QueueBindOkBody.h \
- QueueDeclareBody.h \
- QueueDeclareOkBody.h \
- QueueDeleteBody.h \
- QueueDeleteOkBody.h \
- QueuePurgeBody.h \
- QueuePurgeOkBody.h \
- StreamCancelBody.h \
- StreamCancelOkBody.h \
- StreamConsumeBody.h \
- StreamConsumeOkBody.h \
- StreamDeliverBody.h \
- StreamPublishBody.h \
- StreamQosBody.h \
- StreamQosOkBody.h \
- StreamReturnBody.h \
- TestContentBody.h \
- TestContentOkBody.h \
- TestIntegerBody.h \
- TestIntegerOkBody.h \
- TestStringBody.h \
- TestStringOkBody.h \
- TestTableBody.h \
- TestTableOkBody.h \
- TunnelRequestBody.h \
- TxCommitBody.h \
- TxCommitOkBody.h \
- TxRollbackBody.h \
- TxRollbackOkBody.h \
- TxSelectBody.h \
- TxSelectOkBody.h