From 03e6cdc1828b319def6ab3c104b91235fa93127c Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Sat, 17 Jan 2009 23:52:23 +0100 Subject: [PATCH] include_HEADERS works The question here is whether to copy includes during prepare-pass or by a rule during build. I guess the former has less overhead. --- snippets/cprog | 3 +++ snippets/include | 33 ++++++++++++++++----------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/snippets/cprog b/snippets/cprog index f197fa9..ae834ee 100644 --- a/snippets/cprog +++ b/snippets/cprog @@ -86,3 +86,6 @@ $(foreach src,$(filter %.c,$(USER_SOURCES)),\ $(SOURCES_DIR)/$(src),\ "CC ",\ $(c_o_cmd)))) + +include include #omkbuild +$(eval $(call include-pass-template,$(USER_INCLUDE_DIR),include)) diff --git a/snippets/include b/snippets/include index 2c781f2..e24aa3c 100644 --- a/snippets/include +++ b/snippets/include @@ -1,5 +1,5 @@ # LN_HEADERS .. if "y", header files are symbolicaly linked instead of copied. -ifeq ($(OMK_VERBOSE),1) +ifneq ($(OMK_VERBOSE),0) CPHEADER_FLAGS += -v LNHEADER_FLAGS += -v endif @@ -10,7 +10,7 @@ define cp_cmd endef else define cp_cmd -( echo " LN $(1:$(OUTPUT_DIR)/%=%) -> $(2:$(OUTPUT_DIR)/%=%)"; [ -f $(1) ] && ln -sf $(LNHEADER_FLAGS) $(1) $(2) ) +( echo " LN $(1:$(OUTPUT_DIR)/%=%) -> $(2:$(OUTPUT_DIR)/%=%)"; [ -f $(1) ] || exit 1; ln -sf $(LNHEADER_FLAGS) $(SOURCES_DIR)/$(1) $(2) ) endef endif @@ -19,24 +19,23 @@ endif # Syntax: $(call include-pass-template,,) define include-pass-template -include-pass-local: include-pass-local-$(2) -include-pass-local-$(2): $$($(2)_GEN_HEADERS) $$(foreach f,$$(renamed_$(2)_GEN_HEADERS),$$(shell echo '$$(f)' | sed -e 's/^\(.*\)->.*$$$$/\1/')) - @$$(foreach f, $$($(2)_HEADERS), cmp --quiet $$(SOURCES_DIR)/$$(f) $(1)/$$(notdir $$(f)) \ - || $$(call cp_cmd,$$(SOURCES_DIR)/$$(f),$(1)/$$(notdir $$(f))) || exit 1 ; ) - @$$(foreach f, $$($(2)_GEN_HEADERS), cmp --quiet $$(f) $(1)/$$(notdir $$(f)) \ - || $$(call cp_cmd,$$(LOCAL_BUILD_DIR)/$$(f),$(1)/$$(notdir $$(f))) || exit 1 ; ) # FIXME: Use correct build dir, then document it - @$$(foreach f, $$(nobase_$(2)_HEADERS), cmp --quiet $$(SOURCES_DIR)/$$(f) $(1)/$$(f) \ - || ( mkdir -p $(1)/$$(dir $$(f)) && $$(call cp_cmd,$$(SOURCES_DIR)/$$(f),$(1)/$$(f)) ) || exit 1 ; ) - @$$(foreach f, $$(renamed_$(2)_HEADERS), \ - srcfname=`echo '$$(f)' | sed -e 's/^\(.*\)->.*$$$$/\1/'` ; destfname=`echo '$$(f)' | sed -e 's/^.*->\(.*\)$$$$/\1/'` ; \ - cmp --quiet $$(SOURCES_DIR)/$$$${srcfname} $(1)/$$$${destfname} \ - || ( mkdir -p `dirname $(1)/$$$${destfname}` && $$(call cp_cmd,$$(SOURCES_DIR)/$$$${srcfname},$(1)/$$$${destfname}) ) || exit 1 ; ) - @$$(foreach f, $$(renamed_$(2)_GEN_HEADERS), \ +prepare-pass:: + $(Q3)$$(foreach f, $$($(2)_HEADERS), cmp --quiet $$(f) $(1)/$$(notdir $$(f)) \ + || $$(call cp_cmd,$$(f),$(1)/$$(notdir $$(f))) || exit 1 ; ) + $(Q3)$$(foreach f, $$($(2)_GEN_HEADERS), cmp --quiet TODO_BUILD_DIR/$$(f) $(1)/$$(notdir $$(f)) \ + || $$(call cp_cmd,TODO_BUILD_DIR/$$(f),$(1)/$$(notdir $$(f))) || exit 1 ; ) # FIXME: Use correct build dir, then document it + $(Q3)$$(foreach f, $$(nobase_$(2)_HEADERS), cmp --quiet $$(f) $(1)/$$(f) \ + || ( mkdir -p $(1)/$$(dir $$(f)) && $$(call cp_cmd,$$(f),$(1)/$$(f)) ) || exit 1 ; ) + $(Q3)$$(foreach f, $$(renamed_$(2)_HEADERS), \ srcfname=`echo '$$(f)' | sed -e 's/^\(.*\)->.*$$$$/\1/'` ; destfname=`echo '$$(f)' | sed -e 's/^.*->\(.*\)$$$$/\1/'` ; \ cmp --quiet $$$${srcfname} $(1)/$$$${destfname} \ - || ( mkdir -p `dirname $(1)/$$$${destfname}` && $$(call cp_cmd,$$(LOCAL_BUILD_DIR)/$$$${srcfname},$(1)/$$$${destfname}) ) || exit 1 ; ) + || ( mkdir -p `dirname $(1)/$$$${destfname}` && $$(call cp_cmd,$$$${srcfname},$(1)/$$$${destfname}) ) || exit 1 ; ) + $(Q3)$$(foreach f, $$(renamed_$(2)_GEN_HEADERS), \ + srcfname=`echo '$$(f)' | sed -e 's/^\(.*\)->.*$$$$/\1/'` ; destfname=`echo '$$(f)' | sed -e 's/^.*->\(.*\)$$$$/\1/'` ; \ + cmp --quiet TODO_BUILD_DIR/$$$${srcfname} $(1)/$$$${destfname} \ + || ( mkdir -p `dirname $(1)/$$$${destfname}` && $$(call cp_cmd,TODO_BUILD_DIR/$$$${srcfname},$(1)/$$$${destfname}) ) || exit 1 ; ) endef # Local Variables: -# mode:makefile +# mode:makefile-gmake # End: -- 2.39.2