summaryrefslogtreecommitdiff
path: root/xsd/build/bootstrap.make
diff options
context:
space:
mode:
Diffstat (limited to 'xsd/build/bootstrap.make')
-rw-r--r--xsd/build/bootstrap.make44
1 files changed, 30 insertions, 14 deletions
diff --git a/xsd/build/bootstrap.make b/xsd/build/bootstrap.make
index 7b4fdb9..56c20b3 100644
--- a/xsd/build/bootstrap.make
+++ b/xsd/build/bootstrap.make
@@ -1,9 +1,8 @@
# file : build/bootstrap.make
-# author : Boris Kolpackov <boris@codesynthesis.com>
-# copyright : Copyright (c) 2005-2010 Code Synthesis Tools CC
+# copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
# license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-project_name := XSD
+project_name := xsd
# First try to include the bundled bootstrap.make if it exist. If that
# fails, let make search for the external bootstrap.make.
@@ -16,10 +15,17 @@ ifeq ($(patsubst %build/bootstrap.make,,$(lastword $(MAKEFILE_LIST))),)
include $(build)/bootstrap.make
endif
+def_goal := $(.DEFAULT_GOAL)
+
# Configuration
#
$(call include,$(scf_root)/configuration.make)
+# Include C++ configuration. We need to know if we are using the generic
+# C++ compiler in which case we need to compensate for missing dependency
+# auto-generation (see below).
+#
+$(call include,$(bld_root)/cxx/configuration.make)
# Aliases
#
@@ -29,23 +35,17 @@ $(call include,$(scf_root)/configuration.make)
$(out_base)/.dist \
$(out_base)/.dist-win \
$(out_base)/.dist-common \
- $(out_base)/.clean \
- $(out_base)/.cleandoc
+ $(out_base)/.clean
ifdef %interactive%
-.PHONY: test install dist dist-win clean cleandoc
+.PHONY: test install dist dist-win clean
test: $(out_base)/.test
install: $(out_base)/.install
dist: $(out_base)/.dist
dist-win: $(out_base)/.dist-win
clean: $(out_base)/.clean
-cleandoc: $(out_base)/.cleandoc
-
-ifneq ($(filter $(.DEFAULT_GOAL),test install dist dist-win clean cleandoc),)
-.DEFAULT_GOAL :=
-endif
endif
@@ -58,14 +58,28 @@ $(error dist_prefix is not set)
endif
endif
-
-# Don't include dependency info for certain targets.
+# If we don't have dependency auto-generation then we need to manually
+# make sure that generated files are generated before C++ file are
+# compiler. To do this we make the object files ($2) depend in order-
+# only on generated files ($3).
#
+ifeq ($(cxx_id),generic)
+
+define include-dep
+$(if $2,$(eval $2: | $3))
+endef
+
+else
+
define include-dep
$(call -include,$1)
endef
-ifneq ($(filter $(MAKECMDGOALS),clean cleandoc disfigure),)
+endif
+
+# Don't include dependency info for certain targets.
+#
+ifneq ($(filter $(MAKECMDGOALS),clean disfigure),)
include-dep =
endif
@@ -84,3 +98,5 @@ include-dep =
endif
endif
+
+.DEFAULT_GOAL := $(def_goal)