-.PHONY: build-pseudo-pass
-build-pseudo-pass: $(foreach target,$(default_build_targets),$(target))
-
-################
-# Prepare pass #
-################
-
-$(eval $(call omk_pass_template,prepare-pass,$(USER_OBJS_DIR),,always))
-
-###
-# Name of the prepared rule. This name is used as prefix of variable
-# names in .omk.inc and is based on the first target
-omk_inc_rule = $(firstword $(1:$(OUTPUT_DIR)/%=%))
-
-# The name of .omk.inc file is derived from $(omk_inc_rule) and
-# depends whether the target is under _build or elsewhere.
-omk_inc_file = $(if $(filter $(BUILD_DIR_NAME)%,$(omk_inc_rule)),\
- $(OMK_WORK_DIR)/$(notdir $(omk_inc_rule)).omk.inc,\
- $(OMK_WORK_DIR)/$(subst /,_,$(omk_inc_rule)).omk.inc)
-
-target_omk_file = $(OMK_WORK_DIR)/$(notdir $(1)).target.omk
-
-###
-# prepare_rule is used to generate .omk.inc files during prepare-pass.
-# All paths in this file should be relative to $(OUTPUT_DIR)
-# Usage: $(call prepare_rule,<targets>,<deps>,<msg>,<cmd>)
-define prepare_rule
-prepare-pass-local: $(omk_inc_file)
-
-$(omk_inc_file): FORCE
- $(Q)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 repl_out,$(4))' >> $$@.tmp; \
- if cmp -s $$@.tmp $$@; then rm $$@.tmp; else mv $$@.tmp $$@; fi
-endef
-
-###
-# prepare_rule_default - same as prepare rules but the target is put
-# as dependency to the default build rule, which causes it to be built
-# upon calling make
-define prepare_rule_default
-$(call prepare_rule,$(1),$(2),$(3),$(4))
-prepared_default_build_targets += $(call strip_out,$(1))
-endef
-
-prepare-pass-local: $(OMK_WORK_DIR)/omk.inc
-$(OMK_WORK_DIR)/omk.inc: FORCE
- $(Q)echo 'default_build_targets += $(prepared_default_build_targets)' > $@.tmp; \
- if cmp -s $@.tmp $@; then rm $@.tmp; else mv $@.tmp $@; fi
-
-
-############
-# Programs #
-############
-
-# Usage: $(call program_template,<executable-name>,<bin|utils|test>)
-define program_template
-$(1)_OBJS += $$(patsubst %.c,%.o,$$(filter %.c,$$($(1)_SOURCES)))
-$(1)_OBJS := $$(addprefix $(USER_OBJS_DIR),$$(sort $$($(1)_OBJS:%/=%)))
-
-USER_OBJS += $$($(1)_OBJS)
-USER_SOURCES += $$($(1)_SOURCES)
-
-
-
-program_cmd = $$(if $$(filter %.cc,$$($(1)_SOURCES)),$$(CXX),$$(CC)) \
- $$($(1)_OBJS) $$($(1)_LIBS:%=-l%) $$(LOADLIBES) $$(LDFLAGS) -Wl,-rpath-link,$(USER_LIB_DIR) \
- -Wl,-Map,$(USER_OBJS_DIR)/$(1).exe.map -o $$$$@
-
-$(call prepare_rule_default,\
- $(USER_BIN_DIR)/$(1)$(EXE_SUFFIX),\
- $$($(1)_OBJS) $$($(1)_LIBS),\
- "LINK ",\
- $$(program_cmd))
-endef
-
-c_o_cmd := set -e; cd $$(dir $$@); \
- if $$(c_o_COMPILE) $$(CC_DEPFLAGS) -o $$@ -c $$< ; \
- then mv -f "$$@.d.tmp" "$$@.d" ; \
- else rm -f "$$@.d.tmp" ; \
- fi
-