Makefile.inc revision 360784
1# $FreeBSD: stable/11/lib/libcompiler_rt/Makefile.inc 360784 2020-05-07 16:34:01Z dim $
2
3CRTARCH=	${MACHINE_CPUARCH:C/amd64/x86_64/}
4
5CRTSRC=		${SRCTOP}/contrib/llvm-project/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+=		divtc3
36SRCF+=		divti3
37SRCF+=		divxc3
38SRCF+=		enable_execute_stack
39SRCF+=		eprintf
40SRCF+=		extendhfsf2
41SRCF+=		ffsdi2
42SRCF+=		ffssi2
43SRCF+=		ffsti2
44SRCF+=		fixdfdi
45SRCF+=		fixdfti
46SRCF+=		fixsfdi
47SRCF+=		fixsfti
48SRCF+=		fixunsdfdi
49SRCF+=		fixunsdfsi
50SRCF+=		fixunsdfti
51SRCF+=		fixunssfdi
52SRCF+=		fixunssfsi
53SRCF+=		fixunssfti
54SRCF+=		fixunsxfdi
55SRCF+=		fixunsxfsi
56SRCF+=		fixunsxfti
57SRCF+=		fixxfdi
58SRCF+=		fixxfti
59SRCF+=		floatditf
60SRCF+=		floattidf
61SRCF+=		floattisf
62SRCF+=		floattixf
63SRCF+=		floatunditf
64SRCF+=		floatunsidf
65SRCF+=		floatunsisf
66SRCF+=		floatuntidf
67SRCF+=		floatuntisf
68SRCF+=		floatuntixf
69SRCF+=		gcc_personality_v0	# not in upstream
70SRCF+=		int_util
71SRCF+=		lshrdi3
72SRCF+=		lshrti3
73SRCF+=		moddi3
74SRCF+=		modti3
75SRCF+=		muldc3
76SRCF+=		muldi3
77SRCF+=		mulodi4
78SRCF+=		mulosi4
79SRCF+=		muloti4
80SRCF+=		mulsc3
81SRCF+=		multc3
82SRCF+=		multi3
83SRCF+=		mulvdi3
84SRCF+=		mulvsi3
85SRCF+=		mulvti3
86SRCF+=		mulxc3
87SRCF+=		negdf2
88SRCF+=		negdi2
89SRCF+=		negsf2
90SRCF+=		negti2
91SRCF+=		negvdi2
92SRCF+=		negvsi2
93SRCF+=		negvti2
94SRCF+=		paritydi2
95SRCF+=		paritysi2
96SRCF+=		parityti2
97SRCF+=		popcountdi2
98SRCF+=		popcountsi2
99SRCF+=		popcountti2
100SRCF+=		powidf2
101SRCF+=		powisf2
102SRCF+=		powitf2
103SRCF+=		powixf2
104SRCF+=		subvdi3
105SRCF+=		subvsi3
106SRCF+=		subvti3
107SRCF+=		trampoline_setup
108SRCF+=		truncdfhf2
109SRCF+=		truncsfhf2
110SRCF+=		ucmpdi2
111SRCF+=		ucmpti2
112SRCF+=		udivdi3
113SRCF+=		udivmoddi4
114SRCF+=		udivmodsi4
115SRCF+=		udivmodti4
116SRCF+=		udivti3
117SRCF+=		umoddi3
118SRCF+=		umodti3
119
120# Avoid using SSE2 instructions on i386, if unsupported.
121.if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU:Msse2)
122SRCS+=		floatdidf.c
123SRCS+=		floatdisf.c
124SRCS+=		floatdixf.c
125SRCS+=		floatundidf.c
126SRCS+=		floatundisf.c
127SRCS+=		floatundixf.c
128.else
129SRCF+=		floatdidf
130SRCF+=		floatdisf
131SRCF+=		floatdixf
132SRCF+=		floatundidf
133SRCF+=		floatundisf
134SRCF+=		floatundixf
135.endif
136
137# __cpu_model support, only used on x86
138.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
139SRCF+=		cpu_model
140.endif
141
142# The fp_mode implementation for amd64 and i386 is shared, while other
143# architectures use the regular approach.
144.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
145SRCS+=		i386/fp_mode.c
146.else
147SRCF+=		fp_mode
148.endif
149
150#
151# 128-bit quad precision long double support,
152# only used on some architectures.
153#
154.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv"
155SRCF+=		addtf3
156SRCF+=		comparetf2
157SRCF+=		divtf3
158SRCF+=		extenddftf2
159SRCF+=		extendsftf2
160SRCF+=		fixtfdi
161SRCF+=		fixtfsi
162SRCF+=		fixtfti
163SRCF+=		fixunstfdi
164SRCF+=		fixunstfsi
165SRCF+=		fixunstfti
166SRCF+=		floatsitf
167SRCF+=		floattitf
168SRCF+=		floatunsitf
169SRCF+=		floatuntitf
170SRCF+=		multf3
171SRCF+=		subtf3
172SRCF+=		trunctfdf2
173SRCF+=		trunctfsf2
174.endif
175
176# These are already shipped by libc.a on arm and mips
177.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
178SRCF+=		adddf3
179SRCF+=		addsf3
180SRCF+=		divdf3
181SRCF+=		divsf3
182SRCF+=		extendsfdf2
183SRCF+=		fixdfsi
184SRCF+=		fixsfsi
185SRCF+=		floatsidf
186SRCF+=		floatsisf
187SRCF+=		muldf3
188SRCF+=		mulsf3
189SRCF+=		subdf3
190SRCF+=		subsf3
191SRCF+=		truncdfsf2
192.endif
193
194.if ${MACHINE_CPUARCH} != "arm"
195SRCF+=		comparedf2
196SRCF+=		comparesf2
197.endif
198
199.if ${MACHINE_CPUARCH} != "mips"
200SRCF+=		divsi3
201SRCF+=		modsi3
202SRCF+=		udivsi3
203SRCF+=		umodsi3
204.endif
205
206# FreeBSD-specific atomic intrinsics.
207.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "armv6"
208.PATH:		${SRCTOP}/sys/arm/arm
209
210SRCF+=		stdatomic
211CFLAGS+=	-DEMIT_SYNC_ATOMICS
212.elif ${MACHINE_CPUARCH} == "mips"
213.PATH:		${SRCTOP}/sys/mips/mips
214
215SRCF+=		stdatomic
216.endif
217
218.if "${COMPILER_TYPE}" == "clang" && \
219    (${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpcspe")
220SRCS+=          atomic.c
221CFLAGS.atomic.c+=      -Wno-atomic-alignment
222.endif
223
224.for file in ${SRCF}
225.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \
226    && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
227SRCS+=		${file}vfp.S
228. elif exists(${CRTSRC}/${CRTARCH}/${file}.S)
229SRCS+=		${file}.S
230. else
231SRCS+=		${file}.c
232. endif
233.endfor
234
235.if ${MACHINE_CPUARCH} == "arm"
236SRCS+=		aeabi_div0.c
237SRCS+=		aeabi_idivmod.S
238SRCS+=		aeabi_ldivmod.S
239SRCS+=		aeabi_memcmp.S
240SRCS+=		aeabi_memcpy.S
241SRCS+=		aeabi_memmove.S
242SRCS+=		aeabi_memset.S
243SRCS+=		aeabi_uidivmod.S
244SRCS+=		aeabi_uldivmod.S
245SRCS+=		bswapdi2.S
246SRCS+=		bswapsi2.S
247SRCS+=		switch16.S
248SRCS+=		switch32.S
249SRCS+=		switch8.S
250SRCS+=		switchu8.S
251SRCS+=		sync_synchronize.S
252.endif
253
254# GCC-6.3 on mips32 requires bswap32 built-in.
255.if ${MACHINE_CPUARCH} == "mips"
256SRCS+=		bswapdi2.c
257SRCS+=		bswapsi2.c
258.endif
259
260