xref: /freebsd/lib/libcompiler_rt/Makefile.inc (revision b53a8df3aa52edca68051afa9dc295b9067bd6e2)
1040b3049SEd Maste# $FreeBSD$
2040b3049SEd Maste
3040b3049SEd MasteCRTARCH=	${MACHINE_CPUARCH:C/amd64/x86_64/}
4040b3049SEd Maste
5040b3049SEd MasteCRTSRC=		${SRCTOP}/contrib/compiler-rt/lib/builtins
6040b3049SEd Maste
7040b3049SEd Maste.PATH:		${CRTSRC}/${CRTARCH}
8040b3049SEd Maste.PATH:		${CRTSRC}
9040b3049SEd Maste
10040b3049SEd MasteSRCF+=		absvdi2
11040b3049SEd MasteSRCF+=		absvsi2
12040b3049SEd MasteSRCF+=		absvti2
13040b3049SEd MasteSRCF+=		addvdi3
14040b3049SEd MasteSRCF+=		addvsi3
15040b3049SEd MasteSRCF+=		addvti3
16040b3049SEd MasteSRCF+=		apple_versioning
17040b3049SEd MasteSRCF+=		ashldi3
18040b3049SEd MasteSRCF+=		ashlti3
19040b3049SEd MasteSRCF+=		ashrdi3
20040b3049SEd MasteSRCF+=		ashrti3
21040b3049SEd MasteSRCF+=		clear_cache
22040b3049SEd MasteSRCF+=		clzdi2
23040b3049SEd MasteSRCF+=		clzsi2
24040b3049SEd MasteSRCF+=		clzti2
25040b3049SEd MasteSRCF+=		cmpdi2
26040b3049SEd MasteSRCF+=		cmpti2
27040b3049SEd MasteSRCF+=		ctzdi2
28040b3049SEd MasteSRCF+=		ctzsi2
29040b3049SEd MasteSRCF+=		ctzti2
30040b3049SEd MasteSRCF+=		divdc3
31040b3049SEd MasteSRCF+=		divdi3
32040b3049SEd MasteSRCF+=		divmoddi4
33040b3049SEd MasteSRCF+=		divmodsi4
34040b3049SEd MasteSRCF+=		divsc3
35040b3049SEd MasteSRCF+=		divtc3
36040b3049SEd MasteSRCF+=		divti3
37040b3049SEd MasteSRCF+=		divxc3
38040b3049SEd MasteSRCF+=		enable_execute_stack
39040b3049SEd MasteSRCF+=		eprintf
40040b3049SEd MasteSRCF+=		extendhfsf2
41040b3049SEd MasteSRCF+=		ffsdi2
42289fa303SDimitry AndricSRCF+=		ffssi2
43040b3049SEd MasteSRCF+=		ffsti2
44040b3049SEd MasteSRCF+=		fixdfdi
45040b3049SEd MasteSRCF+=		fixdfti
46040b3049SEd MasteSRCF+=		fixsfdi
47040b3049SEd MasteSRCF+=		fixsfti
48040b3049SEd MasteSRCF+=		fixunsdfdi
49040b3049SEd MasteSRCF+=		fixunsdfsi
50040b3049SEd MasteSRCF+=		fixunsdfti
51040b3049SEd MasteSRCF+=		fixunssfdi
52040b3049SEd MasteSRCF+=		fixunssfsi
53040b3049SEd MasteSRCF+=		fixunssfti
54040b3049SEd MasteSRCF+=		fixunsxfdi
55040b3049SEd MasteSRCF+=		fixunsxfsi
56040b3049SEd MasteSRCF+=		fixunsxfti
57040b3049SEd MasteSRCF+=		fixxfdi
58040b3049SEd MasteSRCF+=		fixxfti
59040b3049SEd MasteSRCF+=		floatdidf
60040b3049SEd MasteSRCF+=		floatdisf
61040b3049SEd MasteSRCF+=		floatditf
62040b3049SEd MasteSRCF+=		floatdixf
63040b3049SEd MasteSRCF+=		floatsitf
64040b3049SEd MasteSRCF+=		floattidf
65040b3049SEd MasteSRCF+=		floattisf
66040b3049SEd MasteSRCF+=		floattixf
67040b3049SEd MasteSRCF+=		floatundidf
68040b3049SEd MasteSRCF+=		floatundisf
69040b3049SEd MasteSRCF+=		floatunditf
70040b3049SEd MasteSRCF+=		floatundixf
71040b3049SEd MasteSRCF+=		floatunsidf
72040b3049SEd MasteSRCF+=		floatunsisf
73040b3049SEd MasteSRCF+=		floatuntidf
74040b3049SEd MasteSRCF+=		floatuntisf
75040b3049SEd MasteSRCF+=		floatuntixf
76040b3049SEd MasteSRCF+=		gcc_personality_v0
77040b3049SEd MasteSRCF+=		int_util
78040b3049SEd MasteSRCF+=		lshrdi3
79040b3049SEd MasteSRCF+=		lshrti3
80040b3049SEd MasteSRCF+=		moddi3
81040b3049SEd MasteSRCF+=		modti3
82040b3049SEd MasteSRCF+=		muldc3
83040b3049SEd MasteSRCF+=		muldi3
84040b3049SEd MasteSRCF+=		mulodi4
85040b3049SEd MasteSRCF+=		mulosi4
86040b3049SEd MasteSRCF+=		muloti4
87040b3049SEd MasteSRCF+=		mulsc3
88040b3049SEd MasteSRCF+=		multi3
89040b3049SEd MasteSRCF+=		mulvdi3
90040b3049SEd MasteSRCF+=		mulvsi3
91040b3049SEd MasteSRCF+=		mulvti3
92040b3049SEd MasteSRCF+=		multc3
93040b3049SEd MasteSRCF+=		mulxc3
94040b3049SEd MasteSRCF+=		negdf2
95040b3049SEd MasteSRCF+=		negdi2
96040b3049SEd MasteSRCF+=		negsf2
97040b3049SEd MasteSRCF+=		negti2
98040b3049SEd MasteSRCF+=		negvdi2
99040b3049SEd MasteSRCF+=		negvsi2
100040b3049SEd MasteSRCF+=		negvti2
101040b3049SEd MasteSRCF+=		paritydi2
102040b3049SEd MasteSRCF+=		paritysi2
103040b3049SEd MasteSRCF+=		parityti2
104040b3049SEd MasteSRCF+=		popcountdi2
105040b3049SEd MasteSRCF+=		popcountsi2
106040b3049SEd MasteSRCF+=		popcountti2
107040b3049SEd MasteSRCF+=		powidf2
108040b3049SEd MasteSRCF+=		powisf2
109040b3049SEd MasteSRCF+=		powitf2
110040b3049SEd MasteSRCF+=		powixf2
111040b3049SEd MasteSRCF+=		subvdi3
112040b3049SEd MasteSRCF+=		subvsi3
113040b3049SEd MasteSRCF+=		subvti3
114040b3049SEd MasteSRCF+=		trampoline_setup
115040b3049SEd MasteSRCF+=		truncdfhf2
116040b3049SEd MasteSRCF+=		truncsfhf2
117040b3049SEd MasteSRCF+=		ucmpdi2
118040b3049SEd MasteSRCF+=		ucmpti2
119040b3049SEd MasteSRCF+=		udivdi3
120040b3049SEd MasteSRCF+=		udivmoddi4
121040b3049SEd MasteSRCF+=		udivmodsi4
122040b3049SEd MasteSRCF+=		udivmodti4
123040b3049SEd MasteSRCF+=		udivti3
124040b3049SEd MasteSRCF+=		umoddi3
125040b3049SEd MasteSRCF+=		umodti3
126040b3049SEd Maste
127335bcabeSEd Maste# __cpu_model support, only used on x86
128335bcabeSEd Maste.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
129335bcabeSEd MasteSRCF+=		cpu_model
130335bcabeSEd Maste.endif
131335bcabeSEd Maste
1322ad1d09fSRuslan Bukin#
1332ad1d09fSRuslan Bukin# 128-bit quad precision long double support,
1347804dd52SRuslan Bukin# only used on some architectures.
1352ad1d09fSRuslan Bukin#
1362ad1d09fSRuslan Bukin.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv"
137040b3049SEd MasteSRCF+=		addtf3
138040b3049SEd MasteSRCF+=		comparetf2
139040b3049SEd MasteSRCF+=		divtf3
140040b3049SEd MasteSRCF+=		extenddftf2
141040b3049SEd MasteSRCF+=		extendsftf2
142040b3049SEd MasteSRCF+=		fixtfdi
143040b3049SEd MasteSRCF+=		fixtfsi
144040b3049SEd MasteSRCF+=		fixtfti
145040b3049SEd MasteSRCF+=		fixunstfdi
146040b3049SEd MasteSRCF+=		fixunstfsi
147040b3049SEd MasteSRCF+=		fixunstfti
148040b3049SEd MasteSRCF+=		floatunsitf
149040b3049SEd MasteSRCF+=		multf3
150040b3049SEd MasteSRCF+=		subtf3
151040b3049SEd MasteSRCF+=		trunctfdf2
152040b3049SEd MasteSRCF+=		trunctfsf2
153040b3049SEd Maste.endif
154040b3049SEd Maste
1557804dd52SRuslan Bukin# These are already shipped by libc.a on some architectures.
1567804dd52SRuslan Bukin.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" && \
1577804dd52SRuslan Bukin    ${MACHINE_CPUARCH} != "riscv"
158040b3049SEd MasteSRCF+=		adddf3
159040b3049SEd MasteSRCF+=		addsf3
160040b3049SEd MasteSRCF+=		divdf3
161040b3049SEd MasteSRCF+=		divsf3
162040b3049SEd MasteSRCF+=		extendsfdf2
163040b3049SEd MasteSRCF+=		fixdfsi
164040b3049SEd MasteSRCF+=		fixsfsi
165040b3049SEd MasteSRCF+=		floatsidf
166040b3049SEd MasteSRCF+=		floatsisf
167040b3049SEd MasteSRCF+=		muldf3
168040b3049SEd MasteSRCF+=		mulsf3
169040b3049SEd MasteSRCF+=		subdf3
170040b3049SEd MasteSRCF+=		subsf3
171040b3049SEd MasteSRCF+=		truncdfsf2
172040b3049SEd Maste.endif
173040b3049SEd Maste
174040b3049SEd Maste.if ${MACHINE_CPUARCH} != "arm"
175040b3049SEd MasteSRCF+=		comparedf2
176040b3049SEd MasteSRCF+=		comparesf2
177040b3049SEd Maste.endif
178040b3049SEd Maste
179040b3049SEd Maste.if ${MACHINE_CPUARCH} != "mips"
180040b3049SEd MasteSRCF+=		divsi3
181040b3049SEd MasteSRCF+=		modsi3
182040b3049SEd MasteSRCF+=		udivsi3
183040b3049SEd MasteSRCF+=		umodsi3
184040b3049SEd Maste.endif
185040b3049SEd Maste
186040b3049SEd Maste# FreeBSD-specific atomic intrinsics.
187*b53a8df3SWarner Losh.if ${MACHINE_CPUARCH} == "arm"
188040b3049SEd Maste.PATH:		${SRCTOP}/sys/arm/arm
189040b3049SEd Maste
190040b3049SEd MasteSRCF+=		stdatomic
191040b3049SEd MasteCFLAGS+=	-DEMIT_SYNC_ATOMICS
192040b3049SEd Maste.elif ${MACHINE_CPUARCH} == "mips"
193040b3049SEd Maste.PATH:		${SRCTOP}/sys/mips/mips
194040b3049SEd Maste
195040b3049SEd MasteSRCF+=		stdatomic
196040b3049SEd Maste.endif
197040b3049SEd Maste
198040b3049SEd Maste.for file in ${SRCF}
199040b3049SEd Maste.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \
200040b3049SEd Maste    && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
201040b3049SEd MasteSRCS+=		${file}vfp.S
202040b3049SEd Maste. elif exists(${CRTSRC}/${CRTARCH}/${file}.S)
203040b3049SEd MasteSRCS+=		${file}.S
204040b3049SEd Maste. else
205040b3049SEd MasteSRCS+=		${file}.c
206040b3049SEd Maste. endif
207040b3049SEd Maste.endfor
208040b3049SEd Maste
209040b3049SEd Maste.if ${MACHINE_CPUARCH} == "arm"
210040b3049SEd MasteSRCS+=		aeabi_div0.c
211040b3049SEd MasteSRCS+=		aeabi_idivmod.S
212040b3049SEd MasteSRCS+=		aeabi_ldivmod.S
213040b3049SEd MasteSRCS+=		aeabi_memcmp.S
214040b3049SEd MasteSRCS+=		aeabi_memcpy.S
215040b3049SEd MasteSRCS+=		aeabi_memmove.S
216040b3049SEd MasteSRCS+=		aeabi_memset.S
217040b3049SEd MasteSRCS+=		aeabi_uidivmod.S
218040b3049SEd MasteSRCS+=		aeabi_uldivmod.S
219040b3049SEd MasteSRCS+=		bswapdi2.S
220040b3049SEd MasteSRCS+=		bswapsi2.S
221040b3049SEd MasteSRCS+=		switch16.S
222040b3049SEd MasteSRCS+=		switch32.S
223040b3049SEd MasteSRCS+=		switch8.S
224040b3049SEd MasteSRCS+=		switchu8.S
225040b3049SEd MasteSRCS+=		sync_synchronize.S
226040b3049SEd Maste.endif
22766ed7741SAdrian Chadd
228d9ad2b35SEd Maste# On some archs GCC-6.3 requires bswap32 built-in.
229d9ad2b35SEd Maste.if ${MACHINE_CPUARCH} == "mips" || ${MACHINE_CPUARCH} == "sparc64"
23066ed7741SAdrian ChaddSRCS+=		bswapdi2.c
23166ed7741SAdrian ChaddSRCS+=		bswapsi2.c
23266ed7741SAdrian Chadd.endif
233