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