clang_darwin.mk revision 96051e1bd0e4c60a65e8c059a719a4a72b229247
18b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# These are the functions which clang needs when it is targetting a previous
28b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# version of the OS. The issue is that the backend may use functions which were
38b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# not present in the libgcc that shipped on the platform. In such cases, we link
48b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# with a version of the library which contains private_extern definitions of all
58b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar# the extra functions which might be referenced.
68b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
78b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarDescription := Static runtime libraries for clang/Darwin.
88b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
92f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher# A function that ensures we don't try to build for architectures that we
102f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher# don't have working toolchains for.
112f5efb0238df99509fb8dd53d218065abd8dff8bEric ChristopherCheckArches = \
122f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher  $(shell \
132f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    result=""; \
142f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    for arch in $(1); do \
1596051e1bd0e4c60a65e8c059a719a4a72b229247Daniel Dunbar      if $(CC) -arch $$arch -dumpversion > /dev/null; then \
1696051e1bd0e4c60a65e8c059a719a4a72b229247Daniel Dunbar        result="$$result$$arch "; \
1796051e1bd0e4c60a65e8c059a719a4a72b229247Daniel Dunbar      fi; \
182f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    done; \
192f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher    echo $$result)
202f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher
212f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher###
222f5efb0238df99509fb8dd53d218065abd8dff8bEric Christopher
234a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel DunbarConfigs :=
248b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarUniversalArchs :=
258b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
26ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar# Configuration solely for providing access to an eprintf symbol, which may
27ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar# still be referenced from Darwin system headers. This symbol is only ever
28ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar# needed on i386.
29ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel DunbarConfigs += eprintf
302f5efb0238df99509fb8dd53d218065abd8dff8bEric ChristopherUniversalArchs.eprintf := $(call CheckArches,i386)
31ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel Dunbar
324a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel Dunbar# Configuration for targetting 10.4. We need a few functions missing from
334a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel Dunbar# libgcc_s.10.4.dylib. We only build x86 slices since clang doesn't really
344a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel Dunbar# support targetting PowerPC.
354a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel DunbarConfigs += 10.4
362f5efb0238df99509fb8dd53d218065abd8dff8bEric ChristopherUniversalArchs.10.4 := $(call CheckArches,i386 x86_64)
378b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
38d0dbbc4c9ac73e7a7de8a90408a4982819e1811bDaniel Dunbar# Configuration for targetting iOS, for some ARMv6 functions, which must be
39d0dbbc4c9ac73e7a7de8a90408a4982819e1811bDaniel Dunbar# in the same linkage unit, and for a couple of other functions that didn't
40d0dbbc4c9ac73e7a7de8a90408a4982819e1811bDaniel Dunbar# make it into libSystem.
41d0dbbc4c9ac73e7a7de8a90408a4982819e1811bDaniel DunbarConfigs += ios
422f5efb0238df99509fb8dd53d218065abd8dff8bEric ChristopherUniversalArchs.ios := $(call CheckArches,i386 x86_64 armv6 armv7)
438b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
44b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar# Configuration for use with kernel/kexts.
45b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarConfigs += cc_kext
462f5efb0238df99509fb8dd53d218065abd8dff8bEric ChristopherUniversalArchs.cc_kext := $(call CheckArches,armv6 armv7 i386 x86_64)
47b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
48b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar###
49b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
508b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarCC := gcc
518b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
52d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbar# Forcibly strip off any -arch, as that totally breaks our universal support.
53d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbaroverride CC := $(subst -arch ,-arch_,$(CC))
54d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbaroverride CC := $(patsubst -arch_%,,$(CC))
55d5feee3db8cf84a5789b728e223988f207b5ecbbDaniel Dunbar
56e512f7ffd8b7e6636b4a5cb66b2968b2c3608ff5Daniel DunbarCFLAGS := -Wall -Werror -O3 -fomit-frame-pointer
578b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
5856026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# Always set deployment target arguments for every build, these libraries should
5956026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# never depend on the environmental overrides. We simply set them to minimum
6056026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# supported deployment target -- nothing in the compiler-rt libraries should
6156026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# actually depend on the deployment target.
6256026be8c0582ae073c46b47b81856fb425bf977Daniel DunbarX86_DEPLOYMENT_ARGS := -mmacosx-version-min=10.4
6356026be8c0582ae073c46b47b81856fb425bf977Daniel DunbarARM_DEPLOYMENT_ARGS := -miphoneos-version-min=1.0
6456026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar
6556026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar# If an explicit ARM_SDK build variable is set, use that as the isysroot.
6656026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbarifneq ($(ARM_SDK),)
6756026be8c0582ae073c46b47b81856fb425bf977Daniel DunbarARM_DEPLOYMENT_ARGS += -isysroot $(ARM_SDK)
6856026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbarendif
6956026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar
7056026be8c0582ae073c46b47b81856fb425bf977Daniel DunbarCFLAGS.eprintf		:= $(CFLAGS) $(X86_DEPLOYMENT_ARGS)
7156026be8c0582ae073c46b47b81856fb425bf977Daniel DunbarCFLAGS.10.4		:= $(CFLAGS) $(X86_DEPLOYMENT_ARGS)
72a14b7219a3fbfa3ca0d699db0919f51a762689e2Daniel DunbarCFLAGS.ios.i386		:= $(CFLAGS) $(X86_DEPLOYMENT_ARGS)
73a14b7219a3fbfa3ca0d699db0919f51a762689e2Daniel DunbarCFLAGS.ios.x86_64	:= $(CFLAGS) $(X86_DEPLOYMENT_ARGS)
74a14b7219a3fbfa3ca0d699db0919f51a762689e2Daniel DunbarCFLAGS.ios.armv6	:= $(CFLAGS) $(ARM_DEPLOYMENT_ARGS)
75a14b7219a3fbfa3ca0d699db0919f51a762689e2Daniel DunbarCFLAGS.ios.armv7	:= $(CFLAGS) $(ARM_DEPLOYMENT_ARGS)
7656026be8c0582ae073c46b47b81856fb425bf977Daniel DunbarCFLAGS.cc_kext.i386	:= $(CFLAGS) $(X86_DEPLOYMENT_ARGS)
7756026be8c0582ae073c46b47b81856fb425bf977Daniel DunbarCFLAGS.cc_kext.x86_64	:= $(CFLAGS) $(X86_DEPLOYMENT_ARGS)
7856026be8c0582ae073c46b47b81856fb425bf977Daniel DunbarCFLAGS.cc_kext.armv6	:= $(CFLAGS) $(ARM_DEPLOYMENT_ARGS) -mthumb
7956026be8c0582ae073c46b47b81856fb425bf977Daniel DunbarCFLAGS.cc_kext.armv7	:= $(CFLAGS) $(ARM_DEPLOYMENT_ARGS) -mthumb
8056026be8c0582ae073c46b47b81856fb425bf977Daniel Dunbar
81ab94fd371211921be9ee3b3c7f9a817bddaff3e3Daniel DunbarFUNCTIONS.eprintf := eprintf
824a32c6e4fdcefa55602615c8fdb756af613a2a8eDaniel DunbarFUNCTIONS.10.4 := eprintf floatundidf floatundisf floatundixf
83d0dbbc4c9ac73e7a7de8a90408a4982819e1811bDaniel Dunbar
84a14b7219a3fbfa3ca0d699db0919f51a762689e2Daniel DunbarFUNCTIONS.ios	    := divmodsi4 udivmodsi4
85187b4b5773107cdc8bb5c1d122ecf9c603fd6cedDaniel Dunbar# On x86, the divmod functions reference divsi.
86187b4b5773107cdc8bb5c1d122ecf9c603fd6cedDaniel DunbarFUNCTIONS.ios.i386   := $(FUNCTIONS.ios) \
87187b4b5773107cdc8bb5c1d122ecf9c603fd6cedDaniel Dunbar                        divsi3 udivsi3
88187b4b5773107cdc8bb5c1d122ecf9c603fd6cedDaniel DunbarFUNCTIONS.ios.x86_64 := $(FUNCTIONS.ios) \
89187b4b5773107cdc8bb5c1d122ecf9c603fd6cedDaniel Dunbar                        divsi3 udivsi3
90a14b7219a3fbfa3ca0d699db0919f51a762689e2Daniel DunbarFUNCTIONS.ios.armv6 := $(FUNCTIONS.ios) \
913d8090e3400bcedb99e7b5b2471d53d9c7d74e8aEric Christopher                       sync_synchronize \
92d0dbbc4c9ac73e7a7de8a90408a4982819e1811bDaniel Dunbar                       switch16 switch32 switch8 switchu8 \
93d0dbbc4c9ac73e7a7de8a90408a4982819e1811bDaniel Dunbar                       save_vfp_d8_d15_regs restore_vfp_d8_d15_regs
948b790353436e0815e6b94a018c6e6b314cba9042Daniel Dunbar
95b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarCCKEXT_COMMON_FUNCTIONS := \
96b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	absvdi2 \
97b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	absvsi2 \
98b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addvdi3 \
99b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addvsi3 \
100b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashldi3 \
101b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashrdi3 \
102b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	bswapdi2 \
103b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	bswapsi2 \
104b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	clzdi2 \
105b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	clzsi2 \
106b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpdi2 \
107b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ctzdi2 \
108b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ctzsi2 \
109b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divdc3 \
110b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divdi3 \
111b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divsc3 \
1124c45b931fde3005c8b253ebf7e18035b88e05f52Daniel Dunbar	divmodsi4 \
1134c45b931fde3005c8b253ebf7e18035b88e05f52Daniel Dunbar	udivmodsi4 \
114b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	do_global_dtors \
115b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	eprintf \
116b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffsdi2 \
117b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixdfdi \
118b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixsfdi \
119b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsdfdi \
120b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsdfsi \
121b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunssfdi \
122b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunssfsi \
123b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatdidf \
124b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatdisf \
125b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatundidf \
126b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatundisf \
127b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	gcc_bcmp \
128b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	lshrdi3 \
129b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	moddi3 \
130b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	muldc3 \
131b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	muldi3 \
132b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulsc3 \
133b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulvdi3 \
134b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulvsi3 \
135b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negdi2 \
136b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negvdi2 \
137b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negvsi2 \
138b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	paritydi2 \
139b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	paritysi2 \
140b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	popcountdi2 \
141b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	popcountsi2 \
142b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	powidf2 \
143b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	powisf2 \
144b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subvdi3 \
145b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subvsi3 \
146b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ucmpdi2 \
147b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udiv_w_sdiv \
148b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivdi3 \
149b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivmoddi4 \
150b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	umoddi3
151b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
152ed9b014382e7af5d62358dd7cddc58598b050fd5Daniel DunbarCCKEXT_ARM_FUNCTIONS := $(CCKEXT_COMMON_FUNCTIONS) \
153b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	adddf3 \
154b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addsf3 \
155b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cdcmpeq \
156b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cdrcmple \
157b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cfcmpeq \
158b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cfrcmple \
159b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpeq \
160b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpge \
161b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpgt \
162b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmple \
163b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmplt \
164b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_drsub \
165b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpeq \
166b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpge \
167b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpgt \
168b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmple \
169b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmplt \
170b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_frsub \
171b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_idivmod \
172b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_uidivmod \
173b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpdf2 \
174b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpsf2 \
175b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	div0 \
176b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divdf3 \
177b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divsf3 \
178b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divsi3 \
179b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	extendsfdf2 \
180b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffssi2 \
181b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixdfsi \
182b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixsfsi \
183b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatsidf \
184b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatsisf \
185b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatunsidf \
186b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatunsisf \
187358b3fd9c3fbdba1e0b8f5ed2aa4a4bfe62375ebDaniel Dunbar	comparedf2 \
188358b3fd9c3fbdba1e0b8f5ed2aa4a4bfe62375ebDaniel Dunbar	comparesf2 \
189b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	modsi3 \
190b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	muldf3 \
191b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulsf3 \
192b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negdf2 \
193b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negsf2 \
194b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subdf3 \
195b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subsf3 \
196b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switch16 \
197b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switch32 \
198b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switch8 \
199b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	switchu8 \
200b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	truncdfsf2 \
201b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivsi3 \
202b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	umodsi3 \
203b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	unorddf2 \
204b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	unordsf2
205b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
206b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.armv6 := $(CCKEXT_ARM_FUNCTIONS)
207b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.armv7 := $(CCKEXT_ARM_FUNCTIONS)
208b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
209b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarCCKEXT_X86_FUNCTIONS := $(CCKEXT_COMMON_FUNCTIONS) \
210b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divxc3 \
211b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsxfdi \
212b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsxfsi \
213b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixxfdi \
214b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatdixf \
215b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatundixf \
216b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulxc3 \
217b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	powixf2
218b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
219b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.i386 := $(CCKEXT_X86_FUNCTIONS) \
220b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffssi2 \
221b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.eax \
222b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ebp \
223b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ebx \
224b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ecx \
225b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.edi \
226b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.edx \
227b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.esi
228b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
229b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.x86_64 := $(CCKEXT_X86_FUNCTIONS) \
230b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	absvti2 \
231b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	addvti3 \
232b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashlti3 \
233b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ashrti3 \
234b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	clzti2 \
235b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	cmpti2 \
236b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ctzti2 \
237b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	divti3 \
238b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ffsti2 \
239b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixdfti \
240b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixsfti \
241b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsdfti \
242b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunssfti \
243b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixunsxfti \
244b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	fixxfti \
245b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floattidf \
246b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floattisf \
247b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floattixf \
248b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatuntidf \
249b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatuntisf \
250b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	floatuntixf \
251b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	lshrti3 \
252b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	modti3 \
253b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	multi3 \
254b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	mulvti3 \
255b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negti2 \
256b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	negvti2 \
257b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	parityti2 \
258b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	popcountti2 \
259b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	subvti3 \
260b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	ucmpti2 \
261b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivmodti4 \
262b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	udivti3 \
263b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	umodti3
264b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
265b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar# FIXME: Currently, compiler-rt is missing implementations for a number of the
266b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar# functions that need to go into libcc_kext.a. Filter them out for now.
267b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarCCKEXT_MISSING_FUNCTIONS := \
268f442f2622541ce54aea208fbe2ea5b79a104a481Daniel Dunbar	cmpdf2 cmpsf2 div0 \
269f442f2622541ce54aea208fbe2ea5b79a104a481Daniel Dunbar	ffssi2 \
270ce750fdaab5c9c1d013817ad949c9109eb3f2af2Daniel Dunbar	udiv_w_sdiv unorddf2 unordsf2 bswapdi2 \
271b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	bswapsi2 \
272b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	gcc_bcmp \
273b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	do_global_dtors \
274b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.eax i686.get_pc_thunk.ebp i686.get_pc_thunk.ebx \
275b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.ecx i686.get_pc_thunk.edi i686.get_pc_thunk.edx \
276b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	i686.get_pc_thunk.esi \
277b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_cdcmpeq aeabi_cdrcmple aeabi_cfcmpeq aeabi_cfrcmple aeabi_dcmpeq \
278b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_dcmpge aeabi_dcmpgt aeabi_dcmple aeabi_dcmplt aeabi_drsub aeabi_fcmpeq \
279b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_fcmpge aeabi_fcmpgt aeabi_fcmple aeabi_fcmplt aeabi_frsub aeabi_idivmod \
280b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	aeabi_uidivmod
281b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
282b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.armv6 := \
283b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.armv6))
284b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.armv7 := \
285b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.armv7))
286b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.i386 := \
287b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.i386))
288b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel DunbarFUNCTIONS.cc_kext.x86_64 := \
289b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar	$(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.x86_64))
290b0be8f126f939dc6c7fdcb2489926556e62ed86dDaniel Dunbar
291d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel DunbarKERNEL_USE.cc_kext := 1
292d3d22631ca0b314f0564a9bcfe96dd2d6ca85fa6Daniel Dunbar
2938b790353436e0815e6b94a018c6e6b314cba9042Daniel DunbarVISIBILITY_HIDDEN := 1
294