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