]> git.saurik.com Git - apple/xnu.git/blobdiff - makedefs/MakeInc.rule
xnu-7195.101.1.tar.gz
[apple/xnu.git] / makedefs / MakeInc.rule
index 13371fd5c07db1a9eaabde4310d1735237e4ba1f..d95e8186c19832be68034b8f34a3b2db62de9530 100644 (file)
@@ -1,6 +1,6 @@
 # -*- mode: makefile;-*-
 #
-# Copyright (C) 1999-2012 Apple Inc. All rights reserved.
+# Copyright (C) 1999-2020 Apple Inc. All rights reserved.
 #
 # MakeInc.rule defines the targets and rules for
 # leaf directories once MakeInc.dir has recursed
@@ -8,6 +8,7 @@
 # to allow the Makefile in the source directory
 # to augment the actions that will be performed.
 #
+include $(SRCROOT)/makedefs/MakeInc.color
 
 #
 # Generic Install rules
@@ -45,6 +46,8 @@ ifndef INSTALL_KF_MD_GEN_LIST
     INSTALL_KF_MD_GEN_LIST = $(EXPORT_MD_GEN_LIST)
 endif
 
+$(eval $(call _setup_build_log_colors))
+
 .PHONY: ALWAYS
 
 ALWAYS:
@@ -71,10 +74,10 @@ $(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR
        $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) $(4)
 
 $(1): $(dir $(firstword $(1)))% : $(if $(2),%,$$(SOURCE)/%) | $(3)_MKDIR
-       @echo INSTALLHDR $$*
+       @$$(LOG_INSTALLHDR) "$$*"
        $$(_v)$$(UNIFDEF) $(4) $$< > ./$(3)/$$*.unifdef.$$$$$$$$;       \
        if [ $$$$? -eq 2 ]; then                                                \
-               echo Parse failure for $$<;                             \
+               $(ERR) Parse failure for $$<;                           \
                exit 1;                                                 \
        fi;                                                             \
        $$(DECOMMENT) ./$(3)/$$*.unifdef.$$$$$$$$ r >                   \
@@ -85,6 +88,75 @@ $(1): $(dir $(firstword $(1)))% : $(if $(2),%,$$(SOURCE)/%) | $(3)_MKDIR
        $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$ ./$(3)/$$*.strip.$$$$$$$$
 endef
 
+# $(1) is the list of install paths
+# $(2) is the source path pattern (using % to match with $(5)) or source file
+# $(3) is the local temp directory for processing
+# $(4) is the unifdef flags
+# $(5) is the destination directory (when pattern matching) or empty
+#
+# $$$$$$$$ is a double-escaped "$$" to represent the current pid
+# of the shell process for creating uniquely named temporary files
+
+define INSTALLPYTHON_RULE_template
+
+.PHONY: $(3)_MKDIR
+
+$(3)_MKDIR:
+       $$(_v)$$(MKDIR) ./$(3)
+
+# Rebuild if unifdef flags change
+$(1): $(3)/.UNIFDEF_FLAGS
+$(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR
+       $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) -t $(4)
+
+$(1): $(5)% : $(2) | $(3)_MKDIR
+       @$$(LOG_INSTALLPY) "$$*"
+       $$(_v)$$(MKDIR) $$(dir $$@) $$(dir ./$(3)/$$*)
+       $$(_v)$$(UNIFDEF) -t $(4) $$< > ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*); \
+       if [ $$$$? -eq 2 ]; then                                                \
+               $(ERR) Parse failure for $$<;                           \
+               exit 1;                                                 \
+       fi;                                                             \
+       $$(INSTALL) $$(DATA_INSTALL_FLAGS) \
+               ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) $$@ || exit 1; \
+       $$(PYTHON) $$(LLDBMACROS_SOURCE)/core/syntax_checker.py \
+               ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) $$(_vstdout) || exit 1; \
+       $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*)
+       $$(_v)if [ -n "$(5)" ]; then $$(TOUCH) "$(5)"; fi
+endef
+
+#
+# Empty the install lists of non-host headers if building the host headers alias
+#
+
+ifeq ($(INSTALLHDRS_SKIP_HOST),YES)
+INSTALL_MI_LIST =
+INSTALL_MI_GEN_LIST =
+INSTALL_DRIVERKIT_MI_LIST =
+INSTALL_DRIVERKIT_MI_GEN_LIST =
+INSTALL_KF_MI_LIST =
+INSTALL_KF_MI_GEN_LIST =
+INSTALL_MI_LCL_LIST =
+INSTALL_MI_LCL_GEN_LIST =
+INSTALL_DRIVERKIT_MI_LCL_LIST =
+INSTALL_DRIVERKIT_MI_LCL_GEN_LIST =
+INSTALL_KF_MI_LCL_LIST =
+INSTALL_KF_MI_LCL_GEN_LIST =
+INSTALL_MD_LIST =
+INSTALL_MD_GEN_LIST =
+INSTALL_DRIVERKIT_MD_LIST =
+INSTALL_DRIVERKIT_MD_GEN_LIST =
+INSTALL_KF_MD_LIST =
+INSTALL_KF_MD_GEN_LIST =
+INSTALL_MD_LCL_LIST =
+INSTALL_MD_LCL_GEN_LIST =
+INSTALL_DRIVERKIT_MD_LCL_LIST =
+INSTALL_DRIVERKIT_MD_LCL_GEN_LIST =
+INSTALL_KF_MD_LCL_LIST =
+INSTALL_KF_MD_LCL_GEN_LIST =
+INSTALL_MODULEMAP_INCDIR_MI_LIST =
+endif
+
 #
 # Machine-independent (public) files
 #
@@ -95,22 +167,48 @@ INSTALL_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/,
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_FILES),,incmidir,$(SINCFRAME_UNIFDEF)))
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_GEN_FILES),1,incmigendir,$(SINCFRAME_UNIFDEF)))
 
+ifeq ($(DRIVERKIT),1)
+INSTALL_DRIVERKIT_MI_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LIST))
+INSTALL_DRIVERKIT_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_GEN_LIST))
+
+$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_FILES),,dkincmidir,$(DKINCFRAME_UNIFDEF)))
+$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_GEN_FILES),1,dkincmigendir,$(DKINCFRAME_UNIFDEF)))
+endif
+
 INSTALL_KF_MI_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LIST))
 INSTALL_KF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_GEN_LIST))
 
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_FILES),,kincmidir,$(KINCFRAME_UNIFDEF)))
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_GEN_FILES),1,kincmigendir,$(KINCFRAME_UNIFDEF)))
 
+# Skip INSTALL_MI_DIR to install directly to INCDIR.
+INSTALL_MODULEMAP_INCDIR_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/,$(INSTALL_MODULEMAP_INCDIR_MI_LIST))
+
+$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_INCDIR_MI_INC_FILES),,mmrootincmidir,-t $(DATA_UNIFDEF)))
+
 #
 # Machine-independent local (private) files
 #
 
+ifeq ($(LIBKERN_USE_USR_LOCAL_INCLUDE),)
 INSTALL_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_LIST) $(INSTALL_MI_LIST)))
 INSTALL_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_GEN_LIST) $(INSTALL_MI_GEN_LIST)))
+else
+INSTALL_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_LIST)))
+INSTALL_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_GEN_LIST)))
+endif
 
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_FILES),,pincmidir,$(SPINCFRAME_UNIFDEF)))
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_GEN_FILES),1,pincmigendir,$(SPINCFRAME_UNIFDEF)))
 
+ifeq ($(DRIVERKIT),1)
+INSTALL_DRIVERKIT_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_LIST))
+INSTALL_DRIVERKIT_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_GEN_LIST))
+
+$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_FILES),,dkpincmidir,$(DKPINCFRAME_UNIFDEF)))
+$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES),1,dkpincmigendir,$(DKPINCFRAME_UNIFDEF)))
+endif
+
 INSTALL_KF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_LIST))
 INSTALL_KF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_GEN_LIST))
 
@@ -127,6 +225,14 @@ INSTALL_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/,
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_FILES),,incdir,$(SINCFRAME_UNIFDEF)))
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_GEN_FILES),1,incgendir,$(SINCFRAME_UNIFDEF)))
 
+ifeq ($(DRIVERKIT),1)
+INSTALL_DRIVERKIT_MD_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LIST))
+INSTALL_DRIVERKIT_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_GEN_LIST))
+
+$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_FILES),,dkincdir,$(DKINCFRAME_UNIFDEF)))
+$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_GEN_FILES),1,dkincgendir,$(DKINCFRAME_UNIFDEF)))
+endif
+
 INSTALL_KF_MD_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LIST))
 INSTALL_KF_MD_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_GEN_LIST))
 
@@ -137,12 +243,25 @@ $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_GEN_FILES),1,kincgendir,
 # Machine-dependent local (private) files
 #
 
+ifeq ($(LIBKERN_USE_USR_LOCAL_INCLUDE),)
 INSTALL_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_LIST) $(INSTALL_MD_LIST)))
 INSTALL_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_GEN_LIST) $(INSTALL_MD_GEN_LIST)))
+else
+INSTALL_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_LIST)))
+INSTALL_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_GEN_LIST)))
+endif
 
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_FILES),,pincdir,$(SPINCFRAME_UNIFDEF)))
 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_GEN_FILES),1,pincgendir,$(SPINCFRAME_UNIFDEF)))
 
+ifeq ($(DRIVERKIT),1)
+INSTALL_DRIVERKIT_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_LIST))
+INSTALL_DRIVERKIT_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_GEN_LIST))
+
+$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_FILES),,dkpincdir,$(DKPINCFRAME_UNIFDEF)))
+$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES),1,dkpincgendir,$(DKPINCFRAME_UNIFDEF)))
+endif
+
 INSTALL_KF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_LIST))
 INSTALL_KF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_GEN_LIST))
 
@@ -152,14 +271,23 @@ $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_GEN_FILES),1,kpincge
 .PHONY: do_installhdrs_mi
 
 # Double-colon rule so that MakeInc.kernel can add custom behaviors
-do_installhdrs_mi:: $(INSTALL_MI_INC_FILES) $(INSTALL_MI_INC_GEN_FILES) $(INSTALL_KF_MI_FILES) $(INSTALL_KF_MI_GEN_FILES) \
-                   $(INSTALL_MI_LCL_FILES) $(INSTALL_MI_LCL_GEN_FILES) $(INSTALL_KF_MI_LCL_FILES) $(INSTALL_KF_MI_LCL_GEN_FILES)
+do_installhdrs_mi:: $(INSTALL_MI_INC_FILES) $(INSTALL_MI_INC_GEN_FILES) \
+                   $(INSTALL_DRIVERKIT_MI_INC_FILES) $(INSTALL_DRIVERKIT_MI_INC_GEN_FILES) \
+                   $(INSTALL_KF_MI_FILES) $(INSTALL_KF_MI_GEN_FILES) \
+                   $(INSTALL_MI_LCL_FILES) $(INSTALL_MI_LCL_GEN_FILES) \
+                   $(INSTALL_DRIVERKIT_MI_LCL_FILES) $(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES) \
+                   $(INSTALL_KF_MI_LCL_FILES) $(INSTALL_KF_MI_LCL_GEN_FILES) \
+                   $(INSTALL_MODULEMAP_INCDIR_MI_INC_FILES)
        @:
 
 .PHONY: do_installhdrs_md
 
-do_installhdrs_md: $(INSTALL_MD_INC_FILES) $(INSTALL_MD_INC_GEN_FILES) $(INSTALL_KF_MD_FILES) $(INSTALL_KF_MD_GEN_FILES) \
-                  $(INSTALL_MD_LCL_FILES) $(INSTALL_MD_LCL_GEN_FILES) $(INSTALL_KF_MD_LCL_FILES) $(INSTALL_KF_MD_LCL_GEN_FILES)
+do_installhdrs_md: $(INSTALL_MD_INC_FILES) $(INSTALL_MD_INC_GEN_FILES) \
+                  $(INSTALL_DRIVERKIT_MD_INC_FILES) $(INSTALL_DRIVERKIT_MD_INC_GEN_FILES) \
+                  $(INSTALL_KF_MD_FILES) $(INSTALL_KF_MD_GEN_FILES) \
+                  $(INSTALL_MD_LCL_FILES) $(INSTALL_MD_LCL_GEN_FILES) \
+                  $(INSTALL_DRIVERKIT_MD_LCL_FILES) $(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES) \
+                  $(INSTALL_KF_MD_LCL_FILES) $(INSTALL_KF_MD_LCL_GEN_FILES)
        @:
 
 #
@@ -174,10 +302,10 @@ EXP_MI_INC_DIR:
        $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)
 
 $(EXPORT_MI_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : % | EXP_MI_INC_DIR
-       $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@
+       $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@
 
 $(EXPORT_MI_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : $(SOURCE)/% | EXP_MI_INC_DIR
-       $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@
+       $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@
 
 EXPORT_MD_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_LIST))
 EXPORT_MD_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_GEN_LIST))
@@ -188,10 +316,10 @@ EXP_MD_INC_DIR:
        $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)
 
 $(EXPORT_MD_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : % | EXP_MD_INC_DIR
-       $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@
+       $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@
 
 $(EXPORT_MD_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : $(SOURCE)/% | EXP_MD_INC_DIR
-       $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@
+       $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@
 
 .PHONY: do_exporthdrs_mi
 
@@ -211,7 +339,7 @@ do_exporthdrs_md: $(EXPORT_MD_GEN_INC_FILES)  $(EXPORT_MD_INC_FILES)
 # Compilation rules to generate .o from .s
 #
 
-S_RULE_0=@echo AS $@
+S_RULE_0=@$(LOG_AS) "$@"
 S_RULE_1A=$(_v)${S_KCC} -c ${SFLAGS} -MD -MF $(@:o=d) -MP ${$@_SFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
 S_RULE_1B=$(<F)
 S_RULE_2=
@@ -219,25 +347,14 @@ S_RULE_2=
 #
 # Compilation rules to generate .o from .c for normal files
 #
-C_RULE_0=@echo CC $@
-C_RULE_1A=$(_v)${KCC} -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} 
+C_RULE_0=@$(LOG_CC) "$@"
+C_RULE_1A=$(_v)${KCC} -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
 C_RULE_1B=$(<F)
-ifeq ($(BUILD_MACHO_OBJ),0)
-C_RULE_2=
-else ifeq ($(DO_CTFCONVERT),1)
-C_RULE_2=$(_v)if [ -z "${$@_SKIP_CTFCONVERT}" ]; then ${CTFCONVERT} -l xnu -v -o $@.ctf $@ > /dev/null || true; fi
-else
 C_RULE_2=
-endif
-ifeq ($(DO_CTFMACHO), 1)
-C_CTFRULE_1A=$(_v)${KCC} -o $@.non_lto -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} $(CFLAGS_NOLTO_FLAG) 
-C_CTFRULE_1B=$(<F)
-C_CTFRULE_2=$(_v)if [ -z "${$@_SKIP_CTFCONVERT}" ]; then ${CTFCONVERT} -l xnu -v -o $@.non_lto.ctf $@.non_lto > /dev/null || true; fi
-else
-C_CTFRULE_1A=@true 
-C_CTFRULE_1B=
-C_CTFRULE_2=@true 
-endif
+
+C_RULE_3=
+C_RULE_4A=
+C_RULE_4B=
 
 #
 # Compilation rules to generate .o from .c for driver files
@@ -246,22 +363,33 @@ C_RULE_0_D=${C_RULE_0}
 C_RULE_1A_D=${C_RULE_1A}
 C_RULE_1B_D=${C_RULE_1B}
 C_RULE_2_D=${C_RULE_2}
-C_CTFRULE_1A_D=${C_CTFRULE_1A}
-C_CTFRULE_1B_D=${C_CTFRULE_1B}
-C_CTFRULE_2_D=${C_CTFRULE_2}
+C_RULE_3_D=${C_RULE_3}
+C_RULE_4A_D=${C_RULE_4A}
+C_RULE_4B_D=${C_RULE_4B}
 
 #
 # Compilation rules to generate .co from .cp or .cpo from .cpp
 #   The config tool slickly changes the last source filename char to 'o'
 #   for the object filename.
-P_RULE_0=@echo C++ $@
-P_RULE_1A=$(_v)${KC++} -o $@ -c ${CXXFLAGS} ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CXXWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CXXWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} 
+P_RULE_0=@$(LOG_CXX) "$@"
+P_RULE_1A=$(_v)${KC++} -o $@ -c ${CXXFLAGS} ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CXXWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CXXWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
 P_RULE_1B=$(<F)
 P_RULE_2=
-P_CTFRULE_1A=@true 
-P_CTFRULE_1B=
-P_CTFRULE_2=@true 
 
+P_RULE_3=
+P_RULE_4A=
+P_RULE_4B=
+
+#
+# Explain how to make the bsd syscall list
+#
+$(TARGET)/bsd.syscalls.master: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS)
+       @$(LOG_GENERATE) "$(@F)$(Color0) from $(ColorF)$<$(Color0)"
+       $(_v)$(UNIFDEF) $(SEED_DEFINES) $< > $@;        \
+       if [ $$? -eq 2 ]; then                          \
+               $(ERR) Parse failure for $<;            \
+               exit 1;                                 \
+       fi
 
 #
 # This isn't the right place to put this, but we need to := override some settings
@@ -302,12 +430,12 @@ INSTALL_MAN_DIR:
        $(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)
 
 $(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : % | INSTALL_MAN_DIR
-       @echo MAN $*
+       @$(LOG_MAN) "$*"
        $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@
 
 define MAN_LINKS_RULE_template
 $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(2): $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(1)
-       @echo MANLINK $(2)
+       @$$(LOG_MANLINK) "$(2)"
        $(_v)ln -f $$< $$@
 endef
 
@@ -320,11 +448,16 @@ INSTALL_MAN_FILES_LINKS = $(call function_generate_man_links_rules,$(INSTALL_MAN
 do_installman: $(INSTALL_MAN_FILES) $(INSTALL_MAN_FILES_LINKS)
        @:
 
-.PHONY: do_textfiles_install
+.PHONY: do_textfiles_install do_textfiles_install_mi do_textfiles_install_md
+
+# Do-nothing rule, since not all levels of the recursive hierarchy might implement this
+# in their local Makefiles. Those that do will use a "::" rule to augment this.
+do_textfiles_install_mi:: do_installman
+       @:
 
 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
 # in their local Makefiles. Those that do will use a "::" rule to augment this.
-do_textfiles_install:: do_installman
+do_textfiles_install_md::
        @:
 
 .PHONY: do_build_setup