]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/libcompiler_rt/Makefile.inc
Merge llvm-project release/14.x llvmorg-14.0.5-0-gc12386ae247c
[FreeBSD/FreeBSD.git] / lib / libcompiler_rt / Makefile.inc
1 # $FreeBSD$
2
3 CRTARCH=        ${MACHINE_CPUARCH:C/amd64/x86_64/}
4
5 CRTSRC=         ${SRCTOP}/contrib/llvm-project/compiler-rt/lib/builtins
6
7 .PATH:          ${CRTSRC}/${CRTARCH}
8 .PATH:          ${CRTSRC}
9
10 SRCF+=          absvdi2
11 SRCF+=          absvsi2
12 SRCF+=          absvti2
13 SRCF+=          addvdi3
14 SRCF+=          addvsi3
15 SRCF+=          addvti3
16 SRCF+=          apple_versioning
17 SRCF+=          ashldi3
18 SRCF+=          ashlti3
19 SRCF+=          ashrdi3
20 SRCF+=          ashrti3
21 SRCF+=          bswapdi2
22 SRCF+=          bswapsi2
23 SRCF+=          clear_cache
24 SRCF+=          clzdi2
25 SRCF+=          clzsi2
26 SRCF+=          clzti2
27 SRCF+=          cmpdi2
28 SRCF+=          cmpti2
29 SRCF+=          ctzdi2
30 SRCF+=          ctzsi2
31 SRCF+=          ctzti2
32 SRCF+=          divdc3
33 SRCF+=          divdi3
34 SRCF+=          divmoddi4
35 SRCF+=          divmodsi4
36 SRCF+=          divmodti4
37 SRCF+=          divsc3
38 SRCF+=          divsi3
39 SRCF+=          divtc3
40 SRCF+=          divti3
41 SRCF+=          divxc3
42 SRCF+=          enable_execute_stack
43 SRCF+=          eprintf
44 SRCF+=          extendhfsf2
45 SRCF+=          ffsdi2
46 SRCF+=          ffssi2
47 SRCF+=          ffsti2
48 SRCF+=          fixdfdi
49 SRCF+=          fixdfti
50 SRCF+=          fixsfdi
51 SRCF+=          fixsfti
52 SRCF+=          fixunsdfdi
53 SRCF+=          fixunsdfsi
54 SRCF+=          fixunsdfti
55 SRCF+=          fixunssfdi
56 SRCF+=          fixunssfsi
57 SRCF+=          fixunssfti
58 SRCF+=          fixunsxfdi
59 SRCF+=          fixunsxfsi
60 SRCF+=          fixunsxfti
61 SRCF+=          fixxfdi
62 SRCF+=          fixxfti
63 SRCF+=          floatditf
64 SRCF+=          floattidf
65 SRCF+=          floattisf
66 SRCF+=          floattixf
67 SRCF+=          floatunditf
68 SRCF+=          floatunsidf
69 SRCF+=          floatunsisf
70 SRCF+=          floatuntidf
71 SRCF+=          floatuntisf
72 SRCF+=          floatuntixf
73 SRCF+=          int_util
74 SRCF+=          lshrdi3
75 SRCF+=          lshrti3
76 SRCF+=          moddi3
77 SRCF+=          modsi3
78 SRCF+=          modti3
79 SRCF+=          muldc3
80 SRCF+=          muldi3
81 SRCF+=          mulodi4
82 SRCF+=          mulosi4
83 SRCF+=          muloti4
84 SRCF+=          mulsc3
85 SRCF+=          multc3
86 SRCF+=          multi3
87 SRCF+=          mulvdi3
88 SRCF+=          mulvsi3
89 SRCF+=          mulvti3
90 SRCF+=          mulxc3
91 SRCF+=          negdf2
92 SRCF+=          negdi2
93 SRCF+=          negsf2
94 SRCF+=          negti2
95 SRCF+=          negvdi2
96 SRCF+=          negvsi2
97 SRCF+=          negvti2
98 SRCF+=          paritydi2
99 SRCF+=          paritysi2
100 SRCF+=          parityti2
101 SRCF+=          popcountdi2
102 SRCF+=          popcountsi2
103 SRCF+=          popcountti2
104 SRCF+=          powidf2
105 SRCF+=          powisf2
106 SRCF+=          powitf2
107 SRCF+=          powixf2
108 SRCF+=          subvdi3
109 SRCF+=          subvsi3
110 SRCF+=          subvti3
111 SRCF+=          trampoline_setup
112 SRCF+=          truncdfhf2
113 SRCF+=          truncsfhf2
114 SRCF+=          ucmpdi2
115 SRCF+=          ucmpti2
116 SRCF+=          udivdi3
117 SRCF+=          udivmoddi4
118 SRCF+=          udivmodsi4
119 SRCF+=          udivmodti4
120 SRCF+=          udivsi3
121 SRCF+=          udivti3
122 SRCF+=          umoddi3
123 SRCF+=          umodsi3
124 SRCF+=          umodti3
125
126 # Enable compiler-rt's atomic implementation only for clang, as it uses clang
127 # specific builtins, and gcc packages usually come with their own libatomic.
128 # Exclude arm which has its own implementations of atomic functions, below.
129 .if "${COMPILER_TYPE}" == "clang" && ${MACHINE_CPUARCH} != "arm"
130 SRCF+=          atomic
131 .endif
132
133 # Avoid using SSE2 instructions on i386, if unsupported.
134 .if ${MACHINE_CPUARCH} == "i386" && empty(MACHINE_CPU:Msse2)
135 SRCS+=          floatdidf.c
136 SRCS+=          floatdisf.c
137 SRCS+=          floatdixf.c
138 SRCS+=          floatundidf.c
139 SRCS+=          floatundisf.c
140 SRCS+=          floatundixf.c
141 .else
142 SRCF+=          floatdidf
143 SRCF+=          floatdisf
144 SRCF+=          floatdixf
145 SRCF+=          floatundidf
146 SRCF+=          floatundisf
147 SRCF+=          floatundixf
148 .endif
149
150 # __cpu_model support, only used on aarch64 and x86
151 .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || \
152     ${MACHINE_CPUARCH} == "i386"
153 SRCF+=          cpu_model
154 .endif
155
156 # The fp_mode implementation for amd64 and i386 is shared, while other
157 # architectures use the regular approach.
158 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
159 SRCS+=          i386/fp_mode.c
160 .else
161 SRCF+=          fp_mode
162 .endif
163
164 #
165 # 128-bit quad precision long double support,
166 # only used on some architectures.
167 #
168 .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv"
169 SRCF+=          addtf3
170 SRCF+=          comparetf2
171 SRCF+=          divtf3
172 SRCF+=          extenddftf2
173 SRCF+=          extendhftf2
174 SRCF+=          extendsftf2
175 SRCF+=          fixtfdi
176 SRCF+=          fixtfsi
177 SRCF+=          fixtfti
178 SRCF+=          fixunstfdi
179 SRCF+=          fixunstfsi
180 SRCF+=          fixunstfti
181 SRCF+=          floatsitf
182 SRCF+=          floattitf
183 SRCF+=          floatunsitf
184 SRCF+=          floatuntitf
185 SRCF+=          multf3
186 SRCF+=          subtf3
187 SRCF+=          trunctfdf2
188 SRCF+=          trunctfhf2
189 SRCF+=          trunctfsf2
190 .endif
191
192 # These are already shipped by libc.a on some architectures.
193 .if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips" && \
194     ${MACHINE_CPUARCH} != "riscv"
195 SRCF+=          adddf3
196 SRCF+=          addsf3
197 SRCF+=          divdf3
198 SRCF+=          divsf3
199 SRCF+=          extendsfdf2
200 SRCF+=          fixdfsi
201 SRCF+=          fixsfsi
202 SRCF+=          floatsidf
203 SRCF+=          floatsisf
204 SRCF+=          muldf3
205 SRCF+=          mulsf3
206 SRCF+=          subdf3
207 SRCF+=          subsf3
208 SRCF+=          truncdfsf2
209 .endif
210
211 .if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "mips"
212 SRCF+=          comparedf2
213 SRCF+=          comparesf2
214 .endif
215
216 # FreeBSD-specific atomic intrinsics.
217 .if ${MACHINE_CPUARCH} == "arm"
218 .PATH:          ${SRCTOP}/sys/arm/arm
219
220 SRCF+=          stdatomic
221 CFLAGS+=        -DEMIT_SYNC_ATOMICS
222 .elif ${MACHINE_CPUARCH} == "mips"
223 .PATH:          ${SRCTOP}/sys/mips/mips
224
225 SRCF+=          stdatomic
226 .endif
227
228 .for file in ${SRCF}
229 .if ${MACHINE_ARCH:Marmv[67]*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "") \
230     && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
231 SRCS+=          ${file}vfp.S
232 . elif exists(${CRTSRC}/${CRTARCH}/${file}.S)
233 SRCS+=          ${file}.S
234 . else
235 SRCS+=          ${file}.c
236 . endif
237 .endfor
238
239 .if ${MACHINE_CPUARCH} == "arm"
240 SRCS+=          aeabi_div0.c
241 SRCS+=          aeabi_idivmod.S
242 SRCS+=          aeabi_ldivmod.S
243 SRCS+=          aeabi_memcmp.S
244 SRCS+=          aeabi_memcpy.S
245 SRCS+=          aeabi_memmove.S
246 SRCS+=          aeabi_memset.S
247 SRCS+=          aeabi_uidivmod.S
248 SRCS+=          aeabi_uldivmod.S
249 SRCS+=          switch16.S
250 SRCS+=          switch32.S
251 SRCS+=          switch8.S
252 SRCS+=          switchu8.S
253 SRCS+=          sync_synchronize.S
254 .endif
255
256 .if ${MACHINE_ARCH:Mriscv*sf}
257 CFLAGS+=        -D__SOFT_FP__
258 .endif