Browse Source

[build] Use $(xxx_DEPS) for additional dependency information

Some objects (embedded.o, rootcert.o, and clientcert.o) define
additional dependencies on external files, using syntax such as:

    $(BIN)/clientcert.o : $(CERT_LIST)

This dependency can be missed when using debug builds.  For example,
if DEBUG=clientcert is used, then the relevant object is
$(BIN)/clientcert.dbg1.o rather than $(BIN)/clientcert.o.

Fix by adding dependencies to $(clientcert_DEPS) instead:

    clientcert_DEPS += $(CERT_LIST)

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 12 years ago
parent
commit
0e59417cec
1 changed files with 95 additions and 95 deletions
  1. 95
    95
      src/Makefile.housekeeping

+ 95
- 95
src/Makefile.housekeeping View File

517
 
517
 
518
 DEBUG_TARGETS	+= dbg%.o c s
518
 DEBUG_TARGETS	+= dbg%.o c s
519
 
519
 
520
-# We automatically generate rules for any file mentioned in AUTO_SRCS
521
-# using the following set of templates.  It would be cleaner to use
522
-# $(eval ...), but this function exists only in GNU make >= 3.80.
523
-
524
-# deps_template : generate dependency list for a given source file
525
-#
526
-# $(1) is the full path to the source file (e.g. "drivers/net/rtl8139.c")
527
-# $(2) is the source type (e.g. "c")
528
-# $(3) is the source base name (e.g. "rtl8139")
529
-#
530
-define deps_template
531
-	@$(ECHO) "  [DEPS] $(1)"
532
-	@$(MKDIR) -p $(BIN)/deps/$(dir $(1))
533
-	@$(CPP) $(CFLAGS) $(CFLAGS_$(2)) $(CFLAGS_$(3)) -DOBJECT=$(3) \
534
-		-Wno-error -M $(1) -MG -MP | \
535
-		sed 's/\.o\s*:/_DEPS =/' > $(BIN)/deps/$(1).d
536
-endef
537
-
538
-# rules_template : generate rules for a given source file
539
-#
540
-# $(1) is the full path to the source file (e.g. "drivers/net/rtl8139.c")
541
-# $(2) is the source type (e.g. "c")
542
-# $(3) is the source base name (e.g. "rtl8139")
543
-#
544
-define rules_template
545
-	@$(ECHO) "  [RULES] $(1)"
546
-	@$(MKDIR) -p $(BIN)/rules/$(dir $(1))
547
-	@$(ECHO_E) '\n$$(BIN)/$(3).o :' \
548
-		 '$(1) $$(MAKEDEPS) $$(POST_O_DEPS) $$($(3)_DEPS)' \
549
-		 '\n\t$$(QM)$(ECHO) "  [BUILD] $$@"' \
550
-		 '\n\t$$(RULE_$(2))\n' \
551
-		 '\nBOBJS += $$(BIN)/$(3).o\n' \
552
-		 $(foreach TGT,$(DEBUG_TARGETS), \
553
-		    $(if $(RULE_$(2)_to_$(TGT)), \
554
-		    '\n$$(BIN)/$(3).$(TGT) :' \
555
-		    '$(1) $$(MAKEDEPS) $$(POST_O_DEPS) $$($(3)_DEPS)' \
556
-		    '\n\t$$(QM)$(ECHO) "  [BUILD] $$@"' \
557
-		    '\n\t$$(RULE_$(2)_to_$(TGT))\n' \
558
-		    '\n$(TGT)_OBJS += $$(BIN)/$(3).$(TGT)\n' ) ) \
559
-		 '\n$(BIN)/deps/$(1).d : $$($(3)_DEPS)\n' \
560
-		 '\nTAGS : $$($(3)_DEPS)\n' > $(BIN)/rules/$(1).r
561
-	@$(if $(findstring drivers/,$(1)),\
562
-	   $(PERL) $(PARSEROM) $(1) >> $(BIN)/rules/$(1).r)
563
-endef
564
-
565
-# Rule to generate the dependency list file
566
-#
567
-$(BIN)/deps/%.d : % $(MAKEDEPS)
568
-	$(call deps_template,$<,$(subst .,,$(suffix $<)),$(basename $(notdir $<)))
569
-
570
-# Calculate and include the list of dependency list files
571
-#
572
-AUTO_DEPS	= $(patsubst %,$(BIN)/deps/%.d,$(AUTO_SRCS))
573
-ifdef NEED_DEPS
574
-ifneq ($(AUTO_DEPS),)
575
--include $(AUTO_DEPS)
576
-endif
577
-endif
578
-autodeps :
579
-	@$(ECHO) $(AUTO_DEPS)
580
-VERYCLEANUP	+= $(BIN)/deps
581
-
582
-# Rule to generate the rules file
583
-#
584
-$(BIN)/rules/%.r : % $(MAKEDEPS) $(PARSEROM)
585
-	$(call rules_template,$<,$(subst .,,$(suffix $<)),$(basename $(notdir $<)))
586
-
587
-# Calculate and include the list of rules files
588
-#
589
-AUTO_RULES	= $(patsubst %,$(BIN)/rules/%.r,$(AUTO_SRCS))
590
-ifdef NEED_DEPS
591
-ifneq ($(AUTO_RULES),)
592
--include $(AUTO_RULES)
593
-endif
594
-endif
595
-autorules :
596
-	@$(ECHO) $(AUTO_RULES)
597
-VERYCLEANUP	+= $(BIN)/rules
598
-
599
-# The following variables are created by the rules files
600
-#
601
-bobjs :
602
-	@$(ECHO) $(BOBJS)
603
-drivers :
604
-	@$(ECHO) $(DRIVERS)
605
-.PHONY : drivers
606
-roms :
607
-	@$(ECHO) $(ROMS)
608
-
609
 # List of embedded images included in the last build of embedded.o.
520
 # List of embedded images included in the last build of embedded.o.
610
 # This is needed in order to correctly rebuild embedded.o whenever the
521
 # This is needed in order to correctly rebuild embedded.o whenever the
611
 # list of objects changes.
522
 # list of objects changes.
630
 		     EMBED ( $(i), \"$(word $(i), $(EMBEDDED_FILES))\",\
541
 		     EMBED ( $(i), \"$(word $(i), $(EMBEDDED_FILES))\",\
631
 			     \"$(notdir $(word $(i),$(EMBEDDED_FILES)))\" ))
542
 			     \"$(notdir $(word $(i),$(EMBEDDED_FILES)))\" ))
632
 
543
 
633
-$(BIN)/embedded.o : $(EMBEDDED_FILES) $(EMBEDDED_LIST)
544
+embedded_DEPS += $(EMBEDDED_FILES) $(EMBEDDED_LIST)
634
 
545
 
635
 CFLAGS_embedded = -DEMBED_ALL="$(EMBED_ALL)"
546
 CFLAGS_embedded = -DEMBED_ALL="$(EMBED_ALL)"
636
 
547
 
658
 			 $(shell $(OPENSSL) x509 -in $(CERT) -noout -sha256 \
569
 			 $(shell $(OPENSSL) x509 -in $(CERT) -noout -sha256 \
659
 				 -fingerprint))))$(COMMA))
570
 				 -fingerprint))))$(COMMA))
660
 
571
 
661
-$(BIN)/rootcert.o : $(TRUSTED_FILES) $(TRUSTED_LIST)
572
+rootcert_DEPS += $(TRUSTED_FILES) $(TRUSTED_LIST)
662
 
573
 
663
 CFLAGS_rootcert = $(if $(TRUSTED_FPS),-DTRUSTED="$(TRUSTED_FPS)")
574
 CFLAGS_rootcert = $(if $(TRUSTED_FPS),-DTRUSTED="$(TRUSTED_FPS)")
664
 
575
 
686
 $(CERT_INC) : $(CERT) $(CERT_LIST)
597
 $(CERT_INC) : $(CERT) $(CERT_LIST)
687
 	$(Q)$(OPENSSL) x509 -in $< -outform DER -out $@
598
 	$(Q)$(OPENSSL) x509 -in $< -outform DER -out $@
688
 
599
 
689
-$(BIN)/clientcert.o : $(CERT_INC)
600
+clientcert_DEPS += $(CERT_INC)
690
 endif
601
 endif
691
 
602
 
692
 CLEANUP += $(CERT_INC)
603
 CLEANUP += $(CERT_INC)
693
 
604
 
694
-$(BIN)/clientcert.o : $(CERT_LIST)
605
+clientcert_DEPS += $(CERT_LIST)
695
 
606
 
696
 CFLAGS_clientcert += $(if $(CERT),-DCERTIFICATE="\"$(CERT_INC)\"")
607
 CFLAGS_clientcert += $(if $(CERT),-DCERTIFICATE="\"$(CERT_INC)\"")
697
 
608
 
719
 $(KEY_INC) : $(KEY) $(KEY_LIST)
630
 $(KEY_INC) : $(KEY) $(KEY_LIST)
720
 	$(Q)$(OPENSSL) rsa -in $< -outform DER -out $@
631
 	$(Q)$(OPENSSL) rsa -in $< -outform DER -out $@
721
 
632
 
722
-$(BIN)/clientcert.o : $(KEY_INC)
633
+clientcert_DEPS += $(KEY_INC)
723
 endif
634
 endif
724
 
635
 
725
 CLEANUP += $(KEY_INC)
636
 CLEANUP += $(KEY_INC)
726
 
637
 
727
-$(BIN)/clientcert.o : $(KEY_LIST)
638
+clientcert_DEPS += $(KEY_LIST)
728
 
639
 
729
 CFLAGS_clientcert += $(if $(KEY),-DPRIVATE_KEY="\"$(KEY_INC)\"")
640
 CFLAGS_clientcert += $(if $(KEY),-DPRIVATE_KEY="\"$(KEY_INC)\"")
730
 
641
 
736
 
647
 
737
 $(BIN)/clientcert.o : override CC := env CCACHE_DISABLE=1 $(CC)
648
 $(BIN)/clientcert.o : override CC := env CCACHE_DISABLE=1 $(CC)
738
 
649
 
650
+# We automatically generate rules for any file mentioned in AUTO_SRCS
651
+# using the following set of templates.  It would be cleaner to use
652
+# $(eval ...), but this function exists only in GNU make >= 3.80.
653
+
654
+# deps_template : generate dependency list for a given source file
655
+#
656
+# $(1) is the full path to the source file (e.g. "drivers/net/rtl8139.c")
657
+# $(2) is the source type (e.g. "c")
658
+# $(3) is the source base name (e.g. "rtl8139")
659
+#
660
+define deps_template
661
+	@$(ECHO) "  [DEPS] $(1)"
662
+	@$(MKDIR) -p $(BIN)/deps/$(dir $(1))
663
+	@$(CPP) $(CFLAGS) $(CFLAGS_$(2)) $(CFLAGS_$(3)) -DOBJECT=$(3) \
664
+		-Wno-error -M $(1) -MG -MP | \
665
+		sed 's/\.o\s*:/_DEPS +=/' > $(BIN)/deps/$(1).d
666
+endef
667
+
668
+# rules_template : generate rules for a given source file
669
+#
670
+# $(1) is the full path to the source file (e.g. "drivers/net/rtl8139.c")
671
+# $(2) is the source type (e.g. "c")
672
+# $(3) is the source base name (e.g. "rtl8139")
673
+#
674
+define rules_template
675
+	@$(ECHO) "  [RULES] $(1)"
676
+	@$(MKDIR) -p $(BIN)/rules/$(dir $(1))
677
+	@$(ECHO_E) '\n$$(BIN)/$(3).o :' \
678
+		 '$(1) $$(MAKEDEPS) $$(POST_O_DEPS) $$($(3)_DEPS)' \
679
+		 '\n\t$$(QM)$(ECHO) "  [BUILD] $$@"' \
680
+		 '\n\t$$(RULE_$(2))\n' \
681
+		 '\nBOBJS += $$(BIN)/$(3).o\n' \
682
+		 $(foreach TGT,$(DEBUG_TARGETS), \
683
+		    $(if $(RULE_$(2)_to_$(TGT)), \
684
+		    '\n$$(BIN)/$(3).$(TGT) :' \
685
+		    '$(1) $$(MAKEDEPS) $$(POST_O_DEPS) $$($(3)_DEPS)' \
686
+		    '\n\t$$(QM)$(ECHO) "  [BUILD] $$@"' \
687
+		    '\n\t$$(RULE_$(2)_to_$(TGT))\n' \
688
+		    '\n$(TGT)_OBJS += $$(BIN)/$(3).$(TGT)\n' ) ) \
689
+		 '\n$(BIN)/deps/$(1).d : $$($(3)_DEPS)\n' \
690
+		 '\nTAGS : $$($(3)_DEPS)\n' > $(BIN)/rules/$(1).r
691
+	@$(if $(findstring drivers/,$(1)),\
692
+	   $(PERL) $(PARSEROM) $(1) >> $(BIN)/rules/$(1).r)
693
+endef
694
+
695
+# Rule to generate the dependency list file
696
+#
697
+$(BIN)/deps/%.d : % $(MAKEDEPS)
698
+	$(call deps_template,$<,$(subst .,,$(suffix $<)),$(basename $(notdir $<)))
699
+
700
+# Calculate and include the list of dependency list files
701
+#
702
+AUTO_DEPS	= $(patsubst %,$(BIN)/deps/%.d,$(AUTO_SRCS))
703
+ifdef NEED_DEPS
704
+ifneq ($(AUTO_DEPS),)
705
+-include $(AUTO_DEPS)
706
+endif
707
+endif
708
+autodeps :
709
+	@$(ECHO) $(AUTO_DEPS)
710
+VERYCLEANUP	+= $(BIN)/deps
711
+
712
+# Rule to generate the rules file
713
+#
714
+$(BIN)/rules/%.r : % $(MAKEDEPS) $(PARSEROM)
715
+	$(call rules_template,$<,$(subst .,,$(suffix $<)),$(basename $(notdir $<)))
716
+
717
+# Calculate and include the list of rules files
718
+#
719
+AUTO_RULES	= $(patsubst %,$(BIN)/rules/%.r,$(AUTO_SRCS))
720
+ifdef NEED_DEPS
721
+ifneq ($(AUTO_RULES),)
722
+-include $(AUTO_RULES)
723
+endif
724
+endif
725
+autorules :
726
+	@$(ECHO) $(AUTO_RULES)
727
+VERYCLEANUP	+= $(BIN)/rules
728
+
729
+# The following variables are created by the rules files
730
+#
731
+bobjs :
732
+	@$(ECHO) $(BOBJS)
733
+drivers :
734
+	@$(ECHO) $(DRIVERS)
735
+.PHONY : drivers
736
+roms :
737
+	@$(ECHO) $(ROMS)
738
+
739
 # Generate error usage information
739
 # Generate error usage information
740
 #
740
 #
741
 $(BIN)/%.einfo : $(BIN)/%.o
741
 $(BIN)/%.einfo : $(BIN)/%.o

Loading…
Cancel
Save