From bccebbfb3557b47382d0aa998b110e542607d30b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 14 Sep 2010 19:04:14 +0200 Subject: Support fall-back dependency tracking --- build/bootstrap.make | 32 +++++++++++++++++++++++++------- odb/makefile | 5 ++--- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/build/bootstrap.make b/build/bootstrap.make index d38ede4..1c5a4a3 100644 --- a/build/bootstrap.make +++ b/build/bootstrap.make @@ -26,18 +26,16 @@ $(call include,$(bld_root)/cxx/configuration.make) # Aliases # -.PHONY: $(out_base)/ \ - $(out_base)/.dist \ - $(out_base)/.clean \ - $(out_base)/.cleandoc +.PHONY: $(out_base)/ \ + $(out_base)/.dist \ + $(out_base)/.clean ifdef %interactive% -.PHONY: dist clean cleandoc +.PHONY: dist clean dist: $(out_base)/.dist clean: $(out_base)/.clean -cleandoc: $(out_base)/.cleandoc endif @@ -75,10 +73,30 @@ endef endif +# 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 + +endif + # Don't include dependency info for certain targets. # -ifneq ($(filter $(MAKECMDGOALS),clean cleandoc disfigure dist),) +ifneq ($(filter $(MAKECMDGOALS),clean disfigure dist),) include-dep = endif + .DEFAULT_GOAL := $(def_goal) diff --git a/odb/makefile b/odb/makefile index 095fc17..4e844b9 100644 --- a/odb/makefile +++ b/odb/makefile @@ -118,9 +118,8 @@ $(gen): cli_options += \ --include-prefix odb \ --guard-prefix ODB -$(call include-dep,$(cxx_pod)) -$(call include-dep,$(cxx_dod)) -$(call include-dep,$(cxx_cod)) +$(call include-dep,$(cxx_pod) $(cxx_dod) $(cxx_cod),\ +$(cxx_pobj) $(cxx_dobj) $(cxx_cobj),$(gen)) # Alias for default target. # -- cgit v1.1