summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-08-17 15:52:07 +0000
committerAlan Conway <aconway@apache.org>2007-08-17 15:52:07 +0000
commitfd00bd1ca14d2ac2add8b0d0dba9477aafebc7d2 (patch)
treed277cf2d25a29a7688b43be1a008056f5cfdd655 /cpp/src
parentc534d81e9ef0b19a57dce9c115e6a436d9a82320 (diff)
downloadqpid-python-fd00bd1ca14d2ac2add8b0d0dba9477aafebc7d2.tar.gz
* Fixes for code generation.
- Generate make fragments in $(srcdir) to fix VPATH builds. - rubygen: generates its own .mk fragment - rubygen: moved template info from Makefile.am to generated rubygen.mk, fixes circular dependency between Makefile and rubygen.mk - removed unused templates. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@567072 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Makefile.am51
-rwxr-xr-xcpp/src/generate.sh3
2 files changed, 15 insertions, 39 deletions
diff --git a/cpp/src/Makefile.am b/cpp/src/Makefile.am
index 977db7ea36..32f5b3845b 100644
--- a/cpp/src/Makefile.am
+++ b/cpp/src/Makefile.am
@@ -1,24 +1,20 @@
SUBDIRS = . tests
+EXTRA_DIST= $(platform_dist)
+
## Generated code
# Note: generated soure and makefiles included in distribution so a
# distribution can be built without code generation tools and XML
# sources.
-EXTRA_DIST= $(platform_dist)
-
-EXTRA_DIST += generate.mk generate.sh $(generated_cpp) $(generated_h) \
- rubygen.mk $(rgen_srcs)
+# This phony target is needed by generated makefile fragments:
+force:
# AMQP_XML is defined in ../configure.ac
specs=@AMQP_XML@ $(top_srcdir)/xml/cluster.xml
-# Makefiles are either generated or copied from $srcdir.
-include generate.mk
-include rubygen.mk
-
-DISTCLEANFILES=generate.mk rubygen.mk
+EXTRA_DIST += generate.mk generate.sh $(generated_cpp) $(generated_h) $(rgen_srcs)
if GENERATE
@@ -28,7 +24,7 @@ if GENERATE
gentools_dir=$(top_srcdir)/gentools
-generate.mk $(generated_cpp) $(generated_h): generate.timestamp
+$(srcdir)/generate.mk $(generated_cpp) $(generated_h): generate.timestamp
generate.timestamp: generate.sh $(specs) $(generator)
env gentools_dir=$(gentools_dir) specs="$(specs)" $(srcdir)/generate.sh
touch $@
@@ -40,37 +36,16 @@ maintainer-clean-local:
rm -rf gen
# Ruby generator.
-
rgen_dir=$(top_srcdir)/rubygen
-rgen_tdir=$(rgen_dir)/templates
-rgen_cmd=ruby -I $(rgen_dir) $(rgen_dir)/generate
-
-rgen_templates=$(rgen_tdir)/MethodHolder.rb \
- $(rgen_tdir)/MethodBodyConstVisitor.rb \
- $(rgen_tdir)/frame_body_lists.rb \
- $(rgen_tdir)/Session.rb \
- $(rgen_tdir)/all_method_bodies.rb \
- $(rgen_tdir)/Proxy.rb
-
-rgen_generator=$(rgen_dir)/generate \
- $(rgen_dir)/amqpgen.rb \
- $(rgen_dir)/cppgen.rb
-
-rubygen.mk $(rgen_srcs): rubygen.timestamp
-rubygen.timestamp: $(rgen_generator) $(specs) $(rgen_templates)
- srcs=`$(rgen_cmd) . $(specs) $(rgen_templates) ` && { \
- echo -n "rgen_srcs= "; \
- for f in $$srcs; do echo "\\"; echo -n " $$f "; done; \
- echo; } > rubygen.mk
- touch $@
-else # !GENERATE
-# If not generating, copy generated makefiles from source dir to build dir.
-generate.mk:
- cp $(srcdir)/$@ $@
-rubygen.mk:
- cp $(srcdir)/$@ $@
+rgen_cmd=ruby -I $(rgen_dir) $(rgen_dir)/generate . $(specs) all $(srcdir)/rubygen.mk
+
endif # GENERATE
+include $(srcdir)/generate.mk
+include $(srcdir)/rubygen.mk
+
+DISTCLEANFILES=generate.mk rubygen.mk
+
# Code generated by C++
noinst_PROGRAMS=generate_MethodHolderMaxSize_h
generate_MethodHolderMaxSize_h_SOURCES=generate_MethodHolderMaxSize_h.cpp
diff --git a/cpp/src/generate.sh b/cpp/src/generate.sh
index 3869696bc7..3582893f24 100755
--- a/cpp/src/generate.sh
+++ b/cpp/src/generate.sh
@@ -7,6 +7,7 @@ set -e
test -z "$JAVA" && JAVA=java ;
test -z "$JAVAC" && JAVAC=javac ;
+srcdir=`dirname $0`
checkspecs() {
for s in $specs; do test -f $s || return 1; done
return 0
@@ -41,7 +42,7 @@ make_assign() {
`find ../gentools \( -name '*.java' -o -name '*.tmpl' \) -print`
fi
) > generate.mk-t
-mv generate.mk-t generate.mk
+mv generate.mk-t $srcdir/generate.mk