target_omk_file = $(OMK_WORK_DIR)/$(notdir $(1)).target.omk
+# >\< substitution to preserve \ in echo argument
# >'< substitution is for echo to work,
# >$< substitution to preserve $ when reloading .omk.inc file
-subst-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(1))))
+subst-cmd = $(subst $$,$$$$,$(call escsq,$(subst \,\\,$(1))))
###
# prepare_rule is used to generate .omk.inc files during prepare-pass.
define prepare_rule
prepare-pass-local: $(omk_inc_file)
-$(omk_inc_file): FORCE
-#TODO remove the next line
- @echo " PREP "$$(call strip_out,$$@); \
+.PHONY: $(omk_inc_file)
+$(omk_inc_file):
+#TODO remove echos from the next commands
+ @set -e;\
echo 'prepared_rules += $(omk_inc_rule)' > $$@.tmp; \
echo '$(omk_inc_rule)_targets = $$(call strip_out,$(1))' >> $$@.tmp; \
echo '$(omk_inc_rule)_deps += $$(call strip_out,$(2))' >> $$@.tmp; \
echo '$(omk_inc_rule)_msg = $(3)' >> $$@.tmp; \
echo '$(omk_inc_rule)_cmd = $(call subst-cmd,$(4))' >> $$@.tmp; \
- if cmp -s $$@.tmp $$@; then rm $$@.tmp; else mv $$@.tmp $$@; fi
+ if cmp -s $$@.tmp $$@; then rm $$@.tmp; echo " CHK "$$(call strip_out,$$@); else mv $$@.tmp $$@; echo " UPD "$$(call strip_out,$$@); fi
endef
###
prepare-pass-local: $(OMK_WORK_DIR)/__goals.omk.inc
$(OMK_WORK_DIR)/__goals.omk.inc: FORCE
- $(Q)echo 'omk_goals += $(prepared_goals)' > $@.tmp; \
+ @echo 'omk_goals += $(prepared_goals)' > $@.tmp; \
if cmp -s $@.tmp $@; then rm $@.tmp; else mv $@.tmp $@; fi