]> rtime.felk.cvut.cz Git - omk.git/commitdiff
Started work on rewriting bin_PROGRAMS handling to kbuild-like .cmd files
authorMichal Sojka <sojkam1@fel.cvut.cz>
Tue, 18 Nov 2008 21:48:08 +0000 (22:48 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Tue, 18 Nov 2008 21:48:08 +0000 (22:48 +0100)
snippets/linux

index 696674e002556bacb1502eadc0644d56d3310390..09f4ad18506d8ab5cdea4049a061b67c18fcf0d4 100644 (file)
@@ -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,<executable-name>,<dest-dir>)
 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