X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/c0fea4742e91338fffdcf79f86a7c1d5e2b97eb1..d1ecb069dfe24481e4a83f44cb5217a2b06746d7:/makedefs/MakeInc.dir diff --git a/makedefs/MakeInc.dir b/makedefs/MakeInc.dir index 06f191b1f..7f98650e6 100644 --- a/makedefs/MakeInc.dir +++ b/makedefs/MakeInc.dir @@ -1,16 +1,25 @@ # # Install kernel header files # +ifeq ($(RC_ProjectName),Libsyscall) +installhdrs: + bsdmake -C libsyscall installhdrs +else ifeq ($(findstring libkxld,$(RC_ProjectName)),libkxld) +installhdrs: + make -C libkern/kxld/ installhdrs +else ifeq ($(RC_ProjectName),xnu_debug) +installhdrs: +else # xnu installhdrs: exporthdrs installhdrs_mi installhdrs_md - @echo "[ $(SRCROOT) ] make installhdrs installing Kernel.framework"; \ - kincpath=$(DSTROOT)/$(KINCDIR); \ + @echo "[ $(SRCROOT) ] make installhdrs installing Kernel.framework" + $(_v)kincpath=$(DSTROOT)/$(KINCDIR); \ krespath=$(DSTROOT)/$(KRESDIR); \ kframepath=$(DSTROOT)/$(KINCFRAME); \ [ -d $$krespath ] || $(MKDIR) $$krespath; \ [ -d $$kincpath ] || $(MKDIR) $$kincpath; \ cd $(SRCROOT)/EXTERNAL_HEADERS; \ install $(FILE_INSTALL_FLAGS) Info.plist $$krespath; \ - $(SRCROOT)/config/newvers.pl $${krespath}/Info.plist; \ + $(NEWVERS) $${krespath}/Info.plist; \ cd $$kframepath/Versions; \ [ -L Current ] || $(LN) $(KINCVERS) Current; \ cd $$kframepath; \ @@ -19,6 +28,7 @@ installhdrs: exporthdrs installhdrs_mi installhdrs_md [ -d $(DSTROOT)/$(KPINCDIR) ] || $(MKDIR) $(DSTROOT)/$(KPINCDIR); \ cd $$kframepath; [ -L PrivateHeaders ] || \ $(LN) Versions/Current/PrivateHeaders PrivateHeaders; +endif # # Install header files order @@ -29,13 +39,12 @@ installhdrs: exporthdrs installhdrs_mi installhdrs_md # Install machine independent header files # installhdrs_mi: - @echo "[ $(SOURCE) ] make installhdrs_mi "; \ - rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ + $(_v)rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ kernel_config=$(INSTALL_TYPE); \ arch_config=$(INSTALL_ARCH_DEFAULT); \ installinc_dir=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ [ -d $${installinc_dir} ] ||$(MKDIR) $${installinc_dir}; \ - ${MAKE} -C $${installinc_dir} \ + ${MAKE} ${MAKEJOBS} -C $${installinc_dir} \ KERNEL_CONFIG=$${kernel_config} \ ARCH_CONFIG=$${arch_config} \ MAKEFILES=${SOURCE}/Makefile \ @@ -47,19 +56,28 @@ installhdrs_mi: # Install machine dependent kernel header files # installhdrs_md: - @echo "[ $(SOURCE) ] make installhdrs_md "; \ - rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ + $(_v)rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ kernel_config=$(INSTALL_TYPE); \ + machine_config=$(MACHINE_CONFIG); \ for arch_config in $(INSTALL_ARCHS); \ do \ - [ -d ${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path} ] || \ - $(MKDIR) ${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ - ${MAKE} -C ${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path} \ + if [ $${arch_config} = ARM ] ; then \ + if [ $${machine_config} = DEFAULT ] ; then \ + machine_config=$(DEFAULT_ARM_MACHINE_CONFIG); \ + fi; \ + fi; \ + if [ $${machine_config} = DEFAULT ] ; then \ + objpath=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ + else \ + objpath=${OBJROOT}/$${kernel_config}_$${arch_config}_$${machine_config}/$${rel_path}; \ + fi; \ + [ -d $${objpath} ] || $(MKDIR) $${objpath}; \ + ${MAKE} ${MAKEJOBS} -C $${objpath} \ KERNEL_CONFIG=$${kernel_config} \ ARCH_CONFIG=$${arch_config} \ MAKEFILES=${SOURCE}/Makefile \ SOURCE=${SOURCE}/ \ - TARGET=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}/ \ + TARGET=$${objpath}/ \ build_installhdrs_md; \ done; @@ -68,36 +86,42 @@ installhdrs_md: # do_installhdrs_mi: -build_installhdrs_mi:: - @echo "[ $(SOURCE) ] make build_installhdrs_mi $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"; \ - for installinc_subdir in $(INSTINC_SUBDIRS); \ - do \ - [ -d $${installinc_subdir} ] || $(MKDIR) $${installinc_subdir}; \ - ${MAKE} -C $${installinc_subdir} \ - MAKEFILES=$(SOURCE)$${installinc_subdir}/Makefile \ - SOURCE=$(SOURCE)$${installinc_subdir}/ \ - TARGET=$(TARGET)$${installinc_subdir}/ \ - build_installhdrs_mi; \ - done; \ - ${MAKE} ${MAKEJOBS} do_installhdrs_mi; +BUILD_INSTALLHDRS_MI_SUBDIRS_TARGETS = $(addprefix build_installhdrs_mi_,$(INSTINC_SUBDIRS)) + +.PHONY: $(BUILD_INSTALLHDRS_MI_SUBDIRS_TARGETS) + +$(BUILD_INSTALLHDRS_MI_SUBDIRS_TARGETS): + $(_v)installinc_subdir="$(patsubst build_installhdrs_mi_%,%,$@)"; \ + [ -d $${installinc_subdir} ] || $(MKDIR) $${installinc_subdir}; \ + ${MAKE} -C $${installinc_subdir} \ + MAKEFILES=$(SOURCE)$${installinc_subdir}/Makefile \ + SOURCE=$(SOURCE)$${installinc_subdir}/ \ + TARGET=$(TARGET)$${installinc_subdir}/ \ + build_installhdrs_mi; + +build_installhdrs_mi: $(BUILD_INSTALLHDRS_MI_SUBDIRS_TARGETS) + $(_v)${MAKE} do_installhdrs_mi; # # Install machine dependent kernel header files # do_installhdrs_md: -build_installhdrs_md:: - @echo "[ $(SOURCE) ] make installhdrs_md $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"; \ - for installinc_subdir in $($(addprefix INSTINC_SUBDIRS_, $(ARCH_CONFIG))); \ - do \ - [ -d $${installinc_subdir} ] || $(MKDIR) $${installinc_subdir}; \ - ${MAKE} -C $${installinc_subdir} \ - MAKEFILES=$(SOURCE)$${installinc_subdir}/Makefile \ - SOURCE=$(SOURCE)$${installinc_subdir}/ \ - TARGET=$(TARGET)$${installinc_subdir}/ \ - build_installhdrs_md; \ - done; \ - ${MAKE} ${MAKEJOBS} do_installhdrs_md; +BUILD_INSTALLHDRS_MD_SUBDIRS_TARGETS = $(addprefix build_installhdrs_md_,$($(addprefix INSTINC_SUBDIRS_, $(ARCH_CONFIG)))) + +.PHONY: $(BUILD_INSTALLHDRS_MD_SUBDIRS_TARGETS) + +$(BUILD_INSTALLHDRS_MD_SUBDIRS_TARGETS): + $(_v)installinc_subdir="$(patsubst build_installhdrs_md_%,%,$@)"; \ + [ -d $${installinc_subdir} ] || $(MKDIR) $${installinc_subdir}; \ + ${MAKE} -C $${installinc_subdir} \ + MAKEFILES=$(SOURCE)$${installinc_subdir}/Makefile \ + SOURCE=$(SOURCE)$${installinc_subdir}/ \ + TARGET=$(TARGET)$${installinc_subdir}/ \ + build_installhdrs_md; + +build_installhdrs_md: $(BUILD_INSTALLHDRS_MD_SUBDIRS_TARGETS) + $(_v)${MAKE} do_installhdrs_md; # # Install kernel header files @@ -115,13 +139,12 @@ exporthdrs: exporthdrs_mi exporthdrs_md do_exporthdrs_mi: exporthdrs_mi: - @echo "[ ${SOURCE} ] make exporthdrs_mi "; \ - rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ + $(_v)rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ kernel_config=$(INSTALL_TYPE); \ arch_config=$(INSTALL_ARCH_DEFAULT); \ exportinc_dir=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ [ -d $${exportinc_dir} ] || $(MKDIR) $${exportinc_dir}; \ - ${MAKE} -C $${exportinc_dir} \ + ${MAKE} ${MAKEJOBS} -C $${exportinc_dir} \ KERNEL_CONFIG=$${kernel_config} \ ARCH_CONFIG=$${arch_config} \ MAKEFILES=${SOURCE}/Makefile \ @@ -132,21 +155,57 @@ exporthdrs_mi: # # Install machine dependent kernel header files # +# Note - installation of machine dependent kernel header files only occurs for architecture +# defined in INSTALL_TYPE. We use skipit variable to skip over architectures that are not +# equal to what is in the INSTALL_TYPE variable. +# TARGET_CONFIGS_UC variable holds sets of three configuration options. The first item in the +# set is the kernel configuration. The second item in the set is the architecture and the +# third item is the machine configuration. There may be multiple sets to build. exporthdrs_md: - @echo "[ $(SOURCE) ] make exporthdrs_md "; \ - rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ - kernel_config=$(INSTALL_TYPE); \ - for arch_config in $(ARCH_CONFIGS); \ - do \ - exportinc_dir=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ - [ -d $${exportinc_dir} ] || $(MKDIR) $${exportinc_dir}; \ - ${MAKE} -C $${exportinc_dir} \ - KERNEL_CONFIG=$${kernel_config} \ - ARCH_CONFIG=$${arch_config} \ - MAKEFILES=${SOURCE}/Makefile \ - SOURCE=${SOURCE}/ \ - TARGET=$${exportinc_dir}/ \ - build_exporthdrs_md; \ + $(_v)rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ + my_counter=1; \ + for my_config in $(TARGET_CONFIGS_UC); \ + do \ + if [ $${my_counter} -eq 1 ] ; then \ + skipit=0; \ + my_counter=2; \ + kernel_config=$${my_config}; \ + if [ $${kernel_config} = DEFAULT ] ; then \ + kernel_config=$(DEFAULT_KERNEL_CONFIG); \ + fi; \ + if [ $${kernel_config} != $(INSTALL_TYPE) ] ; then \ + skipit=1; \ + fi; \ + elif [ $${my_counter} -eq 2 ] ; then \ + my_counter=3; \ + arch_config=$${my_config}; \ + if [ $${arch_config} = DEFAULT ] ; then \ + arch_config=`arch | $(TR) a-z A-Z`; \ + fi; \ + else \ + my_counter=1; \ + machine_config=$${my_config}; \ + if [ $${skipit} -eq 0 ] ; then \ + if [ $${arch_config} = ARM ] ; then \ + if [ $${machine_config} = DEFAULT ] ; then \ + machine_config=$(DEFAULT_ARM_MACHINE_CONFIG); \ + fi; \ + fi; \ + if [ $${machine_config} = DEFAULT ] ; then \ + exportinc_dir=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ + else \ + exportinc_dir=${OBJROOT}/$${kernel_config}_$${arch_config}_$${machine_config}/$${rel_path}; \ + fi; \ + [ -d $${exportinc_dir} ] || $(MKDIR) $${exportinc_dir}; \ + ${MAKE} ${MAKEJOBS} -C $${exportinc_dir} \ + KERNEL_CONFIG=$${kernel_config} \ + ARCH_CONFIG=$${arch_config} \ + MAKEFILES=${SOURCE}/Makefile \ + SOURCE=${SOURCE}/ \ + TARGET=$${exportinc_dir}/ \ + build_exporthdrs_md; \ + fi; \ + fi; \ done; # @@ -154,45 +213,48 @@ exporthdrs_md: # do_exporthdrs_mi: -build_exporthdrs_mi: - @echo "[ $(SOURCE) ] make build_exporthdrs_mi $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"; \ - _TMP_EXPINC_SUBDIRS="$(EXPINC_SUBDIRS)"; \ - for exportinc_subdir in $${_TMP_EXPINC_SUBDIRS}; \ - do \ - [ -d $${exportinc_subdir} ] || $(MKDIR) $${exportinc_subdir}; \ - ${MAKE} -C $${exportinc_subdir} \ - MAKEFILES=$(SOURCE)$${exportinc_subdir}/Makefile \ - SOURCE=$(SOURCE)$${exportinc_subdir}/ \ - TARGET=$(TARGET)$${exportinc_subdir}/ \ - build_exporthdrs_mi; \ - done; \ - ${MAKE} ${MAKEJOBS} do_exporthdrs_mi; +BUILD_EXPORTHDRS_MI_SUBDIRS_TARGETS = $(addprefix build_exporthdrs_mi_,$(EXPINC_SUBDIRS)) + +.PHONY: $(BUILD_EXPORTHDRS_MI_SUBDIRS_TARGETS) + +$(BUILD_EXPORTHDRS_MI_SUBDIRS_TARGETS): + $(_v)exportinc_subdir="$(patsubst build_exporthdrs_mi_%,%,$@)"; \ + [ -d $${exportinc_subdir} ] || $(MKDIR) $${exportinc_subdir}; \ + ${MAKE} -C $${exportinc_subdir} \ + MAKEFILES=$(SOURCE)$${exportinc_subdir}/Makefile \ + SOURCE=$(SOURCE)$${exportinc_subdir}/ \ + TARGET=$(TARGET)$${exportinc_subdir}/ \ + build_exporthdrs_mi; + +build_exporthdrs_mi: $(BUILD_EXPORTHDRS_MI_SUBDIRS_TARGETS) + $(_v)${MAKE} do_exporthdrs_mi; # # Install machine dependent kernel header files # do_exporthdrs_md: -build_exporthdrs_md: - @echo "[ $(SOURCE) ] make exporthdrs_md $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"; \ - _TMP_exportinc_subdir="$($(addprefix EXPINC_SUBDIRS_, $(ARCH_CONFIG)))"; \ - for exportinc_subdir in $${_TMP_exportinc_subdir}; \ - do \ - [ -d $${exportinc_subdir} ] || $(MKDIR) $${exportinc_subdir}; \ - ${MAKE} -C $${exportinc_subdir} \ - MAKEFILES=$(SOURCE)$${exportinc_subdir}/Makefile \ - SOURCE=$(SOURCE)$${exportinc_subdir}/ \ - TARGET=$(TARGET)$${exportinc_subdir}/ \ - build_exporthdrs_md; \ - done; \ - ${MAKE} ${MAKEJOBS} do_exporthdrs_md; +BUILD_EXPORTHDRS_MD_SUBDIRS_TARGETS = $(addprefix build_exporthdrs_md_,$($(addprefix EXPINC_SUBDIRS_, $(ARCH_CONFIG)))) + +.PHONY: $(BUILD_EXPORTHDRS_MD_SUBDIRS_TARGETS) + +$(BUILD_EXPORTHDRS_MD_SUBDIRS_TARGETS): + $(_v)exportinc_subdir="$(patsubst build_exporthdrs_md_%,%,$@)"; \ + [ -d $${exportinc_subdir} ] || $(MKDIR) $${exportinc_subdir}; \ + ${MAKE} -C $${exportinc_subdir} \ + MAKEFILES=$(SOURCE)$${exportinc_subdir}/Makefile \ + SOURCE=$(SOURCE)$${exportinc_subdir}/ \ + TARGET=$(TARGET)$${exportinc_subdir}/ \ + build_exporthdrs_md; + +build_exporthdrs_md: $(BUILD_EXPORTHDRS_MD_SUBDIRS_TARGETS) + $(_v)${MAKE} do_exporthdrs_md; # # Setup pass for all architectures for all Configuration/Architecture options # setup: - @echo "[ $(SOURCE) ] make setup"; \ - rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ + $(_v)rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ for kernel_config in $(KERNEL_CONFIGS); \ do \ for arch_config in $(ARCH_CONFIGS); \ @@ -211,65 +273,112 @@ setup: do_build_setup: -build_setup: - @echo "[ $(SOURCE) ] make build_setup $(COMPONENT) $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"; \ - _TMP_setup_subdir="$(SETUP_SUBDIRS) $($(addprefix SETUP_SUBDIRS_, $(ARCH_CONFIG)))"; \ - for setup_subdir in $${_TMP_setup_subdir}; \ - do \ - [ -d $${setup_subdir} ] || $(MKDIR) $${setup_subdir}; \ +BUILD_SETUP_SUBDIRS_TARGETS = $(addprefix build_setup_,$(SETUP_SUBDIRS) $($(addprefix SETUP_SUBDIRS_, $(ARCH_CONFIG)))) + +.PHONY: $(BUILD_SETUP_SUBDIRS_TARGETS) + +$(BUILD_SETUP_SUBDIRS_TARGETS): + $(_v)setup_subdir="$(patsubst build_setup_%,%,$@)"; \ + [ -d $${setup_subdir} ] || $(MKDIR) $${setup_subdir}; \ ${MAKE} -C $${setup_subdir} \ MAKEFILES=${SOURCE}/$${setup_subdir}/Makefile \ SOURCE=${SOURCE}/$${setup_subdir}/ \ TARGET=${TARGET}/$${setup_subdir}/ \ - build_setup; \ - done; \ - ${MAKE} do_build_setup; + build_setup; + +build_setup: $(BUILD_SETUP_SUBDIRS_TARGETS) + $(_v)${MAKE} do_build_setup; # # Build all architectures for all Configuration/Architecture options # +# Note - TARGET_CONFIGS_UC variable holds sets of three configuration options. The first +# item in the set is the kernel configuration. The second item in the set is the architecture +# and the third item is the machine configuration. There may be multiple sets to build. +# +ifeq ($(RC_ProjectName),Libsyscall) +all: + bsdmake -C libsyscall install +else ifeq ($(findstring libkxld,$(RC_ProjectName)),libkxld) +all: + make -C libkern/kxld/ install +else # xnu or xnu_debug ifeq ($(COMPONENT), .) all: exporthdrs else all: endif - @echo "[ $(SOURCE) ] make all"; \ - rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ - for kernel_config in $(KERNEL_CONFIGS); \ - do \ - for arch_config in $(ARCH_CONFIGS); \ - do \ - build_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ - [ -d $${build_subdir} ] || $(MKDIR) $${build_subdir}; \ - ${MAKE} -C $${build_subdir} \ - KERNEL_CONFIG=$${kernel_config} \ - ARCH_CONFIG=$${arch_config} \ - MAKEFILES=${SOURCE}/Makefile \ - SOURCE=${SOURCE}/ \ - build_all; \ - done; \ + $(_v)my_counter=1; \ + for my_config in $(TARGET_CONFIGS_UC); \ + do \ + if [ $${my_counter} -eq 1 ] ; then \ + my_counter=2; \ + kernel_config=$${my_config}; \ + if [ $${kernel_config} = DEFAULT ] ; then \ + kernel_config=$(DEFAULT_KERNEL_CONFIG); \ + fi; \ + elif [ $${my_counter} -eq 2 ] ; then \ + my_counter=3; \ + arch_config=$${my_config}; \ + if [ $${arch_config} = DEFAULT ] ; then \ + arch_config=`arch | $(TR) a-z A-Z`; \ + fi; \ + else \ + my_counter=1; \ + machine_config=$${my_config}; \ + if [ $${arch_config} = ARM ] ; then \ + if [ $${machine_config} = DEFAULT ] ; then \ + machine_config=$(DEFAULT_ARM_MACHINE_CONFIG); \ + fi; \ + fi; \ + if [ $${machine_config} = DEFAULT ] ; then \ + build_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ + else \ + build_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}_$${machine_config}/$${rel_path}; \ + fi; \ + [ -d $${build_subdir} ] || $(MKDIR) $${build_subdir}; \ + ${MAKE} ${MAKEJOBS} -C $${build_subdir} \ + KERNEL_CONFIG=$${kernel_config} \ + ARCH_CONFIG=$${arch_config} \ + MACHINE_CONFIG=$${machine_config} \ + MAKEFILES=${SOURCE}/Makefile \ + SOURCE=${SOURCE}/ \ + build_all; \ + fi; \ done; +endif # # Build all architectures for all Configuration/Architecture options # do_build_all: -build_all: - @TARGET=${OBJROOT}/$(KERNEL_CONFIG)_$(ARCH_CONFIG)/$(COMPONENT); \ - echo "[ $(SOURCE) ] make build_all $(COMPONENT) $(KERNEL_CONFIG) $(ARCH_CONFIG) $${TARGET}"; \ - _TMP_comp_subdir="$(COMP_SUBDIRS) $($(addprefix COMP_SUBDIRS_, $(ARCH_CONFIG)))"; \ - for comp_subdir in $${_TMP_comp_subdir}; \ - do \ - [ -d $${comp_subdir} ] || $(MKDIR) $${comp_subdir}; \ - ${MAKE} -C $${comp_subdir} \ - MAKEFILES=${SOURCE}/$${comp_subdir}/Makefile \ - SOURCE=${SOURCE}$${comp_subdir}/ \ - TARGET=$${TARGET} \ - build_all; \ - done; \ - ${MAKE} ${MAKEJOBS} INCL_MAKEDEP=TRUE TARGET=$${TARGET} do_build_all; \ +BUILD_ALL_SUBDIRS_TARGETS = $(addprefix build_all_,$(COMP_SUBDIRS) $($(addprefix COMP_SUBDIRS_, $(ARCH_CONFIG)))) + +.PHONY: $(BUILD_ALL_SUBDIRS_TARGETS) + +$(BUILD_ALL_SUBDIRS_TARGETS): + $(_v)if [ $(MACHINE_CONFIG) = DEFAULT ] ; then \ + TARGET=$(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)/$(COMPONENT); \ + else \ + TARGET="$(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)_$(MACHINE_CONFIG)/$(COMPONENT)"; \ + fi; \ + comp_subdir="$(patsubst build_all_%,%,$@)"; \ + [ -d $${comp_subdir} ] || $(MKDIR) $${comp_subdir}; \ + ${MAKE} -C $${comp_subdir} \ + MAKEFILES=${SOURCE}/$${comp_subdir}/Makefile \ + SOURCE=${SOURCE}$${comp_subdir}/ \ + TARGET=$${TARGET} \ + build_all; + +build_all: $(BUILD_ALL_SUBDIRS_TARGETS) + $(_v)if [ $(MACHINE_CONFIG) = DEFAULT ] ; then \ + TARGET=$(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)/$(COMPONENT); \ + else \ + TARGET="$(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)_$(MACHINE_CONFIG)/$(COMPONENT)"; \ + fi; \ + ${MAKE} INCL_MAKEDEP=TRUE TARGET=$${TARGET} do_build_all; \ _TMP_comp_subdir="$(CONFIG_SUBDIRS) $($(addprefix CONFIG_SUBDIRS_, $(ARCH_CONFIG)))"; \ for comp_subdir in $${_TMP_comp_subdir}; \ do \ @@ -279,28 +388,55 @@ build_all: SOURCE=${SOURCE}$${comp_subdir}/ \ TARGET=$${TARGET} \ build_all; \ - done; \ + done; # # Build all architectures for all Configuration/Architecture options # +# Note - TARGET_CONFIGS_UC variable holds sets of three configuration options. The first +# item in the set is the kernel configuration. The second item is the architecture +# and the third item is the machine configuration. There may be multiple sets to build. +# mach_kernel: - @echo "[ $(SOURCE) ] make mach_kernel"; \ - for kernel_config in $(KERNEL_CONFIGS); \ - do \ - for arch_config in $(ARCH_CONFIGS); \ - do \ - build_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}; \ - [ -d $${build_subdir} ] || $(MKDIR) $${build_subdir}; \ - ${MAKE} -C $${build_subdir} \ - KERNEL_CONFIG=$${kernel_config} \ - ARCH_CONFIG=$${arch_config} \ - MAKEFILES=${SOURCE}/Makefile \ - SOURCE=${SOURCE}/ \ - TARGET=$${build_subdir}/ \ - build_mach_kernel; \ - done; \ + $(_v)my_counter=1; \ + for my_config in $(TARGET_CONFIGS_UC); \ + do \ + if [ $${my_counter} -eq 1 ] ; then \ + my_counter=2; \ + kernel_config=$${my_config}; \ + if [ $${kernel_config} = DEFAULT ] ; then \ + kernel_config=$(DEFAULT_KERNEL_CONFIG); \ + fi; \ + elif [ $${my_counter} -eq 2 ] ; then \ + my_counter=3; \ + arch_config=$${my_config}; \ + if [ $${arch_config} = DEFAULT ] ; then \ + arch_config=`arch | $(TR) a-z A-Z`; \ + fi; \ + else \ + my_counter=1; \ + machine_config=$${my_config}; \ + if [ $${arch_config} = ARM ] ; then \ + if [ $${machine_config} = DEFAULT ] ; then \ + machine_config=$(DEFAULT_ARM_MACHINE_CONFIG); \ + fi; \ + fi; \ + if [ $${machine_config} = DEFAULT ] ; then \ + build_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}; \ + else \ + build_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}_$${machine_config}; \ + fi; \ + [ -d $${build_subdir} ] || $(MKDIR) $${build_subdir}; \ + ${MAKE} ${MAKEJOBS} -C $${build_subdir} \ + KERNEL_CONFIG=$${kernel_config} \ + ARCH_CONFIG=$${arch_config} \ + MACHINE_CONFIG=$${machine_config} \ + MAKEFILES=${SOURCE}/Makefile \ + SOURCE=${SOURCE}/ \ + TARGET=$${build_subdir}/ \ + build_mach_kernel; \ + fi; \ done; # @@ -309,8 +445,7 @@ mach_kernel: do_build_mach_kernel: build_mach_kernel: - @echo "[ $(SOURCE) ] make build_mach_kernel $(COMPONENT) $(KERNEL_CONFIG) $(ARCH_CONFIG) $(TARGET)"; \ - ${MAKE} ${MAKEJOBS} do_build_mach_kernel; + $(_v)${MAKE} do_build_mach_kernel; # @@ -323,23 +458,85 @@ build_mach_kernel: # Install kernel based on RC_ARCHS for all INSTALL_TYPES # Install kernel header files based on RC_ARCHS # -install: installhdrs all installman - @echo "[ $(SOURCE) ] make install"; \ - rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ +install: installhdrs all installman installmachinekernels +ifeq ($(RC_ProjectName),Libsyscall) +# nothing to do +else ifeq ($(findstring libkxld,$(RC_ProjectName)),libkxld) +# nothing to do +else # xnu or xnu_debug + $(_v)rel_path=$(shell $(RELPATH) $(SRCROOT) $(SOURCE)); \ + machine_config=$(MACHINE_CONFIG); \ for kernel_config in $(INSTALL_TYPE); \ do \ for arch_config in $(INSTALL_ARCHS); \ do \ - install_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ + if [ $${arch_config} = ARM ] ; then \ + if [ $${machine_config} = DEFAULT ] ; then \ + machine_config=$(DEFAULT_ARM_MACHINE_CONFIG); \ + fi; \ + fi; \ + if [ $${machine_config} = DEFAULT ] ; then \ + install_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}/$${rel_path}; \ + else \ + install_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}_$${machine_config}/$${rel_path}; \ + fi; \ [ -d $${install_subdir} ] || $(MKDIR) $${install_subdir}; \ - ${MAKE} -C $${install_subdir} \ + ${MAKE} ${MAKEJOBS} -C $${install_subdir} \ KERNEL_CONFIG=$${kernel_config} \ ARCH_CONFIG=$${arch_config} \ + MACHINE_CONFIG=$${machine_config} \ MAKEFILES=${SOURCE}/Makefile \ SOURCE=${SOURCE}/ \ build_install; \ done; \ done; +ifeq ($(RC_ProjectName),xnu_debug) + $(_v)$(MKDIR) $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR) + $(_v)$(MV) $(DSTROOT)/mach_kernel* $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR) + $(_v)$(CP) $(SYMROOT)/kgmacros $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR) + $(_v)$(CP) -r $(SYMROOT)/System.kext $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR) + $(_v)$(CP) -r $(SYMROOT)/mach_kernel.dSYM $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR) + $(_v)$(CP) $(SRCROOT)/config/README.DEBUG-kernel.txt $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR) + $(_v)$(MV) $(DSTROOT)/System $(DSTROOT)/usr $(OBJROOT)/ +endif +endif + +installmachinekernels: + @echo "[ $(SOURCE) ] make installmachinekernels"; \ + my_counter=1; \ + for my_config in $(TARGET_CONFIGS_UC); \ + do \ + if [ $${my_counter} -eq 1 ] ; then \ + my_counter=2; \ + kernel_config=$${my_config}; \ + if [ $${kernel_config} = DEFAULT ] ; then \ + kernel_config=$(DEFAULT_KERNEL_CONFIG); \ + fi; \ + elif [ $${my_counter} -eq 2 ] ; then \ + my_counter=3; \ + arch_config=$${my_config}; \ + if [ $${arch_config} = DEFAULT ] ; then \ + arch_config=`arch | $(TR) a-z A-Z`; \ + fi; \ + else \ + my_counter=1; \ + machine_config=$${my_config}; \ + if [ $${machine_config} != DEFAULT ] ; then \ + build_subdir=${OBJROOT}/$${kernel_config}_$${arch_config}_$${machine_config}; \ + install_file_list=mach.`printf "%s" "$${kernel_config}" | $(TR) A-Z a-z`.`printf "%s" "$${machine_config}" | $(TR) A-Z a-z`; \ + [ -d $${build_subdir} ] || $(MKDIR) $${build_subdir}; \ + ${MAKE} ${MAKEJOBS} -C $${build_subdir} \ + INSTALL_FILE_LIST=$${install_file_list} \ + KERNEL_CONFIG=$${kernel_config} \ + ARCH_CONFIG=$${arch_config} \ + MACHINE_CONFIG=$${machine_config} \ + MAKEFILES=${SOURCE}/Makefile \ + SOURCE=${SOURCE}/ \ + TARGET=$${build_subdir}/ \ + do_build_install; \ + fi; \ + fi; \ + done; # # Install for all architectures for all Configuration/Architecture options @@ -348,30 +545,41 @@ setup_build_install: do_build_install: -build_install: - @TARGET=${OBJROOT}/$(KERNEL_CONFIG)_$(ARCH_CONFIG)/$(COMPONENT); \ - echo "[ $(SOURCE) ] make build_install $(COMPONENT) $(KERNEL_CONFIG) $(ARCH_CONFIG) $${TARGET}"; \ +BUILD_INSTALL_SUBDIRS_TARGETS = $(addprefix build_install_,$(INST_SUBDIRS)) + +.PHONY: $(BUILD_INSTALL_SUBDIRS_TARGETS) + +$(BUILD_INSTALL_SUBDIRS_TARGETS): + $(_v)if [ $(MACHINE_CONFIG) = DEFAULT ] ; then \ + TARGET=${OBJROOT}/$(KERNEL_CONFIG)_$(ARCH_CONFIG)/$(COMPONENT); \ + else \ + TARGET="$(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)_$(MACHINE_CONFIG)/$(COMPONENT)"; \ + fi; \ ${MAKE} TARGET=$${TARGET} setup_build_install; \ kernel_config=$(KERNEL_CONFIG); \ - for install_subdir in $(INST_SUBDIRS); \ - do \ - [ -d $${install_subdir} ] || $(MKDIR) $${install_subdir}; \ - ${MAKE} -C $${install_subdir} \ - KERNEL_CONFIG=$${kernel_config} \ - MAKEFILES=${SOURCE}/$${install_subdir}/Makefile \ - SOURCE=${SOURCE}$${install_subdir}/ \ - TARGET=$${TARGET} \ - build_install; \ - done; \ - ${MAKE} ${MAKEJOBS} TARGET=$${TARGET} do_build_install; + install_subdir="$(patsubst build_install_%,%,$@)"; \ + [ -d $${install_subdir} ] || $(MKDIR) $${install_subdir}; \ + ${MAKE} -C $${install_subdir} \ + KERNEL_CONFIG=$${kernel_config} \ + MAKEFILES=${SOURCE}/$${install_subdir}/Makefile \ + SOURCE=${SOURCE}$${install_subdir}/ \ + TARGET=$${TARGET} \ + build_install; + +build_install: $(BUILD_INSTALL_SUBDIRS_TARGETS) + $(_v)if [ $(MACHINE_CONFIG) = DEFAULT ] ; then \ + TARGET=${OBJROOT}/$(KERNEL_CONFIG)_$(ARCH_CONFIG)/$(COMPONENT); \ + else \ + TARGET="$(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)_$(MACHINE_CONFIG)/$(COMPONENT)"; \ + fi; \ + ${MAKE} TARGET=$${TARGET} do_build_install; # # Install source tree # installsrc: - pax -rw . ${SRCROOT} - + $(_v)($(TAR) -c --mode go=r,+X --no-ignore-case --exclude .svn --exclude cscope.\* --exclude BUILD --exclude \*~ -f - .) | (cd $(SRCROOT) && $(TAR) --no-same-owner -xf -) # @@ -407,8 +615,11 @@ cscope: cscope.files tags: cscope.files @echo "Building ctags" - @-xargs ctags -dtw < cscope.files 2> /dev/null || \ + @-sed 1d cscope.files | xargs ctags -dtw 2> /dev/null || \ echo "Phantom files detected!" 2>&1 > /dev/null + @-[ -f TAGS ] || ${MAKE} TAGS + +TAGS: cscope.files @echo "Building etags" @-cat cscope.files | etags -l auto -S - 2> /dev/null @@ -416,27 +627,38 @@ tags: cscope.files # Install Man Pages # installman: - @echo "[ $(SRCROOT) ] Installing man pages"; \ - manpath=$(DSTROOT)/$(MANDIR); \ +ifeq ($(RC_ProjectName),Libsyscall) + bsdmake -C libsyscall install-man +else ifeq ($(findstring libkxld,$(RC_ProjectName)),libkxld) +# nothing to do +else # xnu or xnu_debug + @echo "[ $(SRCROOT) ] Installing man pages" + $(_v)manpath=$(DSTROOT)/$(MANDIR); \ [ -d $$manpath ] || $(MKDIR) $$manpath; \ - ${MAKE} MAKEFILES=${SOURCE}/Makefile \ + ${MAKE} ${MAKEJOBS} MAKEFILES=${SOURCE}/Makefile \ SOURCE=${SOURCE}/ \ TARGET=${DSTROOT}/ \ build_installman + ${SRCROOT}/config/compress-man-pages.pl ${DSTROOT}/${MANDIR} +endif do_installman: -build_installman: - @echo "[ $(SOURCE) ] make build_installman"; \ - if [ -n "$(strip $(INSTMAN_SUBDIRS))" ]; then \ - for installman_subdir in $(INSTMAN_SUBDIRS); do \ - ${MAKE} -C $${installman_subdir} -r \ - MAKEFILES=$(SOURCE)$${installman_subdir}/Makefile \ - SOURCE=$(SOURCE)$${installman_subdir}/ \ - TARGET=$(TARGET)$${installman_subdir}/ \ - build_installman; \ - done; \ - fi; \ - if [ -n "$(strip $(INSTALL_MAN_LIST))" ]; then \ - ${MAKE} ${MAKEJOBS} do_installman; \ +BUILD_INSTALLMAN_SUBDIRS_TARGETS = $(addprefix build_installman_,$(INSTMAN_SUBDIRS)) + +.PHONY: $(BUILD_INSTALLMAN_SUBDIRS_TARGETS) + +$(BUILD_INSTALLMAN_SUBDIRS_TARGETS): + $(_v)installman_subdir="$(patsubst build_installman_%,%,$@)"; \ + ${MAKE} -C $${installman_subdir} -r \ + MAKEFILES=$(SOURCE)$${installman_subdir}/Makefile \ + SOURCE=$(SOURCE)$${installman_subdir}/ \ + TARGET=$(TARGET)$${installman_subdir}/ \ + build_installman; + +build_installman: $(BUILD_INSTALLMAN_SUBDIRS_TARGETS) + $(_v)if [ -n "$(strip $(INSTALL_MAN_LIST))" ]; then \ + ${MAKE} do_installman; \ fi + +# vim: set ft=make: