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