xref: /freebsd/lib/libcompiler_rt/Makefile.inc (revision 8657387683946d0c03e09fe77029edfe309eeb20)
1# $FreeBSD$
2
3CRTARCH=	${MACHINE_CPUARCH:C/amd64/x86_64/}
4
5CRTSRC=		${SRCTOP}/contrib/compiler-rt/lib/builtins
6
7.PATH:		${CRTSRC}/${CRTARCH}
8.PATH:		${CRTSRC}
9
10SRCF+=		absvdi2
11SRCF+=		absvsi2
12SRCF+=		absvti2
13SRCF+=		addvdi3
14SRCF+=		addvsi3
15SRCF+=		addvti3
16SRCF+=		apple_versioning
17SRCF+=		ashldi3
18SRCF+=		ashlti3
19SRCF+=		ashrdi3
20SRCF+=		ashrti3
21SRCF+=		clear_cache
22SRCF+=		clzdi2
23SRCF+=		clzsi2
24SRCF+=		clzti2
25SRCF+=		cmpdi2
26SRCF+=		cmpti2
27SRCF+=		ctzdi2
28SRCF+=		ctzsi2
29SRCF+=		ctzti2
30SRCF+=		divdc3
31SRCF+=		divdi3
32SRCF+=		divmoddi4
33SRCF+=		divmodsi4
34SRCF+=		divsc3
35SRCF+=		divsi3
36SRCF+=		divtc3
37SRCF+=		divti3
38SRCF+=		divxc3
39SRCF+=		enable_execute_stack
40SRCF+=		eprintf
41SRCF+=		extendhfsf2
42SRCF+=		ffsdi2
43SRCF+=		ffssi2
44SRCF+=		ffsti2
45SRCF+=		fixdfdi
46SRCF+=		fixdfti
47SRCF+=		fixsfdi
48SRCF+=		fixsfti
49SRCF+=		fixunsdfdi
50SRCF+=		fixunsdfsi
51SRCF+=		fixunsdfti
52SRCF+=		fixunssfdi
53SRCF+=		fixunssfsi
54SRCF+=		fixunssfti
55SRCF+=		fixunsxfdi
56SRCF+=		fixunsxfsi
57SRCF+=		fixunsxfti
58SRCF+=		fixxfdi
59SRCF+=		fixxfti
60SRCF+=		floatdidf
61SRCF+=		floatdisf
62SRCF+=		floatditf
63SRCF+=		floatdixf
64SRCF+=		floatsitf
65SRCF+=		floattidf
66SRCF+=		floattisf
67SRCF+=		floattixf
68SRCF+=		floatundidf
69SRCF+=		floatundisf
70SRCF+=		floatunditf
71SRCF+=		floatundixf
72SRCF+=		floatunsidf
73SRCF+=		floatunsisf
74SRCF+=		floatuntidf
75SRCF+=		floatuntisf
76SRCF+=		floatuntixf
77SRCF+=		gcc_personality_v0
78SRCF+=		int_util
79SRCF+=		lshrdi3
80SRCF+=		lshrti3
81SRCF+=		moddi3
82SRCF+=		modsi3
83SRCF+=		modti3
84SRCF+=		muldc3
85SRCF+=		muldi3
86SRCF+=		mulodi4
87SRCF+=		mulosi4
88SRCF+=		muloti4
89SRCF+=		mulsc3
90SRCF+=		multi3
91SRCF+=		mulvdi3
92SRCF+=		mulvsi3
93SRCF+=		mulvti3
94SRCF+=		multc3
95SRCF+=		mulxc3
96SRCF+=		negdf2
97SRCF+=		negdi2
98SRCF+=		negsf2
99SRCF+=		negti2
100SRCF+=		negvdi2
101SRCF+=		negvsi2
102SRCF+=		negvti2
103SRCF+=		paritydi2
104SRCF+=		paritysi2
105SRCF+=		parityti2
106SRCF+=		popcountdi2
107SRCF+=		popcountsi2
108SRCF+=		popcountti2
109SRCF+=		powidf2
110SRCF+=		powisf2
111SRCF+=		powitf2
112SRCF+=		powixf2
113SRCF+=		subvdi3
114SRCF+=		subvsi3
115SRCF+=		subvti3
116SRCF+=		trampoline_setup
117SRCF+=		truncdfhf2
118SRCF+=		truncsfhf2
119SRCF+=		ucmpdi2
120SRCF+=		ucmpti2
121SRCF+=		udivdi3
122SRCF+=		udivmoddi4
123SRCF+=		udivmodsi4
124SRCF+=		udivmodti4
125SRCF+=		udivsi3
126SRCF+=		udivti3
127SRCF+=		umoddi3
128SRCF+=		umodsi3
129SRCF+=		umodti3
130
131# __cpu_model support, only used on x86
132.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
133SRCF+=		cpu_model
134.endif
135
136#
137# 128-bit quad precision long double support,
138# only used on some architectures.
139#
140.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv"
141SRCF+=		addtf3
142SRCF+=		comparetf2
143SRCF+=		divtf3
144SRCF+=		extenddftf2
145SRCF+=		extendsftf2
146SRCF+=		fixtfdi
147SRCF+=		fixtfsi
148SRCF+=		fixtfti
149SRCF+=		fixunstfdi
150SRCF+=		fixunstfsi
151SRCF+=		fixunstfti
152SRCF+=		floatunsitf
153SRCF+=		multf3
154SRCF+=		subtf3
155SRCF+=		trunctfdf2
156SRCF+=		trunctfsf2
157.endif
158
159# These are already shipped by libc.a on some architectures.
160.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" && \
161    ${MACHINE_CPUARCH} != "riscv"
162SRCF+=		adddf3
163SRCF+=		addsf3
164SRCF+=		divdf3
165SRCF+=		divsf3
166SRCF+=		extendsfdf2
167SRCF+=		fixdfsi
168SRCF+=		fixsfsi
169SRCF+=		floatsidf
170SRCF+=		floatsisf
171SRCF+=		muldf3
172SRCF+=		mulsf3
173SRCF+=		subdf3
174SRCF+=		subsf3
175SRCF+=		truncdfsf2
176.endif
177
178.if ${MACHINE_CPUARCH} != "arm"
179SRCF+=		comparedf2
180SRCF+=		comparesf2
181.endif
182
183# FreeBSD-specific atomic intrinsics.
184.if ${MACHINE_CPUARCH} == "arm"
185.PATH:		${SRCTOP}/sys/arm/arm
186
187SRCF+=		stdatomic
188CFLAGS+=	-DEMIT_SYNC_ATOMICS
189.elif ${MACHINE_CPUARCH} == "mips"
190.PATH:		${SRCTOP}/sys/mips/mips
191
192SRCF+=		stdatomic
193.endif
194
195.for file in ${SRCF}
196.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \
197    && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
198SRCS+=		${file}vfp.S
199. elif exists(${CRTSRC}/${CRTARCH}/${file}.S)
200SRCS+=		${file}.S
201. else
202SRCS+=		${file}.c
203. endif
204.endfor
205
206.if ${MACHINE_CPUARCH} == "arm"
207SRCS+=		aeabi_div0.c
208SRCS+=		aeabi_idivmod.S
209SRCS+=		aeabi_ldivmod.S
210SRCS+=		aeabi_memcmp.S
211SRCS+=		aeabi_memcpy.S
212SRCS+=		aeabi_memmove.S
213SRCS+=		aeabi_memset.S
214SRCS+=		aeabi_uidivmod.S
215SRCS+=		aeabi_uldivmod.S
216SRCS+=		bswapdi2.S
217SRCS+=		bswapsi2.S
218SRCS+=		switch16.S
219SRCS+=		switch32.S
220SRCS+=		switch8.S
221SRCS+=		switchu8.S
222SRCS+=		sync_synchronize.S
223.endif
224
225# On some archs GCC-6.3 requires bswap32 built-in.
226.if ${MACHINE_CPUARCH} == "mips" || ${MACHINE_CPUARCH} == "sparc64"
227SRCS+=		bswapdi2.c
228SRCS+=		bswapsi2.c
229.endif
230