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