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