From 42dda1ad33cb9fde634f2bd0ff19a64718eed195 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Tue, 18 Nov 2008 22:48:08 +0100 Subject: [PATCH] Started work on rewriting bin_PROGRAMS handling to kbuild-like .cmd files --- snippets/linux | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/snippets/linux b/snippets/linux index 696674e..09f4ad1 100644 --- a/snippets/linux +++ b/snippets/linux @@ -145,8 +145,7 @@ OMK_WORK_DIR = $(USER_OBJS_DIR) # Some support to serialize some targets for parallel make ifneq ($(OMK_SERIALIZE_INCLUDED),y) include-pass: check-dir -library-pass: include-pass -link: library-pass +link: include-pass kernel-lib-pass: include-pass kernel-mod-pass: kernel-lib-pass kernel-modpost-pass: kernel-mod-pass @@ -278,7 +277,8 @@ $(1)_OBJS := $$(sort $$($(1)_OBJS:%/=%)) USER_OBJS += $$($(1)_OBJS) USER_SOURCES += $$($(1)_SOURCES) -$(OMK_WORK_DIR)/$(2)-$(1)$(EXE_SUFFIX).omkvar: $$($(1)_OBJS) FORCE +include-pass-local: $(OMK_WORK_DIR)/$(2)-$(1)$(EXE_SUFFIX).cmd +$(OMK_WORK_DIR)/$(2)-$(1)$(EXE_SUFFIX).cmd: $$($(1)_OBJS) FORCE $(Q)echo '$(1)_objs += $$$$(addprefix $(USER_OBJS_DIR)/,$$($(1)_OBJS))' > $$@.tmp; \ echo '$(1)_libs += $$($(1)_LIBS) $$(lib_LOADLIBES)' >> $$@.tmp; \ echo '$(1)_linker += $$(if $$(filter %.cc,$$($(1)_SOURCES:%.cxx=%.cc)),$$(CXX),$$(CC))' >> $$@.tmp; \ @@ -341,12 +341,19 @@ $(OMK_WORK_DIR)/lib$(1).$(SOLIB_EXT).omkvar: $$($(1)_OBJSLO) FORCE if cmp -s $$@.tmp $$@; then rm $$@.tmp; else mv $$@.tmp $$@; fi endef -library-pass-local: $(addprefix $(USER_INCLUDE_DIR)/,$(cmetric_include_HEADERS)) \ - $(lib_LIBRARIES:%=$(USER_LIB_DIR)/lib%.a) \ - $(shared_LIBRARIES:%=$(OMK_WORK_DIR)/lib%.$(SOLIB_EXT).omkvar) \ - $(bin_PROGRAMS:%=$(OMK_WORK_DIR)/bin-%$(EXE_SUFFIX).omkvar) \ - $(utils_PROGRAMS:%=$(OMK_WORK_DIR)/utils-%$(EXE_SUFFIX).omkvar) \ - $(test_PROGRAMS:%=$(OMK_WORK_DIR)/test-%$(EXE_SUFFIX).omkvar) + +$(OMK_WORK_DIR)/targets.omk: FORCE + @rm $$@.tmp; \ + echo '_omk_libs += $(lib_LIBRARIES)' >> $$@.tmp; \ + echo '_omk_shared_libs += $(shared_LIBRARIES)' >> $$@.tmp; \ + echo '_omk_bin += $(bin_PROGRAMS)' >> $$@.tmp; \ + echo '_omk_utils += $(utils_PROGRAMS)' >> $$@.tmp; \ + echo '_omk_test += $(test_PROGRAMS)' >> $$@.tmp; \ + if cmp -s $$@.tmp $$@; then rm $$@.tmp; else mv $$@.tmp $$@; fi + + +include-pass-local: $(addprefix $(USER_INCLUDE_DIR)/,$(cmetric_include_HEADERS)) \ + $(OMK_WORK_DIR)/targets.omk # Special rules for CMETRIC generated headers @@ -394,7 +401,8 @@ endef # Syntax: $(call program_link_template,,) define program_link_template -$(2)/$(1)$(EXE_SUFFIX): $$($(1)_objs) dir=$(LINK_BUILD_DIR)/$$(notdir $(2)) +$(2)/$(1)$(EXE_SUFFIX): dir=$(LINK_BUILD_DIR)/$$(notdir $(2)) +$(2)/$(1)$(EXE_SUFFIX): $$($(1)_objs) @$(QUIET_CMD_ECHO) " LINK $$@" $(Q) $$($(1)_linker) \ $$($(1)_objs) $$($(1)_libs:%=-l%) $$(LOADLIBES) $$(LDFLAGS) -Wl,-Map,$$(dir)/$(1).exe.map -o $$@ @@ -724,8 +732,6 @@ kernel-modpost-pass: -f $(SOURCES_DIR)/Makefile KERN_RULE_TEMPLATES=y KERN_MODPOST_PASS=y $(@:%=%-local) ; \ fi -$(eval $(call omk_pass_template, library-pass,$(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,$(lib_LIBRARIES)$(shared_LIBRARIES)$(bin_PROGRAMS)$(utils_PROGRAMS)$(test_PROGRAMS))) - $(eval $(call omk_pass_template,clean,$(USER_OBJS_DIR),,always)) $(eval $(call omk_pass_template,install,$(USER_OBJS_DIR),,always)) $(eval $(call omk_pass_template,include-pass,$(USER_OBJS_DIR),USER_RULE_TEMPLATES=y,always)) @@ -838,7 +844,7 @@ include-pass-submakes: extra-rules-subdirs # might be needed there. include-pass-this-dir $(foreach subdir,$(SUBDIRS),include-pass-$(subdir)-subdir): extra-rules-subdirs -default: include-pass library-pass link +default: include-pass link ifndef OMIT_KERNEL_PASSES # Also make kernel passes if not disabled default: kernel-lib-pass kernel-pass -- 2.39.2