xref: /aosp_15_r20/external/cronet/build/config/siso/nacl_linux.star (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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)
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/alink",
195            "action": "(.*_)?irt_x64_alink",
196            "remote": False,
197        },
198        {
199            "name": "nacl/saigo_newlib/solink",
200            "action": "(.*_)?irt_x64_solink",
201            "remote": False,
202        },
203        {
204            "name": "nacl/saigo_newlib/link",
205            "action": "(.*_)?irt_x64_link",
206            "remote": False,
207        },
208    ])
209
210    step_config["input_deps"].update({
211        "native_client/toolchain/linux_x86/nacl_x86_glibc:headers": [
212            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc",
213            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++",
214            "native_client/toolchain/linux_x86/nacl_x86_glibc:header-files",
215        ],
216        "native_client/toolchain/linux_x86/pnacl_newlib:headers": [
217            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang",
218            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++",
219            "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang",
220            "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++",
221            "native_client/toolchain/linux_x86/pnacl_newlib:header-files",
222        ],
223        "native_client/toolchain/linux_x86/saigo_newlib:headers": [
224            "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang",
225            "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++",
226            "native_client/toolchain/linux_x86/saigo_newlib:header-files",
227        ],
228        "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang": [
229            "native_client/toolchain/linux_x86/pnacl_newlib/bin/clang",
230            "native_client/toolchain/linux_x86/pnacl_newlib/bin/driver.conf",
231            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-llc",
232            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir",
233            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
234            "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
235        ],
236        "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++": [
237            "native_client/toolchain/linux_x86/pnacl_newlib/bin/clang",
238            "native_client/toolchain/linux_x86/pnacl_newlib/bin/driver.conf",
239            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-llc",
240            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir",
241            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
242            "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
243        ],
244        "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang": [
245            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
246        ],
247        "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++": [
248            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
249        ],
250        "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang": [
251            "native_client/toolchain/linux_x86/saigo_newlib/bin:clang",
252            "native_client/toolchain/linux_x86/saigo_newlib/lib:libso",
253            "native_client/toolchain/linux_x86/saigo_newlib/x86_64-nacl/bin/ld",
254        ],
255        "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++": [
256            "native_client/toolchain/linux_x86/saigo_newlib/bin:clang",
257            "native_client/toolchain/linux_x86/saigo_newlib/lib:libso",
258            "native_client/toolchain/linux_x86/saigo_newlib/x86_64-nacl/bin/ld",
259        ],
260        "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc": [
261            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-as",
262            "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin",
263            "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend",
264            "native_client/toolchain/linux_x86/nacl_x86_glibc/x86_64-nacl/bin/as",
265        ],
266        "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++": [
267            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-as",
268            "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin",
269            "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend",
270            "native_client/toolchain/linux_x86/nacl_x86_glibc/x86_64-nacl/bin/as",
271        ],
272    })
273    return step_config
274
275nacl = module(
276    "nacl",
277    step_config = __step_config,
278    filegroups = __filegroups,
279    handlers = __handlers,
280)
281