177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# compiler-rt Library Info
277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#
377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# This should be included once the subdirectory information has been loaded, and
477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# uses the utilities in 'util.mk'.
577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#
677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# This defines the following variables describing compiler-rt:
777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#   AvailableFunctions   - The entire list of function names (unmangled) the
877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#                          library can provide.
977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#   CommonFunctions      - The list of generic functions available.
1077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#   ArchFunctions.<arch> - The list of functions commonly available for
1177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#                          'arch'. This does not include any config specific
1277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#                          functions.
1377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#
1477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#   AvailableIn.<function> - The list of subdir keys where 'function' is
1577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#                            defined.
1677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
1777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei LiaoAvailableArchs := $(sort $(foreach key,$(SubDirKeys),\
1877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao	$($(key).OnlyArchs)))
1977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
2077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei LiaoAvailableFunctions := $(sort $(foreach key,$(SubDirKeys),\
2177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao	$(basename $($(key).ObjNames))))
2277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
2377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei LiaoCommonFunctions := $(sort\
2477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao  $(foreach key,$(SubDirKeys),\
2577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    $(if $(call strneq,,$(strip $($(key).OnlyArchs) $($(key).OnlyConfigs))),,\
2677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao         $(basename $($(key).ObjNames)))))
2777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
2877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Compute common arch functions.
2977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(foreach key,$(SubDirKeys),\
3077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao  $(if $(call strneq,,$($(key).OnlyConfigs)),,\
3177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    $(foreach arch,$($(key).OnlyArchs),\
3277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao      $(call Append,ArchFunctions.$(arch),$(sort \
3377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao        $(basename $($(key).ObjNames)))))))
3477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
3577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Compute arch only functions.
3677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(foreach arch,$(AvailableArchs),\
3777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao  $(call Set,ArchFunctions.$(arch),$(sort $(ArchFunctions.$(arch))))\
3877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao  $(call Set,ArchOnlyFunctions.$(arch),\
3977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    $(call set_difference,$(ArchFunctions.$(arch)),$(CommonFunctions))))
4077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
4177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# Compute lists of where each function is available.
4277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao$(foreach key,$(SubDirKeys),\
4377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao  $(foreach fn,$(basename $($(key).ObjNames)),\
4477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao    $(call Append,AvailableIn.$(fn),$(key))))
4577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao
4677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao# The names of all the available options.
4777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei LiaoAvailableOptions := AR ARFLAGS \
4877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao                    CC CFLAGS FUNCTIONS OPTIMIZED \
4977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao                    RANLIB RANLIBFLAGS \
5077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao                    VISIBILITY_HIDDEN
51