1215125Sed# $FreeBSD: releng/11.0/lib/libcompiler_rt/Makefile 300119 2016-05-18 06:01:18Z imp $
2215125Sed
3265420Simp.include <src.opts.mk>
4215125Sed
5298107SgjbPACKAGE=lib${LIB}
6215125SedLIB=	compiler_rt
7215125SedNO_PIC=
8215125SedWARNS?=	2
9215125Sed
10215129SedCFLAGS+=${PICFLAG} -fvisibility=hidden -DVISIBILITY_HIDDEN
11280031SdimCFLAGS+=-I${.CURDIR}/../../contrib/libcxxrt
12215125Sed
13215125Sed.if ${MACHINE_CPUARCH} == "amd64"
14215125SedCRTARCH=x86_64
15215125Sed.else
16215125SedCRTARCH=${MACHINE_CPUARCH}
17215125Sed.endif
18215125Sed
19276851SdimCRTSRC=${.CURDIR}/../../contrib/compiler-rt/lib/builtins
20215125Sed
21215125Sed.PATH: ${CRTSRC}/${CRTARCH} ${CRTSRC}
22215125Sed
23215125SedSRCF=	absvdi2 \
24215125Sed	absvsi2 \
25215125Sed	absvti2 \
26215125Sed	addvdi3 \
27215125Sed	addvsi3 \
28215125Sed	addvti3 \
29276851Sdim	apple_versioning \
30215125Sed	ashldi3 \
31215125Sed	ashlti3 \
32215125Sed	ashrdi3 \
33215125Sed	ashrti3 \
34251791Sandrew	clear_cache \
35215125Sed	clzdi2 \
36215125Sed	clzsi2 \
37215125Sed	clzti2 \
38215125Sed	cmpdi2 \
39215125Sed	cmpti2 \
40215125Sed	ctzdi2 \
41215125Sed	ctzsi2 \
42215125Sed	ctzti2 \
43215125Sed	divdc3 \
44215125Sed	divdi3 \
45222656Sed	divmoddi4 \
46222656Sed	divmodsi4 \
47215125Sed	divsc3 \
48296417Sdim	divtc3 \
49215125Sed	divti3 \
50215125Sed	divxc3 \
51215125Sed	enable_execute_stack \
52215125Sed	eprintf \
53288943Sdim	extendhfsf2 \
54215125Sed	ffsdi2 \
55215125Sed	ffsti2 \
56215125Sed	fixdfdi \
57215125Sed	fixdfti \
58215125Sed	fixsfdi \
59215125Sed	fixsfti \
60215125Sed	fixunsdfdi \
61215125Sed	fixunsdfsi \
62215125Sed	fixunsdfti \
63215125Sed	fixunssfdi \
64215125Sed	fixunssfsi \
65215125Sed	fixunssfti \
66215125Sed	fixunsxfdi \
67215125Sed	fixunsxfsi \
68215125Sed	fixunsxfti \
69215125Sed	fixxfdi \
70215125Sed	fixxfti \
71215125Sed	floatdidf \
72215125Sed	floatdisf \
73281223Semaste	floatditf \
74215125Sed	floatdixf \
75280853Semaste	floatsitf \
76215125Sed	floattidf \
77215125Sed	floattisf \
78215125Sed	floattixf \
79215125Sed	floatundidf \
80215125Sed	floatundisf \
81281223Semaste	floatunditf \
82215125Sed	floatundixf \
83215125Sed	floatunsidf \
84215125Sed	floatunsisf \
85215125Sed	floatuntidf \
86215125Sed	floatuntisf \
87215125Sed	floatuntixf \
88276851Sdim	gcc_personality_v0 \
89229135Sed	int_util \
90215125Sed	lshrdi3 \
91215125Sed	lshrti3 \
92215125Sed	moddi3 \
93215125Sed	modti3 \
94215125Sed	muldc3 \
95215125Sed	muldi3 \
96229135Sed	mulodi4 \
97229135Sed	mulosi4 \
98229135Sed	muloti4 \
99215125Sed	mulsc3 \
100215125Sed	multi3 \
101215125Sed	mulvdi3 \
102215125Sed	mulvsi3 \
103215125Sed	mulvti3 \
104281221Semaste	multc3 \
105215125Sed	mulxc3 \
106215125Sed	negdf2 \
107215125Sed	negdi2 \
108215125Sed	negsf2 \
109215125Sed	negti2 \
110215125Sed	negvdi2 \
111215125Sed	negvsi2 \
112215125Sed	negvti2 \
113215125Sed	paritydi2 \
114215125Sed	paritysi2 \
115215125Sed	parityti2 \
116215125Sed	popcountdi2 \
117215125Sed	popcountsi2 \
118215125Sed	popcountti2 \
119215125Sed	powidf2 \
120215125Sed	powisf2 \
121215125Sed	powitf2 \
122215125Sed	powixf2 \
123215125Sed	subvdi3 \
124215125Sed	subvsi3 \
125215125Sed	subvti3 \
126215125Sed	trampoline_setup \
127288943Sdim	truncdfhf2 \
128288943Sdim	truncsfhf2 \
129215125Sed	ucmpdi2 \
130215125Sed	ucmpti2 \
131215125Sed	udivdi3 \
132215125Sed	udivmoddi4 \
133222656Sed	udivmodsi4 \
134215125Sed	udivmodti4 \
135215125Sed	udivti3 \
136215125Sed	umoddi3 \
137215125Sed	umodti3
138215125Sed
139281270Semaste# 128-bit quad precision long double support, only used on arm64
140281270Semaste.if ${MACHINE_CPUARCH} == "aarch64"
141281270SemasteSRCF+=	addtf3 \
142281270Semaste	comparetf2 \
143281270Semaste	divtf3 \
144281270Semaste	extenddftf2 \
145281270Semaste	extendsftf2 \
146281270Semaste	fixtfdi \
147281270Semaste	fixtfsi \
148281270Semaste	fixtfti \
149281270Semaste	fixunstfdi \
150281270Semaste	fixunstfsi \
151281270Semaste	fixunstfti \
152281600Semaste	floatunsitf \
153281270Semaste	multf3 \
154281270Semaste	subtf3 \
155281270Semaste	trunctfdf2 \
156281270Semaste	trunctfsf2
157281270Semaste.endif
158281270Semaste
159215125Sed# These are already shipped by libc.a on arm and mips
160215125Sed.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
161215125SedSRCF+=	adddf3 \
162215125Sed	addsf3 \
163215125Sed	divdf3 \
164215125Sed	divsf3 \
165215125Sed	extendsfdf2 \
166215125Sed	fixdfsi \
167215125Sed	fixsfsi \
168215125Sed	floatsidf \
169215125Sed	floatsisf \
170215125Sed	muldf3 \
171215125Sed	mulsf3 \
172222656Sed	subdf3 \
173222656Sed	subsf3 \
174245651Sandrew	truncdfsf2
175245651Sandrew.endif
176245651Sandrew
177276895Sandrew.if ${MACHINE_CPUARCH} != "arm"
178276895SandrewSRCF+=	comparedf2 \
179276895Sandrew	comparesf2
180276895Sandrew.endif
181276895Sandrew
182272350Sandrew.if ${MACHINE_CPUARCH} != "mips"
183245651SandrewSRCF+=	divsi3 \
184245651Sandrew	modsi3 \
185215125Sed	udivsi3 \
186215125Sed	umodsi3
187215125Sed.endif
188215125Sed
189249968Sed# FreeBSD-specific atomic intrinsics.
190255092Stheraven.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "armv6"
191251784Sed.PATH: ${.CURDIR}/../../sys/arm/arm
192251784Sed
193251784SedSRCF+=	stdatomic
194255092StheravenCFLAGS+=	-DEMIT_SYNC_ATOMICS
195251525Sed.elif ${MACHINE_CPUARCH} == "mips"
196251525Sed.PATH: ${.CURDIR}/../../sys/mips/mips
197251525Sed
198251525SedSRCF+=	stdatomic
199228919Sed.endif
200228919Sed
201215125Sed.for file in ${SRCF}
202300119Simp.if ${MACHINE_ARCH:Marmv6*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") && \
203300119Simp    exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
204263660SandrewSRCS+= ${file}vfp.S
205300119Simp. elif exists(${CRTSRC}/${CRTARCH}/${file}.S)
206215125SedSRCS+=	${file}.S
207215125Sed. else
208215125SedSRCS+=	${file}.c
209215125Sed. endif
210215125Sed.endfor
211215125Sed
212272350Sandrew.if ${MACHINE_CPUARCH} == "arm"
213276895SandrewSRCS+=	aeabi_div0.c \
214276851Sdim	aeabi_idivmod.S \
215245643Sandrew	aeabi_ldivmod.S \
216246372Sandrew	aeabi_memcmp.S \
217246372Sandrew	aeabi_memcpy.S \
218246372Sandrew	aeabi_memmove.S \
219246372Sandrew	aeabi_memset.S \
220245643Sandrew	aeabi_uidivmod.S \
221276851Sdim	aeabi_uldivmod.S \
222276851Sdim	bswapdi2.S \
223276851Sdim	bswapsi2.S \
224276851Sdim	switch16.S \
225276851Sdim	switch32.S \
226276851Sdim	switch8.S \
227276851Sdim	switchu8.S \
228276895Sandrew	sync_synchronize.S
229245643Sandrew.endif
230245643Sandrew
231249702Sed.if ${MK_INSTALLLIB} != "no"
232215125SedSYMLINKS+=libcompiler_rt.a ${LIBDIR}/libgcc.a
233249702Sed.endif
234249702Sed.if ${MK_PROFILE} != "no"
235215125SedSYMLINKS+=libcompiler_rt_p.a ${LIBDIR}/libgcc_p.a
236215125Sed.endif
237215125Sed
238217393Skib.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \
239288373Skib    ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_ARCH:Marmv6*}
240217101SkibAFLAGS+=--noexecstack
241217102SkibACFLAGS+=-Wa,--noexecstack
242217101Skib.endif
243217101Skib
244217101Skib
245215125Sed.include <bsd.lib.mk>
246