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