1*5e3eaea3SApple OSS Distributions# -*- mode: makefile;-*- 2*5e3eaea3SApple OSS Distributions# 3*5e3eaea3SApple OSS Distributions# Copyright (C) 1999-2016 Apple Inc. All rights reserved. 4*5e3eaea3SApple OSS Distributions# 5*5e3eaea3SApple OSS Distributions# MakeInc.dir contains the recursion rules for the build system. 6*5e3eaea3SApple OSS Distributions# For instance, the "build_installhdrs_md" target is auto-generated 7*5e3eaea3SApple OSS Distributions# such that make(1) recurses into a specified set of subdirectories 8*5e3eaea3SApple OSS Distributions# (building "build_installhdrs_md" in turn at each level) before 9*5e3eaea3SApple OSS Distributions# building the special "do_installhdrs_md" target at the current 10*5e3eaea3SApple OSS Distributions# level. "do_installhdrs_md" is defined in MakeInc.rule. 11*5e3eaea3SApple OSS Distributions# 12*5e3eaea3SApple OSS Distributions 13*5e3eaea3SApple OSS Distributions# $(1) is the name of the target to produce that will perform the 14*5e3eaea3SApple OSS Distributions# recursive behavior via dependencies 15*5e3eaea3SApple OSS Distributions# $(2) is a list of subdirectories to recurse into 16*5e3eaea3SApple OSS Distributions# $(3) is the target to build with a sub-make after 17*5e3eaea3SApple OSS Distributions# the subdirectories have been recursed into 18*5e3eaea3SApple OSS Distributions# $(4) should be "1" if TARGET should be pinned to the per-arch 19*5e3eaea3SApple OSS Distributions# build COMPONENT directory, or empty if it should recurse 20*5e3eaea3SApple OSS Distributions# in lockstep with the source recursion 21*5e3eaea3SApple OSS Distributionsdefine RECURSIVE_BUILD_RULES_template 22*5e3eaea3SApple OSS Distributions$(1)_recurse_target_list = $$(addprefix $(1)_recurse_into_,$(2)) 23*5e3eaea3SApple OSS Distributions 24*5e3eaea3SApple OSS Distributions.PHONY: $$($(1)_recurse_target_list) 25*5e3eaea3SApple OSS Distributions 26*5e3eaea3SApple OSS Distributions$$($(1)_recurse_target_list): 27*5e3eaea3SApple OSS Distributions $$(_v)$$(MKDIR) "$$(CURDIR)/$$(patsubst $(1)_recurse_into_%,%,$$@)" 28*5e3eaea3SApple OSS Distributions $$(_v)$${MAKE} -C "$$(CURDIR)/$$(patsubst $(1)_recurse_into_%,%,$$@)" \ 29*5e3eaea3SApple OSS Distributions -f "$$(SOURCE)$$(patsubst $(1)_recurse_into_%,%,$$@)/Makefile" \ 30*5e3eaea3SApple OSS Distributions CURRENT_KERNEL_CONFIG=$${CURRENT_KERNEL_CONFIG} \ 31*5e3eaea3SApple OSS Distributions CURRENT_ARCH_CONFIG=$${CURRENT_ARCH_CONFIG} \ 32*5e3eaea3SApple OSS Distributions CURRENT_MACHINE_CONFIG=$${CURRENT_MACHINE_CONFIG} \ 33*5e3eaea3SApple OSS Distributions CURRENT_BUILD_CONFIG=$${CURRENT_BUILD_CONFIG} \ 34*5e3eaea3SApple OSS Distributions SOURCE="$$(SOURCE)$$(patsubst $(1)_recurse_into_%,%,$$@)/" \ 35*5e3eaea3SApple OSS Distributions RELATIVE_SOURCE_PATH="$$(RELATIVE_SOURCE_PATH)/$$(patsubst $(1)_recurse_into_%,%,$$@)" \ 36*5e3eaea3SApple OSS Distributions TARGET=$(if $(4),$${OBJPATH}/$$(COMPONENT),$$(TARGET)$$(patsubst $(1)_recurse_into_%,%,$$@)/) \ 37*5e3eaea3SApple OSS Distributions OBJPATH=$${OBJPATH} \ 38*5e3eaea3SApple OSS Distributions $(1); 39*5e3eaea3SApple OSS Distributions 40*5e3eaea3SApple OSS Distributions.PHONY: $(1) 41*5e3eaea3SApple OSS Distributions 42*5e3eaea3SApple OSS Distributions$(1): $$($(1)_recurse_target_list) 43*5e3eaea3SApple OSS Distributions $$(_v)$${MAKE} -C "$$(CURDIR)" \ 44*5e3eaea3SApple OSS Distributions -f $$(firstword $$(MAKEFILE_LIST)) \ 45*5e3eaea3SApple OSS Distributions CURRENT_KERNEL_CONFIG=$${CURRENT_KERNEL_CONFIG} \ 46*5e3eaea3SApple OSS Distributions CURRENT_ARCH_CONFIG=$${CURRENT_ARCH_CONFIG} \ 47*5e3eaea3SApple OSS Distributions CURRENT_MACHINE_CONFIG=$${CURRENT_MACHINE_CONFIG} \ 48*5e3eaea3SApple OSS Distributions CURRENT_BUILD_CONFIG=$${CURRENT_BUILD_CONFIG} \ 49*5e3eaea3SApple OSS Distributions SOURCE=$$(SOURCE) \ 50*5e3eaea3SApple OSS Distributions RELATIVE_SOURCE_PATH=$$(RELATIVE_SOURCE_PATH) \ 51*5e3eaea3SApple OSS Distributions TARGET=$$(TARGET) \ 52*5e3eaea3SApple OSS Distributions OBJPATH=$${OBJPATH} \ 53*5e3eaea3SApple OSS Distributions $(3); 54*5e3eaea3SApple OSS Distributionsendef 55*5e3eaea3SApple OSS Distributions 56*5e3eaea3SApple OSS Distributions# 57*5e3eaea3SApple OSS Distributions# Setup pass for all architectures for all Configuration/Architecture options 58*5e3eaea3SApple OSS Distributions# 59*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,build_setup,$(SETUP_SUBDIRS),do_build_setup,)) 60*5e3eaea3SApple OSS Distributions 61*5e3eaea3SApple OSS Distributions# 62*5e3eaea3SApple OSS Distributions# Install machine independent kernel header files 63*5e3eaea3SApple OSS Distributions# 64*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,build_installhdrs_mi,$(INSTINC_SUBDIRS),do_installhdrs_mi,)) 65*5e3eaea3SApple OSS Distributions 66*5e3eaea3SApple OSS Distributions# 67*5e3eaea3SApple OSS Distributions# Install machine dependent kernel header files 68*5e3eaea3SApple OSS Distributions# 69*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,build_installhdrs_md,$(INSTINC_SUBDIRS_$(CURRENT_ARCH_CONFIG)),do_installhdrs_md,)) 70*5e3eaea3SApple OSS Distributions 71*5e3eaea3SApple OSS Distributions# 72*5e3eaea3SApple OSS Distributions# Install machine independent kernel header files 73*5e3eaea3SApple OSS Distributions# 74*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,build_exporthdrs_mi,$(EXPINC_SUBDIRS),do_exporthdrs_mi,)) 75*5e3eaea3SApple OSS Distributions 76*5e3eaea3SApple OSS Distributions# 77*5e3eaea3SApple OSS Distributions# Install machine dependent kernel header files 78*5e3eaea3SApple OSS Distributions# 79*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,build_exporthdrs_md,$(EXPINC_SUBDIRS_$(CURRENT_ARCH_CONFIG)),do_exporthdrs_md,)) 80*5e3eaea3SApple OSS Distributions 81*5e3eaea3SApple OSS Distributions# 82*5e3eaea3SApple OSS Distributions# Build all architectures for all Configuration/Architecture options 83*5e3eaea3SApple OSS Distributions# 84*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,build_all,$(COMP_SUBDIRS) $(COMP_SUBDIRS_$(CURRENT_ARCH_CONFIG)),do_build_all,1)) 85*5e3eaea3SApple OSS Distributions 86*5e3eaea3SApple OSS Distributions# 87*5e3eaea3SApple OSS Distributions# Post-process build results 88*5e3eaea3SApple OSS Distributions# 89*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,config_all,$(CONFIG_SUBDIRS),do_config_all,1)) 90*5e3eaea3SApple OSS Distributions 91*5e3eaea3SApple OSS Distributions# 92*5e3eaea3SApple OSS Distributions# Install for all architectures for all Configuration/Architecture options 93*5e3eaea3SApple OSS Distributions# 94*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,build_install_primary,$(INST_SUBDIRS),do_build_install_primary,1)) 95*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,build_install_non_primary,$(INST_SUBDIRS),do_build_install_non_primary,1)) 96*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,config_install_primary,$(CONFIG_SUBDIRS),do_config_install_primary,1)) 97*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,config_install_variant,$(CONFIG_SUBDIRS),do_config_install_variant,1)) 98*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,config_install,$(CONFIG_SUBDIRS),do_config_install,1)) 99*5e3eaea3SApple OSS Distributions 100*5e3eaea3SApple OSS Distributions# 101*5e3eaea3SApple OSS Distributions# Install machine independent text files 102*5e3eaea3SApple OSS Distributions# 103*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,textfiles_install_mi,$(INSTTEXTFILES_SUBDIRS),do_textfiles_install_mi,)) 104*5e3eaea3SApple OSS Distributions 105*5e3eaea3SApple OSS Distributions# 106*5e3eaea3SApple OSS Distributions# Install machine dependent text files 107*5e3eaea3SApple OSS Distributions# 108*5e3eaea3SApple OSS Distributions$(eval $(call RECURSIVE_BUILD_RULES_template,textfiles_install_md,$(INSTTEXTFILES_SUBDIRS_$(CURRENT_ARCH_CONFIG)),do_textfiles_install_md,)) 109*5e3eaea3SApple OSS Distributions 110*5e3eaea3SApple OSS Distributions# vim: set ft=make: 111