• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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        {
55            "name": "nacl/pnacl-clang++",
56            "action": "newlib_pnacl.*_cxx",
57            "command_prefix": "../../native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++",
58            "inputs": [
59                "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++",
60            ],
61            "remote": True,
62            "input_root_absolute_path": True,
63            "timeout": "2m",
64        },
65        {
66            "name": "nacl/pnacl-clang",
67            "action": "newlib_pnacl.*_cc",
68            "command_prefix": "../../native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang",
69            "inputs": [
70                "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang",
71            ],
72            "remote": True,
73            "input_root_absolute_path": True,
74            "timeout": "2m",
75        },
76        {
77            "name": "nacl/glibc/x86_64-nacl-gcc",
78            "action": "glibc_x64_cc",
79            "inputs": [
80                "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc",
81            ],
82            # ELF-32 doesn't work on gVisor,
83            # so will local-fallback if gVisor is used.
84            # TODO(b/278485912): remote=True for trusted instance.
85            "remote": False,
86            "input_root_absolute_path": True,
87        },
88        {
89            "name": "nacl/glibc/x86_64-nacl-g++",
90            "action": "glibc_x64_cxx",
91            "inputs": [
92                "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++",
93            ],
94            # ELF-32 doesn't work on gVisor,
95            # so will local-fallback if gVisor is used.
96            # TODO(b/278485912): remote=True for trusted instance.
97            "remote": False,
98            "input_root_absolute_path": True,
99        },
100        {
101            "name": "nacl/pnacl_newlib/x86_64-nacl-clang++",
102            "action": "clang_newlib_x64_cxx",
103            "inputs": [
104                "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++",
105                "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
106            ],
107            "remote": True,
108            "input_root_absolute_path": True,
109            "timeout": "2m",
110        },
111        {
112            "name": "nacl/pnacl_newlib/x86_64-nacl-clang",
113            "action": "clang_newlib_x64_cc",
114            "inputs": [
115                "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang",
116                "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
117            ],
118            "remote": True,
119            "input_root_absolute_path": True,
120            "timeout": "2m",
121        },
122        {
123            "name": "nacl/saigo_newlib/x86_64-nacl-clang++",
124            "action": "irt_x64_cxx",
125            "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++",
126            "inputs": [
127                "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++",
128            ],
129            "remote": True,
130            "input_root_absolute_path": True,
131            "timeout": "2m",
132        },
133        {
134            "name": "nacl/saigo_newlib/x86_64-nacl-clang",
135            "action": "irt_x64_cc",
136            "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang",
137            "inputs": [
138                "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang",
139            ],
140            "remote": True,
141            "input_root_absolute_path": True,
142            "timeout": "2m",
143        },
144    ])
145
146    step_config["input_deps"].update({
147        "native_client/toolchain/linux_x86/nacl_x86_glibc:headers": [
148            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc",
149            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++",
150            "native_client/toolchain/linux_x86/nacl_x86_glibc:header-files",
151        ],
152        "native_client/toolchain/linux_x86/pnacl_newlib:headers": [
153            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang",
154            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++",
155            "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang",
156            "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++",
157            "native_client/toolchain/linux_x86/pnacl_newlib:header-files",
158        ],
159        "native_client/toolchain/linux_x86/saigo_newlib:headers": [
160            "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang",
161            "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++",
162            "native_client/toolchain/linux_x86/saigo_newlib:header-files",
163        ],
164        "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang": [
165            "native_client/toolchain/linux_x86/pnacl_newlib/bin/clang",
166            "native_client/toolchain/linux_x86/pnacl_newlib/bin/driver.conf",
167            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-llc",
168            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir",
169            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
170            "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
171        ],
172        "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++": [
173            "native_client/toolchain/linux_x86/pnacl_newlib/bin/clang",
174            "native_client/toolchain/linux_x86/pnacl_newlib/bin/driver.conf",
175            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-llc",
176            "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir",
177            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
178            "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld",
179        ],
180        "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang": [
181            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
182        ],
183        "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++": [
184            "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm",
185        ],
186        "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang": [
187            "native_client/toolchain/linux_x86/saigo_newlib/bin:clang",
188            "native_client/toolchain/linux_x86/saigo_newlib/lib:libso",
189            "native_client/toolchain/linux_x86/saigo_newlib/x86_64-nacl/bin/ld",
190        ],
191        "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++": [
192            "native_client/toolchain/linux_x86/saigo_newlib/bin:clang",
193            "native_client/toolchain/linux_x86/saigo_newlib/lib:libso",
194            "native_client/toolchain/linux_x86/saigo_newlib/x86_64-nacl/bin/ld",
195        ],
196        "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc": [
197            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-as",
198            "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin",
199            "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend",
200            "native_client/toolchain/linux_x86/nacl_x86_glibc/x86_64-nacl/bin/as",
201        ],
202        "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++": [
203            "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-as",
204            "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin",
205            "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend",
206            "native_client/toolchain/linux_x86/nacl_x86_glibc/x86_64-nacl/bin/as",
207        ],
208    })
209    return step_config
210
211nacl = module(
212    "nacl",
213    step_config = __step_config,
214    filegroups = __filegroups,
215    handlers = __handlers,
216)
217