# compiler-rt Library Info # # This should be included once the subdirectory information has been loaded, and # uses the utilities in 'util.mk'. # # This defines the following variables describing compiler-rt: # AvailableFunctions - The entire list of function names (unmangled) the # library can provide. # CommonFunctions - The list of generic functions available. # ArchFunctions.<arch> - The list of functions commonly available for # 'arch'. This does not include any config specific # functions. # # AvailableIn.<function> - The list of subdir keys where 'function' is # defined. # Determine the set of available modules. AvailableModules := $(sort $(foreach key,$(SubDirKeys),\ $($(key).ModuleName))) # Build a per-module map of subdir keys. $(foreach key,$(SubDirKeys),\ $(call Append,ModuleSubDirKeys.$($(key).ModuleName),$(key))) AvailableArchs := $(sort $(foreach key,$(SubDirKeys),\ $($(key).OnlyArchs))) AvailableFunctions := $(sort $(foreach key,$(SubDirKeys),\ $(basename $($(key).ObjNames)))) CommonFunctions := $(sort\ $(foreach key,$(ModuleSubDirKeys.builtins),\ $(if $(call strneq,,$(strip $($(key).OnlyArchs) $($(key).OnlyConfigs))),,\ $(basename $($(key).ObjNames))))) # Compute common arch functions. $(foreach key,$(ModuleSubDirKeys.builtins),\ $(if $(call strneq,,$($(key).OnlyConfigs)),,\ $(foreach arch,$($(key).OnlyArchs),\ $(call Append,ArchFunctions.$(arch),$(sort \ $(basename $($(key).ObjNames))))))) # Compute arch only functions. $(foreach arch,$(AvailableArchs),\ $(call Set,ArchFunctions.$(arch),$(sort $(ArchFunctions.$(arch))))\ $(call Set,ArchOnlyFunctions.$(arch),\ $(call set_difference,$(ArchFunctions.$(arch)),$(CommonFunctions)))) # Compute lists of where each function is available. $(foreach key,$(SubDirKeys),\ $(foreach fn,$(basename $($(key).ObjNames)),\ $(call Append,AvailableIn.$(fn),$(key)))) # The names of all the available options. AvailableOptions := AR ARFLAGS \ CC CFLAGS FUNCTIONS OPTIMIZED \ RANLIB RANLIBFLAGS \ VISIBILITY_HIDDEN \ KERNEL_USE \ STRIP LIPO