summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2006-12-04 17:03:39 +0000
committerAlan Conway <aconway@apache.org>2006-12-04 17:03:39 +0000
commitb9d2b4bc80748d0a6a7209d0ce5dce97565c83ae (patch)
treef5f3fcfe6f9adb6f4f3fc5f6bbbce21ff0dd5c58
parentd7bd6ba4267f9c2ff2ce4165f226cf1317013005 (diff)
downloadqpid-python-b9d2b4bc80748d0a6a7209d0ce5dce97565c83ae.tar.gz
2006-12-01 Jim Meyering <meyering@redhat.com>
* configure.ac: Use an automake conditional to indicate when we have access to files outside of the current hierarchy, and when we have the tools (java and javac) to build some generated files. * gen/Makefile.am: Don't use $(abs_srcdir); not needed. (timestamp): Depend on java sources and C++ template files, if we're building in a qpid tree. Use $(JAVA) and $(JAVAC), rather than hard-coding those names. (gen-src.mk) [$(java_sources), $(cxx_templates)]: New rules to generate these lists of file names. * bootstrap: Also generate gen/gen-src.mk. But do that only if we're in a qpid hierarchy. Redirect make's stdout to /dev/null. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@482255 13f79535-47bb-0310-9956-ffa450edef68
-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