xref: /aosp_15_r20/external/angle/build/config/siso/nacl_linux.star (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1# -*- bazel-starlark -*-
2# Copyright 2023 The Chromium Authors
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5"""Siso configuration for nacl/linux."""
6
7load("@builtin//struct.star", "module")
8
9def __filegroups(ctx):
10    return {
11        "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir": {
12            "type": "glob",
13            "includes": ["*.py"],
14        },
15        "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm": {
16            "type": "glob",
17            "includes": ["libLLVM*.so"],
18        },
19        "native_client/toolchain/linux_x86/saigo_newlib/bin:clang": {
20            "type": "glob",
21            "includes": ["clang-*"],
22        },
23        "native_client/toolchain/linux_x86/saigo_newlib/lib:libso": {
24            "type": "glob",
25            "includes": ["*.so*"],
26        },
27        "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin": {
28            "type": "glob",
29            "includes": ["crtbegin.o"],
30        },
31        "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend": {
32            "type": "glob",
33            "includes": ["cc1", "cc1plus", "collect2"],
34        },
35        # for precomputed subtrees
36        "native_client/toolchain/linux_x86/nacl_x86_glibc:header-files": {
37            "type": "glob",
38            "includes": ["*.h", "*/include/c++/*/*", "*/include/c++/*/*/*"],
39        },
40        "native_client/toolchain/linux_x86/pnacl_newlib:header-files": {
41            "type": "glob",
42            "includes": ["*.h", "*/include/c++/*/*", "*/include/c++/*/*/*"],
43        },
44        "native_client/toolchain/linux_x86/saigo_newlib:header-files": {
45            "type": "glob",
46            "includes": ["*.h", "*/include/c++/*/*", "*/include/c++/*/*/*"],
47        },
48    }
49
50__handlers = {}
51
52def __step_config(ctx, step_config):
53    step_config["rules"].extend([
54        # pnacl
55        {
56            "name": "nacl/pnacl-clang++",
57            "action": "newlib_pnacl.*_cxx",
58            "command_prefix": "../../native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++",
59            "inputs": [
60                "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++",
61            ],
62            "remote": True,
63            "input_root_absolute_path": True,
64            "timeout": "2m",
65        },
66        {
67            "name": "nacl/pnacl-clang",
68            "action": "newlib_pnacl.*_cc",
69            "command_prefix": "../../native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang",
70            "inputs": [
71                "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang",
72            ],
73            "remote": True,
74            "input_root_absolute_path": True,
75            "timeout": "2m",
76        },
77        {
78            "name": "nacl/newlib_pnacl/alink",
79            "action": "newlib_pnacl_alink",
80            "remote": False,
81        },
82        {
83            "name": "nacl/newlib_pnacl/solink",
84            "action": "newlib_pnacl_solink",
85            "remote": False,
86        },
87        {
88            "name": "nacl/newlib_pnacl/link",
89            "action": "newlib_pnacl_link",
90            "remote": False,
91        },
92        # glibc
93        {
94            "name": "nacl/glibc/x86_64-nacl-gcc",
95            "action": "glibc_x64_cc",
96            "inputs": [
97                "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc",
98            ],
99            # ELF-32 doesn't work on gVisor,
100            # so will local-fallback if gVisor is used.
101            # TODO(b/278485912): remote=True for trusted instance.
102            "remote": False,
103            "input_root_absolute_path": True,
104        },
105        {
106            "name": "nacl/glibc/x86_64-nacl-g++",
107            "action": "glibc_x64_cxx",
108            "inputs": [
109                "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++",
110            ],
111            # ELF-32 doesn't work on gVisor,
112            "remote": False,
113        },
114        {
115            "name": "nacl/glibc/alink",
116            "action": "glibc_x64_alink",
117            # ELF-32 doesn't work on gVisor,
118            "remote": False,
119        },
120        {
121            "name": "nacl/glibc/solink",
122            "action": "glibc_x64_solink",
123            # ELF-32 doesn't work on gVisor,
124            "remote": False,
125        },
126        {
127            "name": "nacl/glibc/link",
128            "action": "glibc_x64_link",
129            # ELF-32 doesn't work on gVisor,
130            "remote": False,
131        },
132        # pnacl_newlib (clang_newlib_x64)
133        {
134            "name": "nacl/pnacl_newlib/x86_64-nacl-clang++",
135            "action": "clang_newlib_x64_cxx",
136            "inputs": [
137                "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++",
138                "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
139            ],
140            "remote": True,
141            "input_root_absolute_path": True,
142            "timeout": "2m",
143        },
144        {
145            "name": "nacl/pnacl_newlib/x86_64-nacl-clang",
146            "action": "clang_newlib_x64_cc",
147            "inputs": [
148                "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang",
149                "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
150            ],
151            "remote": True,
152            "input_root_absolute_path": True,
153            "timeout": "2m",
154        },
155        {
156            "name": "nacl/pnacl_newlib/alink",
157            "action": "clang_newlib_x64_alink",
158            "remote": False,
159        },
160        {
161            "name": "nacl/pnacl_newlib/solink",
162            "action": "clang_newlib_x64_solink",
163            "remote": False,
164        },
165        {
166            "name": "nacl/pnacl_newlib/link",
167            "action": "clang_newlib_x64_link",
168            "remote": False,
169        },
170        # saigo_newlib (irt_x64, irt_arm)
171        {
172            "name": "nacl/saigo_newlib/x86_64-nacl-clang++",
173            "action": "irt_x64_cxx",
174            "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++",
175            "inputs": [
176                "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++",
177            ],
178            "remote": True,
179            "input_root_absolute_path": True,
180            "timeout": "2m",
181        },
182        {
183            "name": "nacl/saigo_newlib/x86_64-nacl-clang",
184            "action": "irt_x64_cc",
185            "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang",
186            "inputs": [
187                "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang",
188            ],
189            "remote": True,
190            "input_root_absolute_path": True,
191            "timeout": "2m",
192        },
193        {
194            "name": "nacl/saigo_newlib/arm-nacl-clang++",
195            "action": "irt_arm_cxx",
196            "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/arm-nacl-clang++",
197            "inputs": [
198                "native_client/toolchain/linux_x86/saigo_newlib/bin/arm-nacl-clang++",
199            ],
200            "remote": True,
201            "input_root_absolute_path": True,
202            "timeout": "2m",
203        },
204        {
205            "name": "nacl/saigo_newlib/arm-nacl-clang",
206            "action": "irt_arm_cc",
207            "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/arm-nacl-clang",
208            "inputs": [
209                "native_client/toolchain/linux_x86/saigo_newlib/bin/arm-nacl-clang",
210            ],
211            "remote": True,
212            "input_root_absolute_path": True,
213            "timeout": "2m",
214        },
215        {
216            "name": "nacl/saigo_newlib/alink",
217            "action": "(.*_)?irt_(x64|arm)_alink",
218            "remote": False,
219            "impure": True,
220        },
221        {
222            "name": "nacl/saigo_newlib/solink",
223            "action": "(.*_)?irt_(x64|arm)_solink",
224            "remote": False,
225            "impure": True,
226        },
227        {
228            "name": "nacl/saigo_newlib/link",
229            "action": "(.*_)?irt_(x64|arm)_link",
230            "remote": False,
231            "impure": True,
232        },
233        # nacl bootstrap
234        {
235            "name": "nacl/bootstrap/cc",
236            "action": "nacl_bootstrap_cc",
237            "remote": False,
238            "impure": True,
239        },
240        {
241            "name": "nacl/bootstrap/cxx",
242            "action": "nacl_bootstrap_cxx",
243            "remote": False,
244            "impure": True,
245        },
246        {
247            "name": "nacl/bootstrap/alink",
248            "action": "nacl_bootstrap_alink",
249            "remote": False,
250            "impure": True,
251        },
252        {
253            "name": "nacl/bootstrap/solink",
254            "action": "nacl_bootstrap_solink",
255            "remote": False,
256            "impure": True,
257        },
258        {
259            "name": "nacl/bootstrap/link",
260            "action": "nacl_bootstrap_link",
261            "remote": False,
262            "impure": True,
263        },
264    ])
265
266    step_config["input_deps"].update({
267        "native_client/toolchain/linux_x86/nacl_x86_glibc:headers": [
268            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc",
269            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++",
270            "native_client/toolchain/linux_x86/nacl_x86_glibc:header-files",
271        ],
272        "native_client/toolchain/linux_x86/pnacl_newlib:headers": [
273            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang",
274            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++",
275            "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang",
276            "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++",
277            "native_client/toolchain/linux_x86/pnacl_newlib:header-files",
278        ],
279        "native_client/toolchain/linux_x86/saigo_newlib:headers": [
280            "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang",
281            "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++",
282            "native_client/toolchain/linux_x86/saigo_newlib/bin/arm-nacl-clang",
283            "native_client/toolchain/linux_x86/saigo_newlib/bin/arm-nacl-clang++",
284            "native_client/toolchain/linux_x86/saigo_newlib:header-files",
285        ],
286        "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang": [
287            "native_client/toolchain/linux_x86/pnacl_newlib/bin/clang",
288            "native_client/toolchain/linux_x86/pnacl_newlib/bin/driver.conf",
289            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-llc",
290            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir",
291            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
292            "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
293        ],
294        "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++": [
295            "native_client/toolchain/linux_x86/pnacl_newlib/bin/clang",
296            "native_client/toolchain/linux_x86/pnacl_newlib/bin/driver.conf",
297            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-llc",
298            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir",
299            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
300            "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
301        ],
302        "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang": [
303            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
304        ],
305        "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++": [
306            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
307        ],
308        "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang": [
309            "native_client/toolchain/linux_x86/saigo_newlib/bin:clang",
310            "native_client/toolchain/linux_x86/saigo_newlib/lib:libso",
311            "native_client/toolchain/linux_x86/saigo_newlib/x86_64-nacl/bin/ld",
312        ],
313        "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++": [
314            "native_client/toolchain/linux_x86/saigo_newlib/bin:clang",
315            "native_client/toolchain/linux_x86/saigo_newlib/lib:libso",
316            "native_client/toolchain/linux_x86/saigo_newlib/x86_64-nacl/bin/ld",
317        ],
318        "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc": [
319            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-as",
320            "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin",
321            "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend",
322            "native_client/toolchain/linux_x86/nacl_x86_glibc/x86_64-nacl/bin/as",
323        ],
324        "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++": [
325            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-as",
326            "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin",
327            "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend",
328            "native_client/toolchain/linux_x86/nacl_x86_glibc/x86_64-nacl/bin/as",
329        ],
330        "native_client/toolchain/linux_x86/saigo_newlib/bin/arm-nacl-clang++": [
331            "native_client/toolchain/linux_x86/saigo_newlib/bin:clang",
332        ],
333        "native_client/toolchain/linux_x86/saigo_newlib/bin/arm-nacl-clang": [
334            "native_client/toolchain/linux_x86/saigo_newlib/bin:clang",
335        ],
336    })
337    return step_config
338
339nacl = module(
340    "nacl",
341    step_config = __step_config,
342    filegroups = __filegroups,
343    handlers = __handlers,
344)
345