diff options
Diffstat (limited to 'build-0.3/cxx/gnu/cxx-d.make')
-rw-r--r-- | build-0.3/cxx/gnu/cxx-d.make | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/build-0.3/cxx/gnu/cxx-d.make b/build-0.3/cxx/gnu/cxx-d.make new file mode 100644 index 0000000..6611e67 --- /dev/null +++ b/build-0.3/cxx/gnu/cxx-d.make @@ -0,0 +1,58 @@ +# file : build/cxx/gnu/cxx-o.make +# copyright : Copyright (c) 2004-2012 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +$(call include-once,$(bld_root)/c/cpp-options.make,$(out_base)) +$(call include,$(bld_root)/cxx/gnu/configuration.make) + +# Make will try to build dependecies (since they are ultimately included +# files) during configuartion phase without cxx_gnu being discovered yet. +# This is also why dependecies should be included with -include. +# +ifdef cxx_gnu + +$(out_base)/%.o.d: cxx := $(cxx_gnu) +$(out_base)/%.o.d: cpp_options ?= + +#@@ This needs to be shared with cxx-o. +# +#@@ wrong prefix +# +$(out_base)/%.o.d: expand-cpp-options-impl = \ +$(if $1,$(shell sed -e 's%include: \(.*\)%\1%' -e t -e d $1)) + +$(out_base)/%.o.d: expand-cpp-options = \ +$(call expand-cpp-options-impl,$(filter %.cpp-options,$1)) + +.PRECIOUS: $(out_base)/%.o.d + +ifeq ($(out_base),$(src_base)) +$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix) +else +$(out_base)/%.o.d: $(src_base)/%.$(cxx_s_suffix) | $$(dir $$@). +endif + $(call message,,if test -f $@; then mv $@ $@.old; fi && \ +$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \ +$(bld_root)/c/gnu/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \ +if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \ +else rm -f $@.old && true; fi fi) + +ifneq ($(out_base),$(src_base)) + +$(out_base)/%.o.d: $(out_base)/%.$(cxx_s_suffix) | $$(dir $$@). + $(call message,,if test -f $@; then mv $@ $@.old; fi && \ +$(cxx) $(cpp_options) $(call expand-cpp-options,$^) $(cxx_pp_extra_options) \ +$(cxx_extra_options) -M -MG -MP -MQ $@ -MQ $(basename $@) $< | \ +$(bld_root)/c/gnu/dep $(out_base) $(filter %.cpp-options,$^) >$@ && \ +if test -f $@.old; then if cmp -s $@ $@.old; then rm -f $@.old && false; \ +else rm -f $@.old && true; fi fi) + +endif + +.PHONY: $(out_base)/%.o.d.$(cxx_s_suffix).clean + +$(out_base)/%.o.d.$(cxx_s_suffix).clean: + $(call message,rm $$1,rm -f $$1,$(basename $(basename $@))) + +endif |