X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/2d21ac55c334faf3a56e5634905ed6987fc787d4..3903760236c30e3b5ace7a4eefac3a269d68957c:/libsa/conf/Makefile.template diff --git a/libsa/conf/Makefile.template b/libsa/conf/Makefile.template index 9d966e91a..ebfd0d2a8 100644 --- a/libsa/conf/Makefile.template +++ b/libsa/conf/Makefile.template @@ -5,17 +5,6 @@ # the terms and conditions for use and redistribution. # -# -# Export IDENT for sub-makefiles -# -export IDENT - -# -# XXX: INCFLAGS -# -INCFLAGS_MAKEFILE= - - export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule @@ -25,17 +14,14 @@ include $(MakeInc_cmd) include $(MakeInc_def) # -# XXX: CFLAGS +# CFLAGS # -CFLAGS+= -imacros meta_features.h -DKERNEL -DLIBSA_KERNEL_PRIVATE \ - -Wall -Wno-four-char-constants -fno-common $(CFLAGS_INLINE_CONFIG) - -SFLAGS+= -DKERNEL +CFLAGS+= -include meta_features.h -DLIBSA_KERNEL_PRIVATE # # Directories for mig generated files # -COMP_SUBDIRS = +COMP_SUBDIRS = # # Make sure we don't remove this by accident if interrupted at the wrong @@ -55,42 +41,51 @@ COMP_SUBDIRS = %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} +# 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) -%LOAD +KLD_FILES = $(OBJS) -LDOBJS = $(OBJS) +$(COMPONENT).filelist: $(OBJS) + $(_v)for kld_file in ${KLD_FILES}; do \ + $(SEG_HACK) -n __KLD -o $${kld_file}__ $${kld_file} || exit 1; \ + mv $${kld_file}__ $${kld_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 -$(COMPONENT).o: $(LDOBJS) - @echo LD $(COMPONENT) - $(_v)$(LD) $(LDFLAGS_COMPONENT) -o $(COMPONENT).o ${LDOBJS} $(LIBKLD) - $(_v)$(SEG_HACK) __KLD $(COMPONENT).o -o $(COMPONENT)_kld.o - $(_v)$(LD) $(LDFLAGS_COMPONENT) $(COMPONENT)_kld.o -o $(COMPONENT).o -do_all: $(COMPONENT).o +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 %RULES include $(MakeInc_rule) include $(MakeInc_dir) +# the KLD segment is mapped read-only on arm, so if we include llvm profiling +# here it will segfault the kernel. (see arm_vm_init.c) We don't currently have +# a way of retrieving these counters from KLD anyway, so there's no harm in just +# disabling them. +CXXFLAGS_GEN:=$(filter-out -fprofile-instr-generate,$(CXXFLAGS_GEN)) +CFLAGS_GEN:=$(filter-out -fprofile-instr-generate,$(CFLAGS_GEN))