xref: /aosp_15_r20/external/pigweed/third_party/llvm_builtins/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2023 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni")
16*61c4878aSAndroid Build Coastguard Worker
17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/error.gni")
18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni")
19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni")
20*61c4878aSAndroid Build Coastguard Worker
21*61c4878aSAndroid Build Coastguard Workerdeclare_args() {
22*61c4878aSAndroid Build Coastguard Worker  # This should be set to the path of the llvm compiler-rt/builtins directory.
23*61c4878aSAndroid Build Coastguard Worker  dir_pw_third_party_llvm_builtins = ""
24*61c4878aSAndroid Build Coastguard Worker
25*61c4878aSAndroid Build Coastguard Worker  # Points to a pw_source_set that enumerates builtins specific to
26*61c4878aSAndroid Build Coastguard Worker  # the current toolchain.
27*61c4878aSAndroid Build Coastguard Worker  pw_third_party_llvm_builtins_TARGET_BUILTINS = ""
28*61c4878aSAndroid Build Coastguard Worker
29*61c4878aSAndroid Build Coastguard Worker  # List of files to be excluded from the builtins repo.
30*61c4878aSAndroid Build Coastguard Worker  pw_third_party_llvm_builtins_ignore_list = []
31*61c4878aSAndroid Build Coastguard Worker}
32*61c4878aSAndroid Build Coastguard Worker
33*61c4878aSAndroid Build Coastguard Workerconfig("no-warnings") {
34*61c4878aSAndroid Build Coastguard Worker  cflags = [
35*61c4878aSAndroid Build Coastguard Worker    "-Wno-double-promotion",
36*61c4878aSAndroid Build Coastguard Worker    "-Wno-undef",
37*61c4878aSAndroid Build Coastguard Worker    "-Wno-unused-parameter",
38*61c4878aSAndroid Build Coastguard Worker    "-Wno-strict-prototypes",
39*61c4878aSAndroid Build Coastguard Worker  ]
40*61c4878aSAndroid Build Coastguard Worker}
41*61c4878aSAndroid Build Coastguard Worker
42*61c4878aSAndroid Build Coastguard Worker# Source files that are common between ARMv6M and ARMv7M.
43*61c4878aSAndroid Build Coastguard Workergeneric_sources = [
44*61c4878aSAndroid Build Coastguard Worker  "absvdi2.c",
45*61c4878aSAndroid Build Coastguard Worker  "absvsi2.c",
46*61c4878aSAndroid Build Coastguard Worker  "absvti2.c",
47*61c4878aSAndroid Build Coastguard Worker  "adddf3.c",
48*61c4878aSAndroid Build Coastguard Worker  "addvdi3.c",
49*61c4878aSAndroid Build Coastguard Worker  "addvsi3.c",
50*61c4878aSAndroid Build Coastguard Worker  "addvti3.c",
51*61c4878aSAndroid Build Coastguard Worker  "ashldi3.c",
52*61c4878aSAndroid Build Coastguard Worker  "ashlti3.c",
53*61c4878aSAndroid Build Coastguard Worker  "ashrdi3.c",
54*61c4878aSAndroid Build Coastguard Worker  "ashrti3.c",
55*61c4878aSAndroid Build Coastguard Worker  "clzti2.c",
56*61c4878aSAndroid Build Coastguard Worker  "cmpdi2.c",
57*61c4878aSAndroid Build Coastguard Worker  "cmpti2.c",
58*61c4878aSAndroid Build Coastguard Worker  "comparedf2.c",
59*61c4878aSAndroid Build Coastguard Worker  "ctzdi2.c",
60*61c4878aSAndroid Build Coastguard Worker  "ctzsi2.c",
61*61c4878aSAndroid Build Coastguard Worker  "ctzti2.c",
62*61c4878aSAndroid Build Coastguard Worker  "divdc3.c",
63*61c4878aSAndroid Build Coastguard Worker  "divdf3.c",
64*61c4878aSAndroid Build Coastguard Worker  "divdi3.c",
65*61c4878aSAndroid Build Coastguard Worker  "divmoddi4.c",
66*61c4878aSAndroid Build Coastguard Worker  "divmodti4.c",
67*61c4878aSAndroid Build Coastguard Worker  "divsc3.c",
68*61c4878aSAndroid Build Coastguard Worker  "divsf3.c",
69*61c4878aSAndroid Build Coastguard Worker  "divti3.c",
70*61c4878aSAndroid Build Coastguard Worker  "extendhfsf2.c",
71*61c4878aSAndroid Build Coastguard Worker  "extendsfdf2.c",
72*61c4878aSAndroid Build Coastguard Worker  "ffsdi2.c",
73*61c4878aSAndroid Build Coastguard Worker  "ffssi2.c",
74*61c4878aSAndroid Build Coastguard Worker  "ffsti2.c",
75*61c4878aSAndroid Build Coastguard Worker  "fixdfdi.c",
76*61c4878aSAndroid Build Coastguard Worker  "fixdfsi.c",
77*61c4878aSAndroid Build Coastguard Worker  "fixdfti.c",
78*61c4878aSAndroid Build Coastguard Worker  "fixsfdi.c",
79*61c4878aSAndroid Build Coastguard Worker  "fixsfsi.c",
80*61c4878aSAndroid Build Coastguard Worker  "fixsfti.c",
81*61c4878aSAndroid Build Coastguard Worker  "fixunsdfdi.c",
82*61c4878aSAndroid Build Coastguard Worker  "fixunsdfsi.c",
83*61c4878aSAndroid Build Coastguard Worker  "fixunsdfti.c",
84*61c4878aSAndroid Build Coastguard Worker  "fixunssfdi.c",
85*61c4878aSAndroid Build Coastguard Worker  "fixunssfsi.c",
86*61c4878aSAndroid Build Coastguard Worker  "fixunssfti.c",
87*61c4878aSAndroid Build Coastguard Worker  "floatdidf.c",
88*61c4878aSAndroid Build Coastguard Worker  "floatdisf.c",
89*61c4878aSAndroid Build Coastguard Worker  "floatsidf.c",
90*61c4878aSAndroid Build Coastguard Worker  "floatsisf.c",
91*61c4878aSAndroid Build Coastguard Worker  "floattidf.c",
92*61c4878aSAndroid Build Coastguard Worker  "floattisf.c",
93*61c4878aSAndroid Build Coastguard Worker  "floatundidf.c",
94*61c4878aSAndroid Build Coastguard Worker  "floatundisf.c",
95*61c4878aSAndroid Build Coastguard Worker  "floatunsidf.c",
96*61c4878aSAndroid Build Coastguard Worker  "floatunsisf.c",
97*61c4878aSAndroid Build Coastguard Worker  "floatuntidf.c",
98*61c4878aSAndroid Build Coastguard Worker  "floatuntisf.c",
99*61c4878aSAndroid Build Coastguard Worker  "int_util.c",
100*61c4878aSAndroid Build Coastguard Worker  "lshrdi3.c",
101*61c4878aSAndroid Build Coastguard Worker  "lshrti3.c",
102*61c4878aSAndroid Build Coastguard Worker  "moddi3.c",
103*61c4878aSAndroid Build Coastguard Worker  "modti3.c",
104*61c4878aSAndroid Build Coastguard Worker  "muldc3.c",
105*61c4878aSAndroid Build Coastguard Worker  "muldf3.c",
106*61c4878aSAndroid Build Coastguard Worker  "muldi3.c",
107*61c4878aSAndroid Build Coastguard Worker  "mulodi4.c",
108*61c4878aSAndroid Build Coastguard Worker  "mulosi4.c",
109*61c4878aSAndroid Build Coastguard Worker  "muloti4.c",
110*61c4878aSAndroid Build Coastguard Worker  "mulsc3.c",
111*61c4878aSAndroid Build Coastguard Worker  "mulsf3.c",
112*61c4878aSAndroid Build Coastguard Worker  "multi3.c",
113*61c4878aSAndroid Build Coastguard Worker  "mulvdi3.c",
114*61c4878aSAndroid Build Coastguard Worker  "mulvsi3.c",
115*61c4878aSAndroid Build Coastguard Worker  "mulvti3.c",
116*61c4878aSAndroid Build Coastguard Worker  "negdf2.c",
117*61c4878aSAndroid Build Coastguard Worker  "negdi2.c",
118*61c4878aSAndroid Build Coastguard Worker  "negsf2.c",
119*61c4878aSAndroid Build Coastguard Worker  "negti2.c",
120*61c4878aSAndroid Build Coastguard Worker  "negvdi2.c",
121*61c4878aSAndroid Build Coastguard Worker  "negvsi2.c",
122*61c4878aSAndroid Build Coastguard Worker  "negvti2.c",
123*61c4878aSAndroid Build Coastguard Worker  "os_version_check.c",
124*61c4878aSAndroid Build Coastguard Worker  "paritydi2.c",
125*61c4878aSAndroid Build Coastguard Worker  "paritysi2.c",
126*61c4878aSAndroid Build Coastguard Worker  "parityti2.c",
127*61c4878aSAndroid Build Coastguard Worker  "popcountdi2.c",
128*61c4878aSAndroid Build Coastguard Worker  "popcountsi2.c",
129*61c4878aSAndroid Build Coastguard Worker  "popcountti2.c",
130*61c4878aSAndroid Build Coastguard Worker  "powidf2.c",
131*61c4878aSAndroid Build Coastguard Worker  "powisf2.c",
132*61c4878aSAndroid Build Coastguard Worker  "subdf3.c",
133*61c4878aSAndroid Build Coastguard Worker  "subsf3.c",
134*61c4878aSAndroid Build Coastguard Worker  "subvdi3.c",
135*61c4878aSAndroid Build Coastguard Worker  "subvsi3.c",
136*61c4878aSAndroid Build Coastguard Worker  "subvti3.c",
137*61c4878aSAndroid Build Coastguard Worker  "trampoline_setup.c",
138*61c4878aSAndroid Build Coastguard Worker  "truncdfhf2.c",
139*61c4878aSAndroid Build Coastguard Worker  "truncdfsf2.c",
140*61c4878aSAndroid Build Coastguard Worker  "truncsfhf2.c",
141*61c4878aSAndroid Build Coastguard Worker  "ucmpdi2.c",
142*61c4878aSAndroid Build Coastguard Worker  "ucmpti2.c",
143*61c4878aSAndroid Build Coastguard Worker  "udivdi3.c",
144*61c4878aSAndroid Build Coastguard Worker  "udivmoddi4.c",
145*61c4878aSAndroid Build Coastguard Worker  "udivmodti4.c",
146*61c4878aSAndroid Build Coastguard Worker  "udivti3.c",
147*61c4878aSAndroid Build Coastguard Worker  "umoddi3.c",
148*61c4878aSAndroid Build Coastguard Worker  "umodti3.c",
149*61c4878aSAndroid Build Coastguard Worker]
150*61c4878aSAndroid Build Coastguard Worker
151*61c4878aSAndroid Build Coastguard Workergeneric_tf_sources = [
152*61c4878aSAndroid Build Coastguard Worker  "addtf3.c",
153*61c4878aSAndroid Build Coastguard Worker  "comparetf2.c",
154*61c4878aSAndroid Build Coastguard Worker  "divtc3.c",
155*61c4878aSAndroid Build Coastguard Worker  "divtf3.c",
156*61c4878aSAndroid Build Coastguard Worker  "extenddftf2.c",
157*61c4878aSAndroid Build Coastguard Worker  "extendhftf2.c",
158*61c4878aSAndroid Build Coastguard Worker  "extendsftf2.c",
159*61c4878aSAndroid Build Coastguard Worker  "fixtfdi.c",
160*61c4878aSAndroid Build Coastguard Worker  "fixtfsi.c",
161*61c4878aSAndroid Build Coastguard Worker  "fixtfti.c",
162*61c4878aSAndroid Build Coastguard Worker  "fixunstfdi.c",
163*61c4878aSAndroid Build Coastguard Worker  "fixunstfsi.c",
164*61c4878aSAndroid Build Coastguard Worker  "fixunstfti.c",
165*61c4878aSAndroid Build Coastguard Worker  "floatditf.c",
166*61c4878aSAndroid Build Coastguard Worker  "floatsitf.c",
167*61c4878aSAndroid Build Coastguard Worker  "floattitf.c",
168*61c4878aSAndroid Build Coastguard Worker  "floatunditf.c",
169*61c4878aSAndroid Build Coastguard Worker  "floatunsitf.c",
170*61c4878aSAndroid Build Coastguard Worker  "floatuntitf.c",
171*61c4878aSAndroid Build Coastguard Worker  "multc3.c",
172*61c4878aSAndroid Build Coastguard Worker  "multf3.c",
173*61c4878aSAndroid Build Coastguard Worker  "powitf2.c",
174*61c4878aSAndroid Build Coastguard Worker  "subtf3.c",
175*61c4878aSAndroid Build Coastguard Worker  "trunctfdf2.c",
176*61c4878aSAndroid Build Coastguard Worker  "trunctfhf2.c",
177*61c4878aSAndroid Build Coastguard Worker  "trunctfsf2.c",
178*61c4878aSAndroid Build Coastguard Worker]
179*61c4878aSAndroid Build Coastguard Worker
180*61c4878aSAndroid Build Coastguard Workerarmv7m_only_sources = [
181*61c4878aSAndroid Build Coastguard Worker  "addsf3.c",
182*61c4878aSAndroid Build Coastguard Worker  ## Assembly equivalent version of these following sources are
183*61c4878aSAndroid Build Coastguard Worker  ## provided by arm_or_thumb2_base_sources
184*61c4878aSAndroid Build Coastguard Worker  #  "bswapdi2.c",
185*61c4878aSAndroid Build Coastguard Worker  #  "bswapsi2.c",
186*61c4878aSAndroid Build Coastguard Worker  #  "clzdi2.c",
187*61c4878aSAndroid Build Coastguard Worker  #  "clzsi2.c",
188*61c4878aSAndroid Build Coastguard Worker  #  "comparesf2.c",
189*61c4878aSAndroid Build Coastguard Worker  #  "divmodsi4.c",
190*61c4878aSAndroid Build Coastguard Worker  #  "divsi3.c",
191*61c4878aSAndroid Build Coastguard Worker  #  "fp_mode.c",
192*61c4878aSAndroid Build Coastguard Worker  #  "modsi3.c",
193*61c4878aSAndroid Build Coastguard Worker  #  "udivmodsi4.c",
194*61c4878aSAndroid Build Coastguard Worker  #  "udivsi3.c",
195*61c4878aSAndroid Build Coastguard Worker  #  "umodsi3.c",
196*61c4878aSAndroid Build Coastguard Worker]
197*61c4878aSAndroid Build Coastguard Worker
198*61c4878aSAndroid Build Coastguard Workerarmv6m_only_sources = [
199*61c4878aSAndroid Build Coastguard Worker  "bswapdi2.c",
200*61c4878aSAndroid Build Coastguard Worker  "bswapsi2.c",
201*61c4878aSAndroid Build Coastguard Worker  "clzdi2.c",
202*61c4878aSAndroid Build Coastguard Worker  "clzsi2.c",
203*61c4878aSAndroid Build Coastguard Worker  "divmodsi4.c",
204*61c4878aSAndroid Build Coastguard Worker  "fp_mode.c",
205*61c4878aSAndroid Build Coastguard Worker  "modsi3.c",
206*61c4878aSAndroid Build Coastguard Worker  "udivmodsi4.c",
207*61c4878aSAndroid Build Coastguard Worker  "umodsi3.c",
208*61c4878aSAndroid Build Coastguard Worker
209*61c4878aSAndroid Build Coastguard Worker  ## Assembly equivalent version of these following sources are
210*61c4878aSAndroid Build Coastguard Worker  ## provided by thumb1_base_sources
211*61c4878aSAndroid Build Coastguard Worker  # "addsf3.c",
212*61c4878aSAndroid Build Coastguard Worker  # "divsi3.c",
213*61c4878aSAndroid Build Coastguard Worker  # "udivsi3.c",
214*61c4878aSAndroid Build Coastguard Worker  # "comparesf2.c",
215*61c4878aSAndroid Build Coastguard Worker]
216*61c4878aSAndroid Build Coastguard Worker
217*61c4878aSAndroid Build Coastguard Workerarm_or_thumb2_base_sources = [
218*61c4878aSAndroid Build Coastguard Worker  "arm/bswapdi2.S",
219*61c4878aSAndroid Build Coastguard Worker  "arm/bswapsi2.S",
220*61c4878aSAndroid Build Coastguard Worker  "arm/clzdi2.S",
221*61c4878aSAndroid Build Coastguard Worker  "arm/clzsi2.S",
222*61c4878aSAndroid Build Coastguard Worker  "arm/comparesf2.S",
223*61c4878aSAndroid Build Coastguard Worker  "arm/divmodsi4.S",
224*61c4878aSAndroid Build Coastguard Worker  "arm/divsi3.S",
225*61c4878aSAndroid Build Coastguard Worker  "arm/fp_mode.c",
226*61c4878aSAndroid Build Coastguard Worker  "arm/modsi3.S",
227*61c4878aSAndroid Build Coastguard Worker  "arm/udivmodsi4.S",
228*61c4878aSAndroid Build Coastguard Worker  "arm/udivsi3.S",
229*61c4878aSAndroid Build Coastguard Worker  "arm/umodsi3.S",
230*61c4878aSAndroid Build Coastguard Worker]
231*61c4878aSAndroid Build Coastguard Worker
232*61c4878aSAndroid Build Coastguard Workerarm_sync_sources = [
233*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_add_4.S",
234*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_add_8.S",
235*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_and_4.S",
236*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_and_8.S",
237*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_max_4.S",
238*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_max_8.S",
239*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_min_4.S",
240*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_min_8.S",
241*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_nand_4.S",
242*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_nand_8.S",
243*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_or_4.S",
244*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_or_8.S",
245*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_sub_4.S",
246*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_sub_8.S",
247*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_umax_4.S",
248*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_umax_8.S",
249*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_umin_4.S",
250*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_umin_8.S",
251*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_xor_4.S",
252*61c4878aSAndroid Build Coastguard Worker  "arm/sync_fetch_and_xor_8.S",
253*61c4878aSAndroid Build Coastguard Worker]
254*61c4878aSAndroid Build Coastguard Worker
255*61c4878aSAndroid Build Coastguard Worker# builtin support for Thumb-only targets with very limited Thumb2 technology,
256*61c4878aSAndroid Build Coastguard Worker# such as v6-m and v8-m.baseline
257*61c4878aSAndroid Build Coastguard Workerthumb1_base_sources = [
258*61c4878aSAndroid Build Coastguard Worker  "arm/addsf3.S",
259*61c4878aSAndroid Build Coastguard Worker  "arm/comparesf2.S",
260*61c4878aSAndroid Build Coastguard Worker  "arm/divsi3.S",
261*61c4878aSAndroid Build Coastguard Worker  "arm/udivsi3.S",
262*61c4878aSAndroid Build Coastguard Worker]
263*61c4878aSAndroid Build Coastguard Worker
264*61c4878aSAndroid Build Coastguard Workerarm_eabi_sources = [
265*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_cdcmp.S",
266*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_cdcmpeq_check_nan.c",
267*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_cfcmp.S",
268*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_cfcmpeq_check_nan.c",
269*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_dcmp.S",
270*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_div0.c",
271*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_drsub.c",
272*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_fcmp.S",
273*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_frsub.c",
274*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_idivmod.S",
275*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_ldivmod.S",
276*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_memcmp.S",
277*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_memcpy.S",
278*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_memmove.S",
279*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_memset.S",
280*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_uidivmod.S",
281*61c4878aSAndroid Build Coastguard Worker  "arm/aeabi_uldivmod.S",
282*61c4878aSAndroid Build Coastguard Worker]
283*61c4878aSAndroid Build Coastguard Worker
284*61c4878aSAndroid Build Coastguard Workerarm_thumb1_jt_sources = [
285*61c4878aSAndroid Build Coastguard Worker  "arm/switch16.S",
286*61c4878aSAndroid Build Coastguard Worker  "arm/switch32.S",
287*61c4878aSAndroid Build Coastguard Worker  "arm/switch8.S",
288*61c4878aSAndroid Build Coastguard Worker  "arm/switchu8.S",
289*61c4878aSAndroid Build Coastguard Worker]
290*61c4878aSAndroid Build Coastguard Worker
291*61c4878aSAndroid Build Coastguard Workerarm_thumb1_icache_sources = [ "arm/sync_synchronize.S" ]
292*61c4878aSAndroid Build Coastguard Worker
293*61c4878aSAndroid Build Coastguard Worker# thumb1 calling into Arm to cover support
294*61c4878aSAndroid Build Coastguard Workerarm_thumb1_sources = arm_thumb1_jt_sources + arm_thumb1_icache_sources
295*61c4878aSAndroid Build Coastguard Worker
296*61c4878aSAndroid Build Coastguard Workerarm_sources = arm_or_thumb2_base_sources + arm_sync_sources + arm_eabi_sources +
297*61c4878aSAndroid Build Coastguard Worker              arm_thumb1_sources + generic_sources + armv7m_only_sources +
298*61c4878aSAndroid Build Coastguard Worker              generic_tf_sources
299*61c4878aSAndroid Build Coastguard Worker
300*61c4878aSAndroid Build Coastguard Workerthumb1_sources = thumb1_base_sources + arm_eabi_sources + generic_sources +
301*61c4878aSAndroid Build Coastguard Worker                 armv6m_only_sources + generic_tf_sources
302*61c4878aSAndroid Build Coastguard Worker
303*61c4878aSAndroid Build Coastguard Workerarmv6m_sources = thumb1_sources
304*61c4878aSAndroid Build Coastguard Workerarmv7m_sources = arm_sources
305*61c4878aSAndroid Build Coastguard Worker
306*61c4878aSAndroid Build Coastguard Worker# ARM builtins for ARMv7-M.
307*61c4878aSAndroid Build Coastguard Worker# Because this is unconditionally added to all clang-based ARM toolchains,
308*61c4878aSAndroid Build Coastguard Worker# this library should be a no-op if `dir_pw_third_party_llvm_builtins` is
309*61c4878aSAndroid Build Coastguard Worker# not configured.
310*61c4878aSAndroid Build Coastguard Workerpw_source_set("arm_builtins_armv7m") {
311*61c4878aSAndroid Build Coastguard Worker  configs = [ ":no-warnings" ]
312*61c4878aSAndroid Build Coastguard Worker  remove_configs = [ "//pw_build:extra_strict_warnings" ]
313*61c4878aSAndroid Build Coastguard Worker
314*61c4878aSAndroid Build Coastguard Worker  sources = []
315*61c4878aSAndroid Build Coastguard Worker
316*61c4878aSAndroid Build Coastguard Worker  arm_files = armv7m_sources
317*61c4878aSAndroid Build Coastguard Worker
318*61c4878aSAndroid Build Coastguard Worker  if (dir_pw_third_party_llvm_builtins != "") {
319*61c4878aSAndroid Build Coastguard Worker    effective_arm_files =
320*61c4878aSAndroid Build Coastguard Worker        filter_exclude(arm_files, pw_third_party_llvm_builtins_ignore_list)
321*61c4878aSAndroid Build Coastguard Worker    foreach(file, effective_arm_files) {
322*61c4878aSAndroid Build Coastguard Worker      sources += [ "$dir_pw_third_party_llvm_builtins/$file" ]
323*61c4878aSAndroid Build Coastguard Worker    }
324*61c4878aSAndroid Build Coastguard Worker  } else {
325*61c4878aSAndroid Build Coastguard Worker    not_needed([ "arm_files" ])
326*61c4878aSAndroid Build Coastguard Worker  }
327*61c4878aSAndroid Build Coastguard Worker}
328*61c4878aSAndroid Build Coastguard Worker
329*61c4878aSAndroid Build Coastguard Worker# ARM builtins for ARMv6-M.
330*61c4878aSAndroid Build Coastguard Worker# Because this is unconditionally added to all clang-based ARM toolchains,
331*61c4878aSAndroid Build Coastguard Worker# this library should be a no-op if `dir_pw_third_party_llvm_builtins` is
332*61c4878aSAndroid Build Coastguard Worker# not configured.
333*61c4878aSAndroid Build Coastguard Workerpw_source_set("arm_builtins_armv6m") {
334*61c4878aSAndroid Build Coastguard Worker  configs = [ ":no-warnings" ]
335*61c4878aSAndroid Build Coastguard Worker  remove_configs = [ "//pw_build:extra_strict_warnings" ]
336*61c4878aSAndroid Build Coastguard Worker
337*61c4878aSAndroid Build Coastguard Worker  sources = []
338*61c4878aSAndroid Build Coastguard Worker
339*61c4878aSAndroid Build Coastguard Worker  arm_files = armv6m_sources
340*61c4878aSAndroid Build Coastguard Worker
341*61c4878aSAndroid Build Coastguard Worker  if (dir_pw_third_party_llvm_builtins != "") {
342*61c4878aSAndroid Build Coastguard Worker    effective_arm_files =
343*61c4878aSAndroid Build Coastguard Worker        filter_exclude(arm_files, pw_third_party_llvm_builtins_ignore_list)
344*61c4878aSAndroid Build Coastguard Worker    foreach(file, effective_arm_files) {
345*61c4878aSAndroid Build Coastguard Worker      sources += [ "$dir_pw_third_party_llvm_builtins/$file" ]
346*61c4878aSAndroid Build Coastguard Worker    }
347*61c4878aSAndroid Build Coastguard Worker  } else {
348*61c4878aSAndroid Build Coastguard Worker    not_needed([ "arm_files" ])
349*61c4878aSAndroid Build Coastguard Worker  }
350*61c4878aSAndroid Build Coastguard Worker}
351*61c4878aSAndroid Build Coastguard Worker
352*61c4878aSAndroid Build Coastguard Worker# Because this is unconditionally added to all clang-based ARM toolchains,
353*61c4878aSAndroid Build Coastguard Worker# this library should be a no-op if `dir_pw_third_party_llvm_builtins` is
354*61c4878aSAndroid Build Coastguard Worker# not configured.
355*61c4878aSAndroid Build Coastguard Workerpw_static_library("llvm_builtins") {
356*61c4878aSAndroid Build Coastguard Worker  add_global_link_deps = false
357*61c4878aSAndroid Build Coastguard Worker  configs = [ ":no-warnings" ]
358*61c4878aSAndroid Build Coastguard Worker  remove_configs = [ "//pw_build:extra_strict_warnings" ]
359*61c4878aSAndroid Build Coastguard Worker  sources = []
360*61c4878aSAndroid Build Coastguard Worker
361*61c4878aSAndroid Build Coastguard Worker  # Architecture specific pw_source_set created from LLVM builtins
362*61c4878aSAndroid Build Coastguard Worker  # source files. e.g. arm_builtins_armv6m.
363*61c4878aSAndroid Build Coastguard Worker  # If this property is not set, no architecture specific builtin
364*61c4878aSAndroid Build Coastguard Worker  # functions will be included from the repo.
365*61c4878aSAndroid Build Coastguard Worker  if (pw_third_party_llvm_builtins_TARGET_BUILTINS != "") {
366*61c4878aSAndroid Build Coastguard Worker    deps = [ pw_third_party_llvm_builtins_TARGET_BUILTINS ]
367*61c4878aSAndroid Build Coastguard Worker  }
368*61c4878aSAndroid Build Coastguard Worker}
369*61c4878aSAndroid Build Coastguard Worker
370*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") {
371*61c4878aSAndroid Build Coastguard Worker  sources = [ "docs.rst" ]
372*61c4878aSAndroid Build Coastguard Worker}
373