Makefile revision a6fd8452b557b9bc8350d343da2bea2b0b5dc28a
1b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarSubDirs := lib 2b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 3b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Set default rule before anything else. 448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbarall: help 5b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 6b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarinclude make/config.mk 7b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarinclude make/util.mk 8557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# If SRCROOT is defined, assume we are doing an Apple style build. We should be 9557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# able to use RC_XBS for this but that is unused during "make installsrc". 10b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarifdef SRCROOT 11b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar include make/AppleBI.mk 12b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarendif 13b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 14b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Make sure we don't build with a missing ProjObjRoot. 15b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarifeq ($(ProjObjRoot),) 16b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar$(error Refusing to build with empty ProjObjRoot variable) 17b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarendif 18b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 19b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar############## 20b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 21b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar### 22b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Rules 23b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 24b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar### 25b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Top level targets 26b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 27f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar# FIXME: Document the available subtargets. 28f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbarhelp: 29f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo "usage: make [{VARIABLE=VALUE}*] target" 30f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo 31f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo "User variables:" 32f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo " VERBOSE=1: Use to show all commands [default=0]" 33f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo 34f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo "Available targets:" 3548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " <platform name>: build the libraries for 'platform'" 3648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " clean: clean all configurations" 3748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " test: run unit tests" 3848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo 3948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " info-platforms: list available platforms" 4048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " help-devel: print additional help for developers" 41f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo 42f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar 439edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbarhelp-devel: help 449edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar @echo "Development targets:" 4548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " <platform name>-<config name>:" 4648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " build the libraries for a single platform config" 4748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " <platform name>-<config name>-<arch name>:" 4848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " build the libraries for a single config and arch" 499edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar @echo " info-functions: list available compiler-rt functions" 5048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo " help-hidden: print help for Makefile debugging" 519edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar @echo 529edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar 539edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbarhelp-hidden: help-devel 54f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo "Debugging variables:" 55faf0150036689985ecea64e78f2637093857cd7bDaniel Dunbar @echo " DEBUGMAKE=1: enable some Makefile logging [default=]" 56faf0150036689985ecea64e78f2637093857cd7bDaniel Dunbar @echo " =2: enable more Makefile logging" 57f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo 58f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo "Debugging targets:" 59f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo " make-print-FOO: print information on the variable 'FOO'" 60f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar @echo 61f5722759b8fd2ae65042fe6f87908e3569dbfdf0Daniel Dunbar 629edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbarinfo-functions: 639edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar @echo "compiler-rt Available Functions" 649edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar @echo 659edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar @echo "All Functions: $(AvailableFunctions)" 669edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar @$(foreach fn,$(AvailableFunctions),\ 679edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar printf " %-20s - available in (%s)\n" $(fn)\ 689edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar "$(foreach key,$(AvailableIn.$(fn)),$($(key).Dir))";) 699edf5cdd69d2d2a74b37ec14e475c5d6367e6eecDaniel Dunbar 7048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbarinfo-platforms: 7148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo "compiler-rt Available Platforms" 7248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo 7348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @echo "Platforms:" 7448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar @$(foreach key,$(PlatformKeys),\ 7548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar printf " %s - from '%s'\n" $($(key).Name) $($(key).Path);\ 7648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar printf " %s\n" "$($(key).Description)";\ 7748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar printf " Configurations: %s\n\n" "$($(key).Configs)";) 7848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 79b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Provide default clean target which is extended by other templates. 80b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar.PHONY: clean 81b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarclean:: 82b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 83b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Test 84b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar.PHONY: test 85b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbartest: 86b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar cd test/Unit && ./test 87b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 88b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar### 89b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Directory handling magic. 90b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 91b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Create directories as needed, and timestamp their creation. 92b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar%/.dir: 93b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar $(Summary) " MKDIR: $*" 94b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar $(Verb) $(MKDIR) $* > /dev/null 95b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar $(Verb) $(DATE) > $@ 96b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 97b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Remove directories 98b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar%/.remove: 99b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar $(Verb) $(RM) -r $* 100b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 101b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar### 102b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Include child makefile fragments 103b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar 104faf0150036689985ecea64e78f2637093857cd7bDaniel DunbarDir := . 105faf0150036689985ecea64e78f2637093857cd7bDaniel Dunbarinclude make/subdir.mk 10678cfbc57c62949e16fa7b4a69775aa6450343a00Daniel Dunbarinclude make/lib_info.mk 10778cfbc57c62949e16fa7b4a69775aa6450343a00Daniel Dunbarinclude make/lib_util.mk 10848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbarinclude make/lib_platforms.mk 10948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 11048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar### 11148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Define Platform Rules 11248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 11348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbardefine PerPlatform_template 11448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Key,$(1)) 11548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Name,$($(Tmp.Key).Name)) 11648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Configs,$($(Tmp.Key).Configs)) 11748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)) 11848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 11948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Top-Level Platform Target 12048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(Tmp.Name):: $(Tmp.Configs:%=$(Tmp.ObjPath)/%/libcompiler_rt.a) 12148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar.PHONY: $(Tmp.Name) 12248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 12348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbarclean:: 12448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Verb) rm -rf $(Tmp.ObjPath) 12548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 12648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Per-Config Libraries 12748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(foreach config,$(Tmp.Configs),\ 12848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call PerPlatformConfig_template,$(config))) 12948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbarendef 13048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 13148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbardefine PerPlatformConfig_template 13248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Config,$(1)) 13348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)/$(Tmp.Config)) 13448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 13548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Compute the archs to build, depending on whether this is a universal build or 13648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# not. 13748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.ArchsToBuild,\ 13848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(if $(call IsDefined,$(Tmp.Key).UniversalArchs),\ 13906f38e5fc22bbeadabc1be11eb77f6d27cd3140cDaniel Dunbar $(strip \ 14006f38e5fc22bbeadabc1be11eb77f6d27cd3140cDaniel Dunbar $(or $($(Tmp.Key).UniversalArchs.$(Tmp.Config)),\ 14106f38e5fc22bbeadabc1be11eb77f6d27cd3140cDaniel Dunbar $($(Tmp.Key).UniversalArchs))),\ 14248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call VarOrDefault,$(Tmp.Key).Arch.$(Tmp.Config),$($(Tmp.Key).Arch)))) 14348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 14448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Copy or lipo to create the per-config library. 14548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Inputs,$(Tmp.ArchsToBuild:%=$(Tmp.ObjPath)/%/libcompiler_rt.a)) 14648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(Tmp.ObjPath)/libcompiler_rt.a: $(Tmp.Inputs) $(Tmp.ObjPath)/.dir 14748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Summary) " FINAL-ARCHIVE: $(Tmp.Name)/$(Tmp.Config): $$@" 14848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar -$(Verb) $(RM) $$@ 14948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(if $(call streq,1,$(words $(Tmp.ArchsToBuild))), \ 15048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Verb) $(CP) $(Tmp.Inputs) $$@, \ 15148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Verb) $(LIPO) -create -output $$@ $(Tmp.Inputs)) 15248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar.PRECIOUS: $(Tmp.ObjPath)/.dir 15348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 15448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Per-Config Targets 15548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(Tmp.Name)-$(Tmp.Config):: $(Tmp.ObjPath)/libcompiler_rt.a 15648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar.PHONY: $(Tmp.Name)-$(Tmp.Config) 15748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 15848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Per-Config-Arch Libraries 15948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(foreach arch,$(Tmp.ArchsToBuild),\ 16048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call PerPlatformConfigArch_template,$(arch))) 16148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbarendef 16248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 16348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbardefine PerPlatformConfigArch_template 16448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Arch,$(1)) 16548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch)) 16648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Functions,$(strip \ 167401f693a874c0f2fd9e37173e3ab7045a1bdeb3dDaniel Dunbar $(AlwaysRequiredModules) \ 16848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call GetCNAVar,FUNCTIONS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 16948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Optimized,$(strip \ 17048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call GetCNAVar,OPTIMIZED,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.AR,$(strip \ 17248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call GetCNAVar,AR,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.ARFLAGS,$(strip \ 17448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call GetCNAVar,ARFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.RANLIB,$(strip \ 17648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call GetCNAVar,RANLIB,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.RANLIBFLAGS,$(strip \ 17848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call GetCNAVar,RANLIBFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 18048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Compute the object inputs for this library. 18148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Inputs,\ 18248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(foreach fn,$(sort $(Tmp.Functions)),\ 18348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call Set,Tmp.FnDir,\ 18448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call SelectFunctionDir,$(Tmp.Config),$(Tmp.Arch),$(fn),$(Tmp.Optimized)))\ 18548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Tmp.ObjPath)/$(Tmp.FnDir)/$(fn).o)) 18648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(Tmp.ObjPath)/libcompiler_rt.a: $(Tmp.Inputs) $(Tmp.ObjPath)/.dir 18748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Summary) " ARCHIVE: $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$@" 18848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar -$(Verb) $(RM) $$@ 18948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Verb) $(Tmp.AR) $(Tmp.ARFLAGS) $$@ $(Tmp.Inputs) 19048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Verb) $(Tmp.RANLIB) $(Tmp.RANLIBFLAGS) $$@ 19148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar.PRECIOUS: $(Tmp.ObjPath)/.dir 19248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 19348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Per-Config-Arch Targets 19448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch):: $(Tmp.ObjPath)/libcompiler_rt.a 19548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar.PHONY: $(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch) 19648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 19748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Per-Config-Arch-SubDir Objects 19848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(foreach key,$(SubDirKeys),\ 19948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call PerPlatformConfigArchSubDir_template,$(key))) 20048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbarendef 20148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 20248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbardefine PerPlatformConfigArchSubDir_template 20348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.SubDirKey,$(1)) 20448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.SubDir,$($(Tmp.SubDirKey).Dir)) 20548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.SrcPath,$(ProjSrcRoot)/$(Tmp.SubDir)) 20648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch)/$(Tmp.SubDirKey)) 20748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.Dependencies,$($(Tmp.SubDirKey).Dependencies)) 20848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.CC,$(strip \ 20948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call GetCNAVar,CC,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 210d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar$(call Set,Tmp.KERNEL_USE,$(strip \ 211d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar $(call GetCNAVar,KERNEL_USE,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 212d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar$(call Set,Tmp.VISIBILITY_HIDDEN,$(strip \ 213d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar $(call GetCNAVar,VISIBILITY_HIDDEN,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 21448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(call Set,Tmp.CFLAGS,$(strip \ 2156a571fb3c515c5ea53308ba0eda750e8dd76ef6bDaniel Dunbar $(if $(call IsDefined,$(Tmp.Key).UniversalArchs),-arch $(Tmp.Arch),)\ 216d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar $(if $(call streq,$(Tmp.VISIBILITY_HIDDEN),1),\ 2176a571fb3c515c5ea53308ba0eda750e8dd76ef6bDaniel Dunbar -fvisibility=hidden -DVISIBILITY_HIDDEN,)\ 218d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar $(if $(call streq,$(Tmp.KERNEL_USE),1),\ 219d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar -mkernel -DKERNEL_USE,)\ 22048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(call GetCNAVar,CFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 22148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 22248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.s $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir 22348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Summary) " ASSEMBLE: $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<" 2246a571fb3c515c5ea53308ba0eda750e8dd76ef6bDaniel Dunbar $(Verb) $(Tmp.CC) $(Tmp.CFLAGS) -c -o $$@ $$< 22548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.S $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir 22648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Summary) " ASSEMBLE: $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<" 2276a571fb3c515c5ea53308ba0eda750e8dd76ef6bDaniel Dunbar $(Verb) $(Tmp.CC) $(Tmp.CFLAGS) -c -o $$@ $$< 22848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.c $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir 22948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(Summary) " COMPILE: $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<" 2306a571fb3c515c5ea53308ba0eda750e8dd76ef6bDaniel Dunbar $(Verb) $(Tmp.CC) $(Tmp.CFLAGS) -c -o $$@ $$< 231a6fd8452b557b9bc8350d343da2bea2b0b5dc28aDaniel Dunbar$(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.cc $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir 232a6fd8452b557b9bc8350d343da2bea2b0b5dc28aDaniel Dunbar $(Summary) " COMPILE: $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<" 233a6fd8452b557b9bc8350d343da2bea2b0b5dc28aDaniel Dunbar $(Verb) $(Tmp.CC) $(Tmp.CFLAGS) -c -o $$@ $$< 23448464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar.PRECIOUS: $(Tmp.ObjPath)/.dir 23548464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 23648464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbarendef 23748464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 23848464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar# Run templates. 23948464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar$(foreach key,$(PlatformKeys),\ 24048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar $(eval $(call PerPlatform_template,$(key)))) 24148464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar 24248464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar### 24378cfbc57c62949e16fa7b4a69775aa6450343a00Daniel Dunbar 244faf0150036689985ecea64e78f2637093857cd7bDaniel Dunbarifneq ($(DEBUGMAKE),) 245faf0150036689985ecea64e78f2637093857cd7bDaniel Dunbar $(info MAKE: Done processing Makefile) 246faf0150036689985ecea64e78f2637093857cd7bDaniel Dunbar $(info ) 247faf0150036689985ecea64e78f2637093857cd7bDaniel Dunbarendif 248