aboutsummaryrefslogtreecommitdiff
path: root/dist/examples/build
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-09-22 14:40:53 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-09-22 14:40:53 +0200
commit3c853bc264719437bcb2807d75ff5e9f9a3ea4f8 (patch)
treee9405b1078b0ed8a7be6c296d1a50653c1785b89 /dist/examples/build
parent8564df32f304589dfdffe46140a75f6e5d44523c (diff)
Add distribution-specific files, dist and dist-win targets
Diffstat (limited to 'dist/examples/build')
-rw-r--r--dist/examples/build/cxx/compilers.make117
-rw-r--r--dist/examples/build/cxx/rules.make66
-rw-r--r--dist/examples/build/xsd/common.make11
-rw-r--r--dist/examples/build/xsd/parser-rules.make23
-rw-r--r--dist/examples/build/xsd/tree-rules.make15
5 files changed, 232 insertions, 0 deletions
diff --git a/dist/examples/build/cxx/compilers.make b/dist/examples/build/cxx/compilers.make
new file mode 100644
index 0000000..fbab128
--- /dev/null
+++ b/dist/examples/build/cxx/compilers.make
@@ -0,0 +1,117 @@
+# file : examples/build/cxx/compilers.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2006 Code Synthesis Tools CC
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+CXX := g++
+
+cxx_sign := $(shell t=`$(CXX) -V 2>&1`; if test $$? -eq 0; then echo $$t; fi)
+
+ifeq ($(cxx_sign),)
+cxx_sign := $(shell t=`$(CXX) --version 2>&1`; if test $$? -eq 0; then echo $$t; fi)
+endif
+
+# IBM XL C++ V7.0 returns error code when called with the -qversion option. This
+# complicates our life quite a bit.
+#
+ifeq ($(cxx_sign),)
+cxx_sign := $(shell t=`$(CXX) -qversion 2>/dev/null`; echo $$t)
+ifneq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*IBM XL C\/C.. .*$$//'),)
+cxx_sign :=
+endif
+endif
+
+cxx_id :=
+
+ifneq ($(cxx_sign),)
+
+# GNU g++ (g++)
+#
+ifeq ($(cxx_id),)
+ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* (GCC) .*$$//'),)
+cxx_id := gnu
+endif
+endif
+
+# g++ 4.3 removed GCC for some reason so check for g++ also.
+ifeq ($(cxx_id),)
+ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^g++.*$$//'),)
+cxx_id := gnu
+endif
+endif
+
+# Sun C++ (CC)
+#
+ifeq ($(cxx_id),)
+ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* Sun C.. .*$$//'),)
+cxx_id := sun
+endif
+endif
+
+
+# HP C++ (aCC)
+#
+# aCC3 and aCC6 are two very different compilers so we will call them
+# hp3 and hp6.
+#
+
+# 3
+ifeq ($(cxx_id),)
+ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* HP ANSI C.. .* A\.03\..*$$//'),)
+cxx_id := hp3
+endif
+endif
+
+# 6
+ifeq ($(cxx_id),)
+ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* HP aC..\/ANSI C .* A\.06\..*$$//'),)
+cxx_id := hp6
+endif
+endif
+
+ifeq ($(cxx_id),)
+ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* HP C\/aC.. .* A\.06\..*$$//'),)
+cxx_id := hp6
+endif
+endif
+
+# Intel C++ (icpc)
+#
+
+# 9.x
+ifeq ($(cxx_id),)
+ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^Intel(R) C.. .*$$//'),)
+cxx_id := intel
+endif
+endif
+
+# 8.x
+ifeq ($(cxx_id),)
+ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^8\..$$//'),)
+cxx_id := intel
+endif
+endif
+
+
+# IBM XL C++
+#
+ifeq ($(cxx_id),)
+ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*IBM XL C\/C.. .*$$//'),)
+cxx_id := ibm
+endif
+endif
+
+
+# Unknown
+#
+ifeq ($(cxx_id),)
+$(warning unknown C++ compiler signature '$(cxx_sign)', continuing anyway)
+endif
+
+
+else
+$(warning unable to obtain compiler signature for '$(CXX)', continuing anyway)
+endif
+
+#$(warning $(cxx_sign))
+#$(warning $(cxx_id))
diff --git a/dist/examples/build/cxx/rules.make b/dist/examples/build/cxx/rules.make
new file mode 100644
index 0000000..1e448c0
--- /dev/null
+++ b/dist/examples/build/cxx/rules.make
@@ -0,0 +1,66 @@
+# file : examples/build/cxx/rules.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2006 Code Synthesis Tools CC
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+include $(root)/build/cxx/compilers.make
+
+
+# GNU g++
+#
+ifeq ($(cxx_id),gnu)
+ CXXFLAGS := -W -Wall -O3
+endif
+
+
+# Intel C++
+#
+ifeq ($(cxx_id),intel)
+ CXXFLAGS := -w1 -O2
+endif
+
+
+# Sun C++
+#
+ifeq ($(cxx_id),sun)
+ CXXFLAGS := -O
+endif
+
+
+# HP aCC3
+#
+ifeq ($(cxx_id),hp3)
+
+ # By default Xerces-C++ is built with -mt for aCC3.
+ # 849 : symbol to long, truncated to 4000
+ # 1039: incompatible vtable layout
+ #
+ CXXFLAGS := -AA -O -mt +W849 +W1039
+endif
+
+
+# HP aCC6
+#
+ifeq ($(cxx_id),hp6)
+
+ # By default Xerces-C++ is built with -mt for aCC6.
+ # 2334 no suitable copy constructor (e.g., for std::auto_ptr)
+ #
+ CXXFLAGS := -Aa -O -mt +W2334
+endif
+
+
+# IBM XL C++
+#
+ifeq ($(cxx_id),ibm)
+ CXXFLAGS := -qrtti -O
+endif
+
+
+# Rules.
+#
+%.o: %.cxx
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
+
+%: %.o
+ $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
diff --git a/dist/examples/build/xsd/common.make b/dist/examples/build/xsd/common.make
new file mode 100644
index 0000000..dd65987
--- /dev/null
+++ b/dist/examples/build/xsd/common.make
@@ -0,0 +1,11 @@
+# file : examples/build/xsd/common.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2006 Code Synthesis Tools CC
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+XSD := $(shell if test -x $(root)/../bin/xsd; \
+ then echo $(root)/../bin/xsd; \
+ else echo xsd; fi)
+
+override CPPFLAGS += $(shell if test -d $(root)/../libxsd; \
+ then echo -I$(root)/../libxsd; fi)
diff --git a/dist/examples/build/xsd/parser-rules.make b/dist/examples/build/xsd/parser-rules.make
new file mode 100644
index 0000000..dd5f9aa
--- /dev/null
+++ b/dist/examples/build/xsd/parser-rules.make
@@ -0,0 +1,23 @@
+# file : examples/build/xsd/parser-rules.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2006 Code Synthesis Tools CC
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+include $(root)/build/xsd/common.make
+
+XML_PARSER := xerces
+
+ifeq ($(XML_PARSER),xerces)
+override LIBS := -lxerces-c $(LIBS)
+else
+override LIBS := -lexpat $(LIBS)
+endif
+
+override XSDFLAGS += --xml-parser $(XML_PARSER)
+
+# Rules.
+#
+.PRECIOUS: %-pskel.hxx %-pskel.ixx %-pskel.cxx
+
+%-pskel.hxx %-pskel.ixx %-pskel.cxx: %.xsd
+ $(XSD) cxx-parser $(XSDFLAGS) $<
diff --git a/dist/examples/build/xsd/tree-rules.make b/dist/examples/build/xsd/tree-rules.make
new file mode 100644
index 0000000..3c90af7
--- /dev/null
+++ b/dist/examples/build/xsd/tree-rules.make
@@ -0,0 +1,15 @@
+# file : examples/build/xsd/tree-rules.make
+# author : Boris Kolpackov <boris@codesynthesis.com>
+# copyright : Copyright (c) 2006 Code Synthesis Tools CC
+# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+include $(root)/build/xsd/common.make
+
+override LIBS := -lxerces-c $(LIBS)
+
+# Rules.
+#
+.PRECIOUS: %.cxx %.hxx %.ixx
+
+%.cxx %.hxx %.ixx: %.xsd
+ $(XSD) cxx-tree $(XSDFLAGS) $<