1 # compiler-rt Library Info 2 # 3 # This should be included once the subdirectory information has been loaded, and 4 # uses the utilities in 'util.mk'. 5 # 6 # This defines the following variables describing compiler-rt: 7 # AvailableFunctions - The entire list of function names (unmangled) the 8 # library can provide. 9 # CommonFunctions - The list of generic functions available. 10 # ArchFunctions.<arch> - The list of functions commonly available for 11 # 'arch'. This does not include any config specific 12 # functions. 13 # 14 # AvailableIn.<function> - The list of subdir keys where 'function' is 15 # defined. 16 17 # Determine the set of available modules. 18 AvailableModules := $(sort $(foreach key,$(SubDirKeys),\ 19 $($(key).ModuleName))) 20 21 # Build a per-module map of subdir keys. 22 $(foreach key,$(SubDirKeys),\ 23 $(call Append,ModuleSubDirKeys.$($(key).ModuleName),$(key))) 24 25 AvailableArchs := $(sort $(foreach key,$(SubDirKeys),\ 26 $($(key).OnlyArchs))) 27 28 AvailableFunctions := $(sort $(foreach key,$(SubDirKeys),\ 29 $(basename $($(key).ObjNames)))) 30 31 CommonFunctions := $(sort\ 32 $(foreach key,$(ModuleSubDirKeys.builtins),\ 33 $(if $(call strneq,,$(strip $($(key).OnlyArchs) $($(key).OnlyConfigs))),,\ 34 $(basename $($(key).ObjNames))))) 35 36 # Compute common arch functions. 37 $(foreach key,$(ModuleSubDirKeys.builtins),\ 38 $(if $(call strneq,,$($(key).OnlyConfigs)),,\ 39 $(foreach arch,$($(key).OnlyArchs),\ 40 $(call Append,ArchFunctions.$(arch),$(sort \ 41 $(basename $($(key).ObjNames))))))) 42 43 # Compute arch only functions. 44 $(foreach arch,$(AvailableArchs),\ 45 $(call Set,ArchFunctions.$(arch),$(sort $(ArchFunctions.$(arch))))\ 46 $(call Set,ArchOnlyFunctions.$(arch),\ 47 $(call set_difference,$(ArchFunctions.$(arch)),$(CommonFunctions)))) 48 49 # Compute lists of where each function is available. 50 $(foreach key,$(SubDirKeys),\ 51 $(foreach fn,$(basename $($(key).ObjNames)),\ 52 $(call Append,AvailableIn.$(fn),$(key)))) 53 54 # The names of all the available options. 55 AvailableOptions := AR ARFLAGS \ 56 CC CFLAGS LDFLAGS FUNCTIONS OPTIMIZED \ 57 RANLIB RANLIBFLAGS \ 58 VISIBILITY_HIDDEN KERNEL_USE \ 59 SHARED_LIBRARY SHARED_LIBRARY_SUFFIX STRIP LIPO DSYMUTIL 60