manual merge
[people/oremanj/gpxe.git] / src / Makefile.housekeeping
index 8aebca8..72d63b5 100644 (file)
@@ -419,23 +419,6 @@ define src_template
        @$(MKDIR) -p $(dir $(2))
        @$(RM) $(2)
        @$(TOUCH) $(2)
-       $(foreach OBJ,$(if $(OBJS_$(4)),$(OBJS_$(4)),$(4)), \
-               $(call obj_template,$(1),$(2),$(3),$(OBJ)))
-       @$(PARSEROM) $(1) >> $(2)
-
-endef
-
-# obj_template : generate Makefile rules for a given resultant object
-# of a particular source file.  (We can have multiple objects per
-# source file via the OBJS_xxx list.)
-#
-# $(1) is the full path to the source file (e.g. "drivers/net/rtl8139.c")
-# $(2) is the full path to the .d file (e.g. "bin/deps/drivers/net/rtl8139.d")
-# $(3) is the source type (e.g. "c")
-# $(4) is the object name (e.g. "rtl8139")
-#
-define obj_template
-
        @$(CPP) $(CFLAGS) $(CFLAGS_$(3)) $(CFLAGS_$(4)) -DOBJECT=$(4) \
                -Wno-error -MM $(1) -MG -MP | \
                sed 's/\.o\s*:/_DEPS =/' >> $(2)
@@ -454,6 +437,7 @@ define obj_template
                 '\n$(2) : $$($(4)_DEPS)\n' \
                 '\nTAGS : $$($(4)_DEPS)\n' \
                >> $(2)
+       @$(PARSEROM) $(1) >> $(2)
 
 endef
 
@@ -664,6 +648,37 @@ $(BIN)/%.tmp : $(BLIB) $(MAKEDEPS) $(LDSCRIPT)
 $(BIN)/%.map : $(BIN)/%.tmp
        @less $(BIN)/$*.tmp.map
 
+# Get objects list for the specified target
+#
+define objs_list
+       $(sort $(foreach OBJ_SYMBOL,\
+                $(filter obj_%,$(shell $(NM) $(1) | cut -d" " -f3)),\
+                $(patsubst obj_%,%,$(OBJ_SYMBOL))))
+endef
+$(BIN)/%.objs : $(BIN)/%.tmp
+       $(Q)$(ECHO) $(call objs_list,$<)
+$(BIN)/%.sizes : $(BIN)/%.tmp
+       $(Q)$(SIZE) -t $(foreach OBJ,$(call objs_list,$<),$(BIN)/$(OBJ).o) | \
+               sort -g
+
+# Get dependency list for the specified target
+#
+define deps_list
+       $(sort $(foreach OBJ,$(call objs_list,$(1)),$($(OBJ)_DEPS)))
+endef
+$(BIN)/%.deps : $(BIN)/%.tmp
+       $(Q)$(ECHO) $(call deps_list,$<)
+
+# Get unneeded source files for the specified target
+#
+define nodeps_list
+       $(sort $(filter-out $(call deps_list,$<),\
+                $(foreach BOBJ,$(BOBJS),\
+                  $($(basename $(notdir $(BOBJ)))_DEPS))))
+endef
+$(BIN)/%.nodeps : $(BIN)/%.tmp
+       $(Q)$(ECHO) $(call nodeps_list,$<)
+
 # Extract compression information from intermediate object file
 #
 $(BIN)/%.zinfo : $(BIN)/%.tmp
@@ -724,6 +739,7 @@ define media_template
        @$(ECHO_E) '$$(BIN)/%.$(1) : $$(BIN)/%.$(1).zbin' \
                  '\n\t$$(QM)$(ECHO) "  [FINISH] $$@"' \
                  '\n\t$$(Q)$$(CP) $$< $$@' \
+                 '\n\t$$(Q)$$(PAD_$(1))' \
                  '\n\t$$(Q)$$(FINALISE_$(1))' \
                > $(2)
 
@@ -836,6 +852,16 @@ CLEANUP += $(ICCFIX)
 $(FIREBUG) : util/firebug.c util/fwtools.c $(MAKEDEPS)
        $(QM)$(ECHO) "  [HOSTCC] $@"
        $(Q)$(HOST_CC) -idirafter include -O2 -o $@ $< util/fwtools.c -lraw1394
+CLEANUP += $(FIREBUG)
+
+###############################################################################
+#
+# The FireWire image server
+#
+$(FIRESERVE) : util/fireserve.c util/fwtools.c $(MAKEDEPS)
+       $(QM)$(ECHO) "  [HOSTCC] $@"
+       $(Q)$(HOST_CC) -idirafter include -O2 -o $@ $< util/fwtools.c -lraw1394
+CLEANUP += $(FIRESERVE)
 
 ###############################################################################
 #