177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei LiaoSubDirs := lib 277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Set default rule before anything else. 477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoall: help 577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoinclude make/config.mk 777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoinclude make/util.mk 877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# If SRCROOT is defined, assume we are doing an Apple style build. We should be 977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# able to use RC_XBS for this but that is unused during "make installsrc". 1077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoifdef SRCROOT 1177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao include make/AppleBI.mk 1277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoendif 1377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Make sure we don't build with a missing ProjObjRoot. 1577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoifeq ($(ProjObjRoot),) 1677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(error Refusing to build with empty ProjObjRoot variable) 1777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoendif 1877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao############## 2077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao### 2277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Rules 2377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao### 2577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Top level targets 2677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# FIXME: Document the available subtargets. 2877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaohelp: 2977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "usage: make [{VARIABLE=VALUE}*] target" 3077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo 3177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "User variables:" 3277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " VERBOSE=1: Use to show all commands [default=0]" 3377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo 3477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "Available targets:" 3577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " <platform name>: build the libraries for 'platform'" 3677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " clean: clean all configurations" 3777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " test: run unit tests" 3877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo 3977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " info-platforms: list available platforms" 4077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " help-devel: print additional help for developers" 4177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo 4277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 4377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaohelp-devel: help 4477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "Development targets:" 4577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " <platform name>-<config name>:" 4677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " build the libraries for a single platform config" 4777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " <platform name>-<config name>-<arch name>:" 4877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " build the libraries for a single config and arch" 4977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " info-functions: list available compiler-rt functions" 5077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " help-hidden: print help for Makefile debugging" 5177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo 5277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 5377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaohelp-hidden: help-devel 5477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "Debugging variables:" 5577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " DEBUGMAKE=1: enable some Makefile logging [default=]" 5677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " =2: enable more Makefile logging" 5777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo 5877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "Debugging targets:" 5977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo " make-print-FOO: print information on the variable 'FOO'" 6077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo 6177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 6277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoinfo-functions: 6377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "compiler-rt Available Functions" 6477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo 6577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "All Functions: $(AvailableFunctions)" 6677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @$(foreach fn,$(AvailableFunctions),\ 6777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf " %-20s - available in (%s)\n" $(fn)\ 6877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao "$(foreach key,$(AvailableIn.$(fn)),$($(key).Dir))";) 6977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 7077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoinfo-platforms: 7177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "compiler-rt Available Platforms" 7277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo 7377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @echo "Platforms:" 7477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao @$(foreach key,$(PlatformKeys),\ 7577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf " %s - from '%s'\n" $($(key).Name) $($(key).Path);\ 7677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf " %s\n" "$($(key).Description)";\ 7777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao printf " Configurations: %s\n\n" "$($(key).Configs)";) 7877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 7977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Provide default clean target which is extended by other templates. 8077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao.PHONY: clean 8177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoclean:: 8277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 8377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Test 8477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao.PHONY: test 8577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaotest: 8677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao cd test/Unit && ./test 8777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 8877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao### 8977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Directory handling magic. 9077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 9177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Create directories as needed, and timestamp their creation. 9277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao%/.dir: 9377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Summary) " MKDIR: $*" 9477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(MKDIR) $* > /dev/null 9577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(DATE) > $@ 9677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 9777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Remove directories 9877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao%/.remove: 9977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(RM) -r $* 10077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 10177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao### 10277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Include child makefile fragments 10377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 10477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei LiaoDir := . 10577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoinclude make/subdir.mk 10677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoinclude make/lib_info.mk 10777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoinclude make/lib_util.mk 10877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoinclude make/lib_platforms.mk 10977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 11077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao### 11177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Define Platform Rules 11277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 11377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaodefine PerPlatform_template 11477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Key,$(1)) 11577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Name,$($(Tmp.Key).Name)) 11677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Configs,$($(Tmp.Key).Configs)) 11777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)) 11877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 11977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Top-Level Platform Target 12077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(Tmp.Name):: $(Tmp.Configs:%=$(Tmp.ObjPath)/%/libcompiler_rt.a) 12177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao.PHONY: $(Tmp.Name) 12277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 12377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoclean:: 12477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) rm -rf $(Tmp.ObjPath) 12577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 12677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Per-Config Libraries 12777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(foreach config,$(Tmp.Configs),\ 12877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call PerPlatformConfig_template,$(config))) 12977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoendef 13077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 13177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaodefine PerPlatformConfig_template 13277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Config,$(1)) 13377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)/$(Tmp.Config)) 13477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 13577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Compute the archs to build, depending on whether this is a universal build or 13677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# not. 13777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.ArchsToBuild,\ 13877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(if $(call IsDefined,$(Tmp.Key).UniversalArchs),\ 13977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(strip \ 14077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(or $($(Tmp.Key).UniversalArchs.$(Tmp.Config)),\ 14177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $($(Tmp.Key).UniversalArchs))),\ 14277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call VarOrDefault,$(Tmp.Key).Arch.$(Tmp.Config),$($(Tmp.Key).Arch)))) 14377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 14477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Copy or lipo to create the per-config library. 14577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Inputs,$(Tmp.ArchsToBuild:%=$(Tmp.ObjPath)/%/libcompiler_rt.a)) 14677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(Tmp.ObjPath)/libcompiler_rt.a: $(Tmp.Inputs) $(Tmp.ObjPath)/.dir 14777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Summary) " FINAL-ARCHIVE: $(Tmp.Name)/$(Tmp.Config): $$@" 14877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao -$(Verb) $(RM) $$@ 14977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(if $(call streq,1,$(words $(Tmp.ArchsToBuild))), \ 15077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(CP) $(Tmp.Inputs) $$@, \ 15177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(LIPO) -create -output $$@ $(Tmp.Inputs)) 15277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao.PRECIOUS: $(Tmp.ObjPath)/.dir 15377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 15477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Per-Config Targets 15577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(Tmp.Name)-$(Tmp.Config):: $(Tmp.ObjPath)/libcompiler_rt.a 15677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao.PHONY: $(Tmp.Name)-$(Tmp.Config) 15777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 15877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Per-Config-Arch Libraries 15977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(foreach arch,$(Tmp.ArchsToBuild),\ 16077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call PerPlatformConfigArch_template,$(arch))) 16177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoendef 16277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 16377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaodefine PerPlatformConfigArch_template 16477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Arch,$(1)) 16577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch)) 16677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Functions,$(strip \ 16777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call GetCNAVar,FUNCTIONS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 16877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Optimized,$(strip \ 16977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call GetCNAVar,OPTIMIZED,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.AR,$(strip \ 17177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call GetCNAVar,AR,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.ARFLAGS,$(strip \ 17377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call GetCNAVar,ARFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.RANLIB,$(strip \ 17577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call GetCNAVar,RANLIB,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.RANLIBFLAGS,$(strip \ 17777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call GetCNAVar,RANLIBFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 17877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 17977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Compute the object inputs for this library. 18077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Inputs,\ 18177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(foreach fn,$(sort $(Tmp.Functions)),\ 18277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call Set,Tmp.FnDir,\ 18377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call SelectFunctionDir,$(Tmp.Config),$(Tmp.Arch),$(fn),$(Tmp.Optimized)))\ 18477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Tmp.ObjPath)/$(Tmp.FnDir)/$(fn).o)) 18577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(Tmp.ObjPath)/libcompiler_rt.a: $(Tmp.Inputs) $(Tmp.ObjPath)/.dir 18677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Summary) " ARCHIVE: $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$@" 18777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao -$(Verb) $(RM) $$@ 18877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(Tmp.AR) $(Tmp.ARFLAGS) $$@ $(Tmp.Inputs) 18977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(Tmp.RANLIB) $(Tmp.RANLIBFLAGS) $$@ 19077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao.PRECIOUS: $(Tmp.ObjPath)/.dir 19177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 19277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Per-Config-Arch Targets 19377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch):: $(Tmp.ObjPath)/libcompiler_rt.a 19477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao.PHONY: $(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch) 19577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 19677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Per-Config-Arch-SubDir Objects 19777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(foreach key,$(SubDirKeys),\ 19877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call PerPlatformConfigArchSubDir_template,$(key))) 19977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoendef 20077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 20177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaodefine PerPlatformConfigArchSubDir_template 20277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.SubDirKey,$(1)) 20377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.SubDir,$($(Tmp.SubDirKey).Dir)) 20477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.SrcPath,$(ProjSrcRoot)/$(Tmp.SubDir)) 20577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch)/$(Tmp.SubDirKey)) 20677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.Dependencies,$($(Tmp.SubDirKey).Dependencies)) 20777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.CC,$(strip \ 20877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call GetCNAVar,CC,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 20977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(call Set,Tmp.CFLAGS,$(strip \ 21077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(if $(call IsDefined,$(Tmp.Key).UniversalArchs),-arch $(Tmp.Arch),)\ 21177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(if $(call streq,$($(Tmp.Key).VISIBILITY_HIDDEN),1),\ 21277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao -fvisibility=hidden -DVISIBILITY_HIDDEN,)\ 21377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(call GetCNAVar,CFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch)))) 21477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 21577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.s $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir 21677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Summary) " ASSEMBLE: $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<" 21777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(Tmp.CC) $(Tmp.CFLAGS) -c -o $$@ $$< 21877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.S $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir 21977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Summary) " ASSEMBLE: $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<" 22077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(Tmp.CC) $(Tmp.CFLAGS) -c -o $$@ $$< 22177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(Tmp.ObjPath)/%.o: $(Tmp.SrcPath)/%.c $(Tmp.Dependencies) $(Tmp.ObjPath)/.dir 22277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Summary) " COMPILE: $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$<" 22377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(Verb) $(Tmp.CC) $(Tmp.CFLAGS) -c -o $$@ $$< 22477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao.PRECIOUS: $(Tmp.ObjPath)/.dir 22577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 22677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoendef 22777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 22877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Run templates. 22977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(foreach key,$(PlatformKeys),\ 23077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(eval $(call PerPlatform_template,$(key)))) 23177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 23277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao### 23377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 23477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoifneq ($(DEBUGMAKE),) 23577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(info MAKE: Done processing Makefile) 23677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao $(info ) 23777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liaoendif 238