blob: 91ee23b55649c67b21ea7d53ecb5f84954ba116e [file] [log] [blame]
Daniel Dunbar78cfbc52010-01-18 06:48:56 +00001# 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
17AvailableArchs := $(sort $(foreach key,$(SubDirKeys),\
18 $($(key).OnlyArchs)))
19
20AvailableFunctions := $(sort $(foreach key,$(SubDirKeys),\
21 $(basename $($(key).ObjNames))))
22
23CommonFunctions := $(sort\
24 $(foreach key,$(SubDirKeys),\
25 $(if $(call strneq,,$(strip $($(key).OnlyArchs) $($(key).OnlyConfigs))),,\
26 $(basename $($(key).ObjNames)))))
27
28# Compute common arch functions.
29$(foreach key,$(SubDirKeys),\
30 $(if $(call strneq,,$($(key).OnlyConfigs)),,\
31 $(foreach arch,$($(key).OnlyArchs),\
32 $(call Append,ArchFunctions.$(arch),$(sort \
33 $(basename $($(key).ObjNames)))))))
34
35# Compute arch only functions.
36$(foreach arch,$(AvailableArchs),\
37 $(call Set,ArchFunctions.$(arch),$(sort $(ArchFunctions.$(arch))))\
38 $(call Set,ArchOnlyFunctions.$(arch),\
39 $(call set_difference,$(ArchFunctions.$(arch)),$(CommonFunctions))))
40
41# Compute lists of where each function is available.
42$(foreach key,$(SubDirKeys),\
43 $(foreach fn,$(basename $($(key).ObjNames)),\
44 $(call Append,AvailableIn.$(fn),$(key))))
Daniel Dunbar48464e02010-01-18 06:49:33 +000045
46# The names of all the available options.
47AvailableOptions := AR ARFLAGS \
48 CC CFLAGS FUNCTIONS OPTIMIZED \
49 RANLIB RANLIBFLAGS