X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/6d2010ae8f7a6078e10b361c6962983bab233e0f..a39ff7e25e19b3a8c3020042a3872ca9ec9659f1:/osfmk/conf/Makefile.template diff --git a/osfmk/conf/Makefile.template b/osfmk/conf/Makefile.template index c39e844cf..d533b91a5 100644 --- a/osfmk/conf/Makefile.template +++ b/osfmk/conf/Makefile.template @@ -5,16 +5,6 @@ # the terms and conditions for use and redistribution. # -# -# Export IDENT for sub-makefiles -# -export IDENT - -# -# XXX: INCFLAGS to include libsa prototypes -# -INCFLAGS_MAKEFILE= -I$(SOURCE)libsa - export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule @@ -26,27 +16,98 @@ include $(MakeInc_def) # # XXX: CFLAGS # -CFLAGS+= -include meta_features.h -DMACH_KERNEL_PRIVATE $(CFLAGS_INLINE_CONFIG) +CFLAGS+= -include meta_features.h -DMACH_KERNEL_PRIVATE -DMACH_KERNEL +SFLAGS+= -include meta_features.h + +# Objects that don't want -Wcast-align warning (8474835) +OBJS_NO_CAST_ALIGN = \ + atm_notification_user.o \ + model_dep.o \ + video_console.o \ + kdp_udp.o \ + kdp_machdep.o \ + host.o \ + processor.o \ + sched_prim.o \ + task.o \ + thread.o \ + threadinfo.o \ + gssd_mach.o \ + UNDRequest.o \ + panic_dialog.o \ + bsd_i386.o \ + commpage.o \ + cpu_threads.o \ + cpuid.o \ + locks_i386.o \ + machine_task.o \ + mp_desc.o \ + pcb.o \ + pcb_native.o \ + kdp_x86_common.o \ + memory_object.o \ + vm_apple_protect.o \ + vm_map.o \ + startup64.o \ + affinity.o \ + sched_grrr.o \ + sched_proto.o \ + stack.o \ + task_policy.o \ + wait_queue.o \ + bsd_kern.o \ + pmc.o \ + status.o \ + machine_routines.o \ + loose_ends.o \ + fips_sha1.o \ + prng_yarrow.o \ + sha1mod.o \ + sleh.o \ + ccdigest_final_64be.o \ + ccdigest_init.o \ + ccdigest_update.o \ + cchmac_final.o \ + cchmac_init.o \ + ccsha1.o \ + ipc_object.o \ + ccmode_ctr_crypt.o \ + ccmode_factory_ctr_crypt.o \ + ccmode_ctr_init.o \ + ccmode_ctr_setctr.o \ + ipc_kmsg.o \ + ipc_right.o \ + bsd_vm.o \ + vm_map_store.o \ + vm_map_store_ll.o \ + vm_map_store_rb.o \ + vm_debug.o + +# Objects that don't want -Wsign-compare warning (15294427) +OBJS_NO_SIGN_COMPARE = \ + atm_notification_user.o + +$(foreach file,$(OBJS_NO_CAST_ALIGN),$(eval $(call add_perfile_cflags,$(file),-Wno-cast-align))) +$(foreach file,$(OBJS_NO_SIGN_COMPARE),$(eval $(call add_perfile_cflags,$(file),-Wno-sign-compare))) + +# +# XXX: INCFLAGS to include libsa prototypes +# +INCFLAGS_MAKEFILE= -I$(SOURCE)libsa # # Directories for mig generated files # COMP_SUBDIRS = \ + atm \ default_pager \ device \ - mach_debug \ mach \ UserNotification \ gssd \ kextd \ lockd -COMP_SUBDIRS_I386 = \ - mach - -COMP_SUBDIRS_X86_64 = \ - mach - # # Make sure we don't remove this by accident if interrupted at the wrong # time. @@ -65,66 +126,64 @@ COMP_SUBDIRS_X86_64 = \ %CFILES -%MFILES +%CXXFILES %SFILES -%BFILES - -%ORDERED %MACHDEP -# -# OBJSDEPS is the set of files (defined in the machine dependent -# template if necessary) which all objects depend on (such as an -# in-line assembler expansion filter) -# -${OBJS}: ${OBJSDEPS} - - -%LOAD - -LDOBJS = $(OBJS) - -$(COMPONENT).filelist: $(LDOBJS) assym.s - $(_v)if [ $(BUILD_MACHO_OBJ) -eq 1 ]; then \ - for hib_file in ${HIB_FILES}; \ +# Rebuild if per-file overrides change +${OBJS}: $(firstword $(MAKEFILE_LIST)) + +# Rebuild if global compile flags change +$(COBJS): .CFLAGS +.CFLAGS: ALWAYS + $(_v)$(REPLACECONTENTS) $@ $(KCC) $(CFLAGS) $(INCFLAGS) +$(CXXOBJS): .CXXFLAGS +.CXXFLAGS: ALWAYS + $(_v)$(REPLACECONTENTS) $@ $(KC++) $(CXXFLAGS) $(INCFLAGS) +$(SOBJS): .SFLAGS +.SFLAGS: ALWAYS + $(_v)$(REPLACECONTENTS) $@ $(S_KCC) $(SFLAGS) $(INCFLAGS) + +$(COMPONENT).filelist: $(OBJS) + $(_v)for hib_file in ${HIB_FILES}; \ do \ - $(SEG_HACK) __HIB $${hib_file} -o $${hib_file}__; \ - mv $${hib_file}__ $${hib_file} ; \ - done; \ - fi - @echo LDFILELIST $(COMPONENT) - $(_v)( for obj in ${LDOBJS}; do \ - echo $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)/$${obj}; \ - done; ) > $(COMPONENT).filelist + $(SEG_HACK) -n __HIB -o $${hib_file}__ $${hib_file} || exit 1; \ + mv $${hib_file}__ $${hib_file} || exit 1; \ + done + @echo "$(ColorL)LDFILELIST$(Color0) $(ColorLF)$(COMPONENT)$(Color0)" + $(_v)for obj in ${OBJS}; do \ + echo $(TARGET)/$(CURRENT_KERNEL_CONFIG)/$${obj}; \ + done > $(COMPONENT).filelist do_all: $(COMPONENT).filelist -do_depend: do_all - $(_v)${MD} -u Makedep -f -d `ls *.d`; - -do_build_all: do_depend +do_build_all:: do_all # genassym.o actually is an assembly file, # we name it genassym.o to help with the automatic # dependency generation -GENASSYM_LOCATION = $(ARCH_CONFIG_LC) +GENASSYM_LOCATION = $(CURRENT_ARCH_CONFIG_LC) -ifeq ($(ARCH_CONFIG_LC),x86_64) +ifeq ($(CURRENT_ARCH_CONFIG_LC),x86_64) +GENASSYM_LOCATION = i386 +else ifeq ($(CURRENT_ARCH_CONFIG_LC),x86_64h) GENASSYM_LOCATION = i386 endif +-include genassym.d +genassym.o: .CFLAGS $(firstword $(MAKEFILE_LIST)) genassym.o: $(SOURCE_DIR)/$(COMPONENT)/$(GENASSYM_LOCATION)/genassym.c - $(_v)${KCC} $(subst -flto,,${CFLAGS}) -MD ${_HOST_EXTRA_CFLAGS} -S -o ${@} -c ${INCFLAGS} $< + @echo "[$(CMD_MC)] $(ColorH)GENASSYM$(Color0) $(ColorLF)$<$(Color0)" + $(_v)${GENASSYM_KCC} ${CFLAGS} ${CFLAGS_NOLTO_FLAG} -MD -S -o ${@} ${INCFLAGS} $< assym.s: genassym.o - $(_v)sed -e '/#DEFINITION#/!d' -e 's/^.*#DEFINITION#//' -e 's/\$$//' -e 'p' -e 's/#//2' -e 's/[^A-Za-z0-9_]*\([A-Za-z0-9_]*\)/ \1_NUM/2' genassym.o > ${@} + $(_v)sed -e '/^[[:space:]]*DEFINITION__define__/!d;{N;s/\n//;}' -e 's/^[[:space:]]*DEFINITION__define__\([^:]*\):.*ascii.*\"[\$$]*\([-0-9\#]*\)\".*$$/#define \1 \2/' -e 'p' -e 's/#//2' -e 's/^[[:space:]]*#define \([A-Za-z0-9_]*\)[[:space:]]*[\$$#]*\([-0-9]*\).*$$/#define \1_NUM \2/' genassym.o > $@ ${SOBJS}: assym.s - %RULES include $(MakeInc_rule)