Makefile revision 298107
1195098Sed# $FreeBSD: head/lib/libcompiler_rt/Makefile 298107 2016-04-16 07:45:30Z gjb $
2195098Sed
3353358Sdim.include <src.opts.mk>
4353358Sdim
5353358SdimPACKAGE=lib${LIB}
6195098SedLIB=	compiler_rt
7195098SedNO_PIC=
8195098SedWARNS?=	2
9249423Sdim
10341825SdimCFLAGS+=${PICFLAG} -fvisibility=hidden -DVISIBILITY_HIDDEN
11249423SdimCFLAGS+=-I${.CURDIR}/../../contrib/libcxxrt
12321369Sdim
13249423Sdim.if ${MACHINE_CPUARCH} == "amd64"
14321369SdimCRTARCH=x86_64
15360784Sdim.else
16261991SdimCRTARCH=${MACHINE_CPUARCH}
17218893Sdim.endif
18314564Sdim
19218893SdimCRTSRC=${.CURDIR}/../../contrib/compiler-rt/lib/builtins
20321369Sdim
21202878Srdivacky.PATH: ${CRTSRC}/${CRTARCH} ${CRTSRC}
22288943Sdim
23288943SdimSRCF=	absvdi2 \
24276479Sdim	absvsi2 \
25360784Sdim	absvti2 \
26360784Sdim	addvdi3 \
27288943Sdim	addvsi3 \
28309124Sdim	addvti3 \
29221345Sdim	apple_versioning \
30276479Sdim	ashldi3 \
31321369Sdim	ashlti3 \
32321369Sdim	ashrdi3 \
33218893Sdim	ashrti3 \
34249423Sdim	clear_cache \
35321369Sdim	clzdi2 \
36202878Srdivacky	clzsi2 \
37321369Sdim	clzti2 \
38321369Sdim	cmpdi2 \
39206274Srdivacky	cmpti2 \
40321369Sdim	ctzdi2 \
41321369Sdim	ctzsi2 \
42195098Sed	ctzti2 \
43195098Sed	divdc3 \
44276479Sdim	divdi3 \
45276479Sdim	divmoddi4 \
46276479Sdim	divmodsi4 \
47276479Sdim	divsc3 \
48321369Sdim	divtc3 \
49321369Sdim	divti3 \
50321369Sdim	divxc3 \
51276479Sdim	enable_execute_stack \
52276479Sdim	eprintf \
53276479Sdim	extendhfsf2 \
54276479Sdim	ffsdi2 \
55327952Sdim	ffsti2 \
56327952Sdim	fixdfdi \
57327952Sdim	fixdfti \
58327952Sdim	fixsfdi \
59327952Sdim	fixsfti \
60327952Sdim	fixunsdfdi \
61327952Sdim	fixunsdfsi \
62327952Sdim	fixunsdfti \
63327952Sdim	fixunssfdi \
64327952Sdim	fixunssfsi \
65327952Sdim	fixunssfti \
66327952Sdim	fixunsxfdi \
67327952Sdim	fixunsxfsi \
68327952Sdim	fixunsxfti \
69327952Sdim	fixxfdi \
70327952Sdim	fixxfti \
71327952Sdim	floatdidf \
72327952Sdim	floatdisf \
73327952Sdim	floatditf \
74327952Sdim	floatdixf \
75327952Sdim	floatsitf \
76327952Sdim	floattidf \
77344779Sdim	floattisf \
78344779Sdim	floattixf \
79344779Sdim	floatundidf \
80344779Sdim	floatundisf \
81344779Sdim	floatunditf \
82344779Sdim	floatundixf \
83344779Sdim	floatunsidf \
84344779Sdim	floatunsisf \
85344779Sdim	floatuntidf \
86344779Sdim	floatuntisf \
87344779Sdim	floatuntixf \
88344779Sdim	gcc_personality_v0 \
89276479Sdim	int_util \
90276479Sdim	lshrdi3 \
91276479Sdim	lshrti3 \
92341825Sdim	moddi3 \
93341825Sdim	modti3 \
94251662Sdim	muldc3 \
95195098Sed	muldi3 \
96195098Sed	mulodi4 \
97327952Sdim	mulosi4 \
98202878Srdivacky	muloti4 \
99249423Sdim	mulsc3 \
100280031Sdim	multi3 \
101327952Sdim	mulvdi3 \
102276479Sdim	mulvsi3 \
103280031Sdim	mulvti3 \
104249423Sdim	multc3 \
105251662Sdim	mulxc3 \
106249423Sdim	negdf2 \
107249423Sdim	negdi2 \
108202878Srdivacky	negsf2 \
109202878Srdivacky	negti2 \
110202878Srdivacky	negvdi2 \
111202878Srdivacky	negvsi2 \
112202878Srdivacky	negvti2 \
113353358Sdim	paritydi2 \
114353358Sdim	paritysi2 \
115353358Sdim	parityti2 \
116353358Sdim	popcountdi2 \
117353358Sdim	popcountsi2 \
118276479Sdim	popcountti2 \
119276479Sdim	powidf2 \
120309124Sdim	powisf2 \
121309124Sdim	powitf2 \
122309124Sdim	powixf2 \
123261991Sdim	subvdi3 \
124276479Sdim	subvsi3 \
125276479Sdim	subvti3 \
126276479Sdim	trampoline_setup \
127261991Sdim	truncdfhf2 \
128261991Sdim	truncsfhf2 \
129202878Srdivacky	ucmpdi2 \
130202878Srdivacky	ucmpti2 \
131261991Sdim	udivdi3 \
132280031Sdim	udivmoddi4 \
133218893Sdim	udivmodsi4 \
134218893Sdim	udivmodti4 \
135218893Sdim	udivti3 \
136261991Sdim	umoddi3 \
137223017Sdim	umodti3
138223017Sdim
139223017Sdim# 128-bit quad precision long double support, only used on arm64
140223017Sdim.if ${MACHINE_CPUARCH} == "aarch64"
141261991SdimSRCF+=	addtf3 \
142202878Srdivacky	comparetf2 \
143202878Srdivacky	divtf3 \
144341825Sdim	extenddftf2 \
145218893Sdim	extendsftf2 \
146353358Sdim	fixtfdi \
147234353Sdim	fixtfsi \
148218893Sdim	fixtfti \
149353358Sdim	fixunstfdi \
150261991Sdim	fixunstfsi \
151218893Sdim	fixunstfti \
152218893Sdim	floatunsitf \
153341825Sdim	multf3 \
154218893Sdim	subtf3 \
155261991Sdim	trunctfdf2 \
156234353Sdim	trunctfsf2
157218893Sdim.endif
158239462Sdim
159261991Sdim# These are already shipped by libc.a on arm and mips
160218893Sdim.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
161218893SdimSRCF+=	adddf3 \
162296417Sdim	addsf3 \
163276479Sdim	divdf3 \
164218893Sdim	divsf3 \
165218893Sdim	extendsfdf2 \
166276479Sdim	fixdfsi \
167276479Sdim	fixsfsi \
168276479Sdim	floatsidf \
169276479Sdim	floatsisf \
170276479Sdim	muldf3 \
171276479Sdim	mulsf3 \
172288943Sdim	subdf3 \
173276479Sdim	subsf3 \
174314564Sdim	truncdfsf2
175218893Sdim.endif
176218893Sdim
177314564Sdim.if ${MACHINE_CPUARCH} != "arm"
178314564SdimSRCF+=	comparedf2 \
179314564Sdim	comparesf2
180314564Sdim.endif
181314564Sdim
182314564Sdim.if ${MACHINE_CPUARCH} != "mips"
183314564SdimSRCF+=	divsi3 \
184314564Sdim	modsi3 \
185314564Sdim	udivsi3 \
186314564Sdim	umodsi3
187314564Sdim.endif
188314564Sdim
189314564Sdim# FreeBSD-specific atomic intrinsics.
190314564Sdim.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "armv6"
191314564Sdim.PATH: ${.CURDIR}/../../sys/arm/arm
192314564Sdim
193234353SdimSRCF+=	stdatomic
194234353SdimCFLAGS+=	-DEMIT_SYNC_ATOMICS
195234353Sdim.elif ${MACHINE_CPUARCH} == "mips"
196234353Sdim.PATH: ${.CURDIR}/../../sys/mips/mips
197218893Sdim
198218893SdimSRCF+=	stdatomic
199218893Sdim.endif
200218893Sdim
201309124Sdim.for file in ${SRCF}
202309124Sdim. if ${MACHINE_ARCH:Marm*hf*} != "" && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
203309124SdimSRCS+= ${file}vfp.S
204328594Semaste. elif !(${MACHINE_CPUARCH} == "arm" && ${MACHINE_ARCH:Marm*hf*} == "") && exists(${CRTSRC}/${CRTARCH}/${file}.S)
205202878SrdivackySRCS+=	${file}.S
206206274Srdivacky. else
207309124SdimSRCS+=	${file}.c
208261991Sdim. endif
209309124Sdim.endfor
210261991Sdim
211261991Sdim.if ${MACHINE_CPUARCH} == "arm"
212341825SdimSRCS+=	aeabi_div0.c \
213341825Sdim	aeabi_idivmod.S \
214341825Sdim	aeabi_ldivmod.S \
215353358Sdim	aeabi_memcmp.S \
216341825Sdim	aeabi_memcpy.S \
217341825Sdim	aeabi_memmove.S \
218341825Sdim	aeabi_memset.S \
219341825Sdim	aeabi_uidivmod.S \
220218893Sdim	aeabi_uldivmod.S \
221218893Sdim	bswapdi2.S \
222341825Sdim	bswapsi2.S \
223341825Sdim	switch16.S \
224353358Sdim	switch32.S \
225341825Sdim	switch8.S \
226341825Sdim	switchu8.S \
227341825Sdim	sync_synchronize.S
228341825Sdim.endif
229341825Sdim
230341825Sdim.if ${MK_INSTALLLIB} != "no"
231344779SdimSYMLINKS+=libcompiler_rt.a ${LIBDIR}/libgcc.a
232344779Sdim.endif
233344779Sdim.if ${MK_PROFILE} != "no"
234344779SdimSYMLINKS+=libcompiler_rt_p.a ${LIBDIR}/libgcc_p.a
235344779Sdim.endif
236344779Sdim
237344779Sdim.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \
238218893Sdim    ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_ARCH:Marmv6*}
239218893SdimAFLAGS+=--noexecstack
240218893SdimACFLAGS+=-Wa,--noexecstack
241221345Sdim.endif
242221345Sdim
243218893Sdim
244218893Sdim.include <bsd.lib.mk>
245218893Sdim