1*8975f5c5SAndroid Build Coastguard Worker# -*- bazel-starlark -*- 2*8975f5c5SAndroid Build Coastguard Worker# Copyright 2023 The Chromium Authors 3*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker"""Siso configuration for ChromeOS builds.""" 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Workerload("@builtin//lib/gn.star", "gn") 8*8975f5c5SAndroid Build Coastguard Workerload("@builtin//path.star", "path") 9*8975f5c5SAndroid Build Coastguard Workerload("@builtin//struct.star", "module") 10*8975f5c5SAndroid Build Coastguard Workerload("./config.star", "config") 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Workerdef __cros_gn_args(ctx): 13*8975f5c5SAndroid Build Coastguard Worker """Returns all CrOS specific toolchain and sysroot GN args.""" 14*8975f5c5SAndroid Build Coastguard Worker if not "args.gn" in ctx.metadata: 15*8975f5c5SAndroid Build Coastguard Worker print("no args.gn") 16*8975f5c5SAndroid Build Coastguard Worker return {} 17*8975f5c5SAndroid Build Coastguard Worker gn_args = gn.args(ctx) 18*8975f5c5SAndroid Build Coastguard Worker if gn_args.get("target_os") != '"chromeos"': 19*8975f5c5SAndroid Build Coastguard Worker return {} 20*8975f5c5SAndroid Build Coastguard Worker 21*8975f5c5SAndroid Build Coastguard Worker cros_args = {} 22*8975f5c5SAndroid Build Coastguard Worker for arg in [ 23*8975f5c5SAndroid Build Coastguard Worker "cros_target_ar", 24*8975f5c5SAndroid Build Coastguard Worker "cros_target_cc", 25*8975f5c5SAndroid Build Coastguard Worker "cros_target_cxx", 26*8975f5c5SAndroid Build Coastguard Worker "cros_target_ld", 27*8975f5c5SAndroid Build Coastguard Worker "cros_target_nm", 28*8975f5c5SAndroid Build Coastguard Worker "cros_target_readelf", 29*8975f5c5SAndroid Build Coastguard Worker "cros_nacl_helper_arm32_ar", 30*8975f5c5SAndroid Build Coastguard Worker "cros_nacl_helper_arm32_cc", 31*8975f5c5SAndroid Build Coastguard Worker "cros_nacl_helper_arm32_cxx", 32*8975f5c5SAndroid Build Coastguard Worker "cros_nacl_helper_arm32_ld", 33*8975f5c5SAndroid Build Coastguard Worker "cros_nacl_helper_arm32_readelf", 34*8975f5c5SAndroid Build Coastguard Worker "cros_nacl_helper_arm32_sysroot", 35*8975f5c5SAndroid Build Coastguard Worker "target_sysroot", 36*8975f5c5SAndroid Build Coastguard Worker ]: 37*8975f5c5SAndroid Build Coastguard Worker if arg not in gn_args: 38*8975f5c5SAndroid Build Coastguard Worker print("no " + arg) 39*8975f5c5SAndroid Build Coastguard Worker continue 40*8975f5c5SAndroid Build Coastguard Worker fp = ctx.fs.canonpath(gn_args.get(arg).strip('"')) 41*8975f5c5SAndroid Build Coastguard Worker cros_args[arg] = fp 42*8975f5c5SAndroid Build Coastguard Worker if arg == "cros_target_cxx": 43*8975f5c5SAndroid Build Coastguard Worker cros_args["cros_toolchain"] = path.dir(path.dir(fp)) 44*8975f5c5SAndroid Build Coastguard Worker if arg == "cros_nacl_helper_arm32_cxx": 45*8975f5c5SAndroid Build Coastguard Worker cros_args["cros_nacl_helper_arm32_toolchain"] = path.dir(path.dir(fp)) 46*8975f5c5SAndroid Build Coastguard Worker return cros_args 47*8975f5c5SAndroid Build Coastguard Worker 48*8975f5c5SAndroid Build Coastguard Workerdef __filegroups(ctx): 49*8975f5c5SAndroid Build Coastguard Worker fg = {} 50*8975f5c5SAndroid Build Coastguard Worker cros_args = __cros_gn_args(ctx) 51*8975f5c5SAndroid Build Coastguard Worker for toolchain in [ 52*8975f5c5SAndroid Build Coastguard Worker cros_args.get("cros_toolchain"), 53*8975f5c5SAndroid Build Coastguard Worker cros_args.get("cros_nacl_helper_arm32_toolchain"), 54*8975f5c5SAndroid Build Coastguard Worker ]: 55*8975f5c5SAndroid Build Coastguard Worker if not toolchain: 56*8975f5c5SAndroid Build Coastguard Worker continue 57*8975f5c5SAndroid Build Coastguard Worker print("toolchain = %s" % toolchain) 58*8975f5c5SAndroid Build Coastguard Worker fg[toolchain + ":headers"] = { 59*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 60*8975f5c5SAndroid Build Coastguard Worker # TODO: Avoid using "*" to include only required files. 61*8975f5c5SAndroid Build Coastguard Worker "includes": ["*"], 62*8975f5c5SAndroid Build Coastguard Worker } 63*8975f5c5SAndroid Build Coastguard Worker fg[path.join(toolchain, "bin") + ":llddeps"] = { 64*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 65*8975f5c5SAndroid Build Coastguard Worker "includes": [ 66*8975f5c5SAndroid Build Coastguard Worker "*lld*", 67*8975f5c5SAndroid Build Coastguard Worker "*clang*", 68*8975f5c5SAndroid Build Coastguard Worker "llvm-nm*", 69*8975f5c5SAndroid Build Coastguard Worker "llvm-readelf*", 70*8975f5c5SAndroid Build Coastguard Worker "llvm-readobj*", 71*8975f5c5SAndroid Build Coastguard Worker ], 72*8975f5c5SAndroid Build Coastguard Worker } 73*8975f5c5SAndroid Build Coastguard Worker fg[path.join(toolchain, "lib") + ":libs"] = { 74*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 75*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.so", "*.so.*", "*.a", "*.o"], 76*8975f5c5SAndroid Build Coastguard Worker } 77*8975f5c5SAndroid Build Coastguard Worker fg[path.join(toolchain, "lib64") + ":libs"] = { 78*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 79*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.so", "*.so.*", "*.a", "*.o"], 80*8975f5c5SAndroid Build Coastguard Worker } 81*8975f5c5SAndroid Build Coastguard Worker fg[path.join(toolchain, "usr/lib64") + ":libs"] = { 82*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 83*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.so", "*.so.*", "*.a", "*.o"], 84*8975f5c5SAndroid Build Coastguard Worker } 85*8975f5c5SAndroid Build Coastguard Worker fg[path.join(toolchain, "usr/armv7a-cros-linux-gnueabihf") + ":libs"] = { 86*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 87*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.so", "*.so.*", "*.a", "*.o"], 88*8975f5c5SAndroid Build Coastguard Worker } 89*8975f5c5SAndroid Build Coastguard Worker fg[path.join(toolchain, "usr/bin") + ":clang"] = { 90*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 91*8975f5c5SAndroid Build Coastguard Worker "includes": [ 92*8975f5c5SAndroid Build Coastguard Worker "*clang*", 93*8975f5c5SAndroid Build Coastguard Worker "sysroot_wrapper.hardened.ccache*", 94*8975f5c5SAndroid Build Coastguard Worker ], 95*8975f5c5SAndroid Build Coastguard Worker } 96*8975f5c5SAndroid Build Coastguard Worker 97*8975f5c5SAndroid Build Coastguard Worker for sysroot in [ 98*8975f5c5SAndroid Build Coastguard Worker cros_args.get("target_sysroot"), 99*8975f5c5SAndroid Build Coastguard Worker cros_args.get("cros_nacl_helper_arm32_sysroot"), 100*8975f5c5SAndroid Build Coastguard Worker ]: 101*8975f5c5SAndroid Build Coastguard Worker if not sysroot: 102*8975f5c5SAndroid Build Coastguard Worker continue 103*8975f5c5SAndroid Build Coastguard Worker print("sysroot = %s" % sysroot) 104*8975f5c5SAndroid Build Coastguard Worker fg[path.join(sysroot, "usr/include") + ":include"] = { 105*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 106*8975f5c5SAndroid Build Coastguard Worker "includes": ["*"], 107*8975f5c5SAndroid Build Coastguard Worker # needs bits/stab.def, c++/* 108*8975f5c5SAndroid Build Coastguard Worker } 109*8975f5c5SAndroid Build Coastguard Worker fg[path.join(sysroot, "usr/lib") + ":headers"] = { 110*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 111*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.h", "crtbegin.o"], 112*8975f5c5SAndroid Build Coastguard Worker } 113*8975f5c5SAndroid Build Coastguard Worker fg[path.join(sysroot, "usr/lib64") + ":headers"] = { 114*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 115*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.h"], 116*8975f5c5SAndroid Build Coastguard Worker } 117*8975f5c5SAndroid Build Coastguard Worker fg[sysroot + ":libs"] = { 118*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 119*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.so", "*.so.*", "*.a", "*.o"], 120*8975f5c5SAndroid Build Coastguard Worker } 121*8975f5c5SAndroid Build Coastguard Worker print(fg) 122*8975f5c5SAndroid Build Coastguard Worker return fg 123*8975f5c5SAndroid Build Coastguard Worker 124*8975f5c5SAndroid Build Coastguard Workerdef __step_config(ctx, step_config): 125*8975f5c5SAndroid Build Coastguard Worker cros_args = __cros_gn_args(ctx) 126*8975f5c5SAndroid Build Coastguard Worker toolchain = cros_args.get("cros_toolchain") 127*8975f5c5SAndroid Build Coastguard Worker cros_nacl_helper_arm32_toolchain = cros_args.get("cros_nacl_helper_arm32_toolchain") 128*8975f5c5SAndroid Build Coastguard Worker cros_nacl_helper_arm32_sysroot = cros_args.get("cros_nacl_helper_arm32_sysroot") 129*8975f5c5SAndroid Build Coastguard Worker sysroot = cros_args.get("target_sysroot") 130*8975f5c5SAndroid Build Coastguard Worker if not (toolchain and sysroot): 131*8975f5c5SAndroid Build Coastguard Worker return step_config 132*8975f5c5SAndroid Build Coastguard Worker 133*8975f5c5SAndroid Build Coastguard Worker cros_target_cxx = cros_args.get("cros_target_cxx") 134*8975f5c5SAndroid Build Coastguard Worker if cros_target_cxx: 135*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 136*8975f5c5SAndroid Build Coastguard Worker { 137*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/cxx", 138*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?cxx", 139*8975f5c5SAndroid Build Coastguard Worker "command_prefix": path.join("../../", cros_target_cxx), 140*8975f5c5SAndroid Build Coastguard Worker "remote": True, 141*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 142*8975f5c5SAndroid Build Coastguard Worker "timeout": "5m", 143*8975f5c5SAndroid Build Coastguard Worker }, 144*8975f5c5SAndroid Build Coastguard Worker ]) 145*8975f5c5SAndroid Build Coastguard Worker 146*8975f5c5SAndroid Build Coastguard Worker cros_target_cc = cros_args.get("cros_target_cc") 147*8975f5c5SAndroid Build Coastguard Worker if cros_target_cxx: 148*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 149*8975f5c5SAndroid Build Coastguard Worker { 150*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/cc", 151*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?cc", 152*8975f5c5SAndroid Build Coastguard Worker "command_prefix": path.join("../../", cros_target_cc), 153*8975f5c5SAndroid Build Coastguard Worker "remote": True, 154*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 155*8975f5c5SAndroid Build Coastguard Worker "timeout": "5m", 156*8975f5c5SAndroid Build Coastguard Worker }, 157*8975f5c5SAndroid Build Coastguard Worker ]) 158*8975f5c5SAndroid Build Coastguard Worker 159*8975f5c5SAndroid Build Coastguard Worker cros_target_ar = cros_args.get("cros_target_ar") 160*8975f5c5SAndroid Build Coastguard Worker if cros_target_ar: 161*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 162*8975f5c5SAndroid Build Coastguard Worker { 163*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/alink/llvm-ar", 164*8975f5c5SAndroid Build Coastguard Worker # Other alink steps should use clang/alink/llvm-ar rule or a 165*8975f5c5SAndroid Build Coastguard Worker # nacl rule. 166*8975f5c5SAndroid Build Coastguard Worker "action": "(target_with_system_allocator_)?alink", 167*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 168*8975f5c5SAndroid Build Coastguard Worker cros_target_ar, 169*8975f5c5SAndroid Build Coastguard Worker ], 170*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": [ 171*8975f5c5SAndroid Build Coastguard Worker "*.cc", 172*8975f5c5SAndroid Build Coastguard Worker "*.h", 173*8975f5c5SAndroid Build Coastguard Worker "*.js", 174*8975f5c5SAndroid Build Coastguard Worker "*.pak", 175*8975f5c5SAndroid Build Coastguard Worker "*.py", 176*8975f5c5SAndroid Build Coastguard Worker "*.stamp", 177*8975f5c5SAndroid Build Coastguard Worker ], 178*8975f5c5SAndroid Build Coastguard Worker "handler": "clang_alink", 179*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "remote-link"), 180*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 181*8975f5c5SAndroid Build Coastguard Worker "timeout": "5m", 182*8975f5c5SAndroid Build Coastguard Worker "platform_ref": "large", 183*8975f5c5SAndroid Build Coastguard Worker "accumulate": True, 184*8975f5c5SAndroid Build Coastguard Worker }, 185*8975f5c5SAndroid Build Coastguard Worker ]) 186*8975f5c5SAndroid Build Coastguard Worker step_config["input_deps"].update({ 187*8975f5c5SAndroid Build Coastguard Worker cros_target_ar: [ 188*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "bin/llvm-ar.elf"), 189*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "lib") + ":libs", 190*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "usr/lib64") + ":libs", 191*8975f5c5SAndroid Build Coastguard Worker ], 192*8975f5c5SAndroid Build Coastguard Worker }) 193*8975f5c5SAndroid Build Coastguard Worker 194*8975f5c5SAndroid Build Coastguard Worker cros_nacl_helper_arm32_cxx = cros_args.get("cros_nacl_helper_arm32_cxx") 195*8975f5c5SAndroid Build Coastguard Worker if cros_nacl_helper_arm32_cxx: 196*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 197*8975f5c5SAndroid Build Coastguard Worker { 198*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/nacl_helper_arm32_cxx", 199*8975f5c5SAndroid Build Coastguard Worker "action": "nacl_helper_arm32_cxx", 200*8975f5c5SAndroid Build Coastguard Worker "command_prefix": path.join("../../", cros_nacl_helper_arm32_cxx), 201*8975f5c5SAndroid Build Coastguard Worker "remote": True, 202*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 203*8975f5c5SAndroid Build Coastguard Worker "timeout": "5m", 204*8975f5c5SAndroid Build Coastguard Worker }, 205*8975f5c5SAndroid Build Coastguard Worker ]) 206*8975f5c5SAndroid Build Coastguard Worker 207*8975f5c5SAndroid Build Coastguard Worker cros_nacl_helper_arm32_cc = cros_args.get("cros_nacl_helper_arm32_cc") 208*8975f5c5SAndroid Build Coastguard Worker if cros_nacl_helper_arm32_cxx: 209*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 210*8975f5c5SAndroid Build Coastguard Worker { 211*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/nacl_helper_arm32_cc", 212*8975f5c5SAndroid Build Coastguard Worker "action": "nacl_helper_arm32_cc", 213*8975f5c5SAndroid Build Coastguard Worker "command_prefix": path.join("../../", cros_nacl_helper_arm32_cc), 214*8975f5c5SAndroid Build Coastguard Worker "remote": True, 215*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 216*8975f5c5SAndroid Build Coastguard Worker "timeout": "5m", 217*8975f5c5SAndroid Build Coastguard Worker }, 218*8975f5c5SAndroid Build Coastguard Worker ]) 219*8975f5c5SAndroid Build Coastguard Worker 220*8975f5c5SAndroid Build Coastguard Worker cros_nacl_helper_arm32_ar = cros_args.get("cros_nacl_helper_arm32_ar") 221*8975f5c5SAndroid Build Coastguard Worker if cros_nacl_helper_arm32_ar: 222*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 223*8975f5c5SAndroid Build Coastguard Worker { 224*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/alink/nacl_helper_arm32_llvm-ar", 225*8975f5c5SAndroid Build Coastguard Worker # Other alink steps should use clang/alink/llvm-ar rule or a 226*8975f5c5SAndroid Build Coastguard Worker # nacl rule. 227*8975f5c5SAndroid Build Coastguard Worker "action": "nacl_helper_arm32_alink", 228*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 229*8975f5c5SAndroid Build Coastguard Worker cros_nacl_helper_arm32_ar, 230*8975f5c5SAndroid Build Coastguard Worker ], 231*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": [ 232*8975f5c5SAndroid Build Coastguard Worker "*.cc", 233*8975f5c5SAndroid Build Coastguard Worker "*.h", 234*8975f5c5SAndroid Build Coastguard Worker "*.js", 235*8975f5c5SAndroid Build Coastguard Worker "*.pak", 236*8975f5c5SAndroid Build Coastguard Worker "*.py", 237*8975f5c5SAndroid Build Coastguard Worker "*.stamp", 238*8975f5c5SAndroid Build Coastguard Worker ], 239*8975f5c5SAndroid Build Coastguard Worker "handler": "clang_alink", 240*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "remote-link"), 241*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 242*8975f5c5SAndroid Build Coastguard Worker "timeout": "5m", 243*8975f5c5SAndroid Build Coastguard Worker "platform_ref": "large", 244*8975f5c5SAndroid Build Coastguard Worker "accumulate": True, 245*8975f5c5SAndroid Build Coastguard Worker }, 246*8975f5c5SAndroid Build Coastguard Worker ]) 247*8975f5c5SAndroid Build Coastguard Worker step_config["input_deps"].update({ 248*8975f5c5SAndroid Build Coastguard Worker cros_nacl_helper_arm32_ar: [ 249*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "bin/llvm-ar.elf"), 250*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "lib") + ":libs", 251*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "usr/lib64") + ":libs", 252*8975f5c5SAndroid Build Coastguard Worker ], 253*8975f5c5SAndroid Build Coastguard Worker }) 254*8975f5c5SAndroid Build Coastguard Worker 255*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 256*8975f5c5SAndroid Build Coastguard Worker { 257*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/solink/gcc_solink_wrapper", 258*8975f5c5SAndroid Build Coastguard Worker "action": "(target_with_system_allocator_)?solink", 259*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "\"python3\" \"../../build/toolchain/gcc_solink_wrapper.py\"", 260*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 261*8975f5c5SAndroid Build Coastguard Worker "build/toolchain/gcc_solink_wrapper.py", 262*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "bin/ld.lld"), 263*8975f5c5SAndroid Build Coastguard Worker ], 264*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": [ 265*8975f5c5SAndroid Build Coastguard Worker "*.cc", 266*8975f5c5SAndroid Build Coastguard Worker "*.h", 267*8975f5c5SAndroid Build Coastguard Worker "*.js", 268*8975f5c5SAndroid Build Coastguard Worker "*.pak", 269*8975f5c5SAndroid Build Coastguard Worker "*.py", 270*8975f5c5SAndroid Build Coastguard Worker "*.stamp", 271*8975f5c5SAndroid Build Coastguard Worker ], 272*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "remote-link"), 273*8975f5c5SAndroid Build Coastguard Worker # TODO: Do not use absolute paths for custom toolchain/sysroot GN 274*8975f5c5SAndroid Build Coastguard Worker # args. 275*8975f5c5SAndroid Build Coastguard Worker "input_root_absolute_path": True, 276*8975f5c5SAndroid Build Coastguard Worker "platform_ref": "large", 277*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 278*8975f5c5SAndroid Build Coastguard Worker }, 279*8975f5c5SAndroid Build Coastguard Worker { 280*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/link/gcc_link_wrapper", 281*8975f5c5SAndroid Build Coastguard Worker "action": "(target_with_system_allocator_)?link", 282*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "\"python3\" \"../../build/toolchain/gcc_link_wrapper.py\"", 283*8975f5c5SAndroid Build Coastguard Worker "handler": "clang_link", 284*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 285*8975f5c5SAndroid Build Coastguard Worker "build/toolchain/gcc_link_wrapper.py", 286*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "bin/ld.lld"), 287*8975f5c5SAndroid Build Coastguard Worker ], 288*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": [ 289*8975f5c5SAndroid Build Coastguard Worker "*.cc", 290*8975f5c5SAndroid Build Coastguard Worker "*.h", 291*8975f5c5SAndroid Build Coastguard Worker "*.js", 292*8975f5c5SAndroid Build Coastguard Worker "*.pak", 293*8975f5c5SAndroid Build Coastguard Worker "*.py", 294*8975f5c5SAndroid Build Coastguard Worker "*.stamp", 295*8975f5c5SAndroid Build Coastguard Worker ], 296*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "remote-link"), 297*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 298*8975f5c5SAndroid Build Coastguard Worker "platform_ref": "large", 299*8975f5c5SAndroid Build Coastguard Worker "timeout": "10m", 300*8975f5c5SAndroid Build Coastguard Worker }, 301*8975f5c5SAndroid Build Coastguard Worker ]) 302*8975f5c5SAndroid Build Coastguard Worker step_config["input_deps"].update({ 303*8975f5c5SAndroid Build Coastguard Worker sysroot + ":headers": [ 304*8975f5c5SAndroid Build Coastguard Worker path.join(sysroot, "usr/include") + ":include", 305*8975f5c5SAndroid Build Coastguard Worker path.join(sysroot, "usr/lib") + ":headers", 306*8975f5c5SAndroid Build Coastguard Worker path.join(sysroot, "usr/lib64") + ":headers", 307*8975f5c5SAndroid Build Coastguard Worker ], 308*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "bin/llvm-ar"): [ 309*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "bin/llvm-ar.elf"), 310*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "lib") + ":libs", 311*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "usr/lib64") + ":libs", 312*8975f5c5SAndroid Build Coastguard Worker ], 313*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "bin/ld.lld"): [ 314*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "bin:llddeps"), 315*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "lib") + ":libs", 316*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "lib64") + ":libs", 317*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "usr/bin:clang"), 318*8975f5c5SAndroid Build Coastguard Worker path.join(toolchain, "usr/lib64") + ":libs", 319*8975f5c5SAndroid Build Coastguard Worker sysroot + ":libs", 320*8975f5c5SAndroid Build Coastguard Worker ], 321*8975f5c5SAndroid Build Coastguard Worker }) 322*8975f5c5SAndroid Build Coastguard Worker 323*8975f5c5SAndroid Build Coastguard Worker if cros_nacl_helper_arm32_toolchain and cros_nacl_helper_arm32_sysroot: 324*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 325*8975f5c5SAndroid Build Coastguard Worker { 326*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/nacl_helper_arm32_solink/gcc_solink_wrapper", 327*8975f5c5SAndroid Build Coastguard Worker "action": "nacl_helper_arm32_solink", 328*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "\"python3\" \"../../build/toolchain/gcc_solink_wrapper.py\"", 329*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 330*8975f5c5SAndroid Build Coastguard Worker "build/toolchain/gcc_solink_wrapper.py", 331*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "bin/ld.lld"), 332*8975f5c5SAndroid Build Coastguard Worker ], 333*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": [ 334*8975f5c5SAndroid Build Coastguard Worker "*.cc", 335*8975f5c5SAndroid Build Coastguard Worker "*.h", 336*8975f5c5SAndroid Build Coastguard Worker "*.js", 337*8975f5c5SAndroid Build Coastguard Worker "*.pak", 338*8975f5c5SAndroid Build Coastguard Worker "*.py", 339*8975f5c5SAndroid Build Coastguard Worker "*.stamp", 340*8975f5c5SAndroid Build Coastguard Worker ], 341*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "remote-link"), 342*8975f5c5SAndroid Build Coastguard Worker # TODO: Do not use absolute paths for custom toolchain/sysroot GN 343*8975f5c5SAndroid Build Coastguard Worker # args. 344*8975f5c5SAndroid Build Coastguard Worker "input_root_absolute_path": True, 345*8975f5c5SAndroid Build Coastguard Worker "platform_ref": "large", 346*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 347*8975f5c5SAndroid Build Coastguard Worker }, 348*8975f5c5SAndroid Build Coastguard Worker { 349*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cros/nacl_helper_arm32_link/gcc_link_wrapper", 350*8975f5c5SAndroid Build Coastguard Worker "action": "nacl_helper_arm32_link", 351*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "\"python3\" \"../../build/toolchain/gcc_link_wrapper.py\"", 352*8975f5c5SAndroid Build Coastguard Worker "handler": "clang_link", 353*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 354*8975f5c5SAndroid Build Coastguard Worker "build/toolchain/gcc_link_wrapper.py", 355*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "bin/ld.lld"), 356*8975f5c5SAndroid Build Coastguard Worker ], 357*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": [ 358*8975f5c5SAndroid Build Coastguard Worker "*.cc", 359*8975f5c5SAndroid Build Coastguard Worker "*.h", 360*8975f5c5SAndroid Build Coastguard Worker "*.js", 361*8975f5c5SAndroid Build Coastguard Worker "*.pak", 362*8975f5c5SAndroid Build Coastguard Worker "*.py", 363*8975f5c5SAndroid Build Coastguard Worker "*.stamp", 364*8975f5c5SAndroid Build Coastguard Worker ], 365*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "remote-link"), 366*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 367*8975f5c5SAndroid Build Coastguard Worker "platform_ref": "large", 368*8975f5c5SAndroid Build Coastguard Worker "timeout": "10m", 369*8975f5c5SAndroid Build Coastguard Worker }, 370*8975f5c5SAndroid Build Coastguard Worker ]) 371*8975f5c5SAndroid Build Coastguard Worker step_config["input_deps"].update({ 372*8975f5c5SAndroid Build Coastguard Worker cros_nacl_helper_arm32_sysroot + ":headers": [ 373*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_sysroot, "usr/include") + ":include", 374*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_sysroot, "usr/lib") + ":headers", 375*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_sysroot, "usr/lib64") + ":headers", 376*8975f5c5SAndroid Build Coastguard Worker ], 377*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "bin/llvm-ar"): [ 378*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "bin/llvm-ar.elf"), 379*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "lib") + ":libs", 380*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "usr/lib64") + ":libs", 381*8975f5c5SAndroid Build Coastguard Worker ], 382*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "bin/ld.lld"): [ 383*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "bin:llddeps"), 384*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "lib") + ":libs", 385*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "lib64") + ":libs", 386*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "usr/bin:clang"), 387*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "usr/lib64") + ":libs", 388*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "usr/armv7a-cros-linux-gnueabihf") + ":libs", 389*8975f5c5SAndroid Build Coastguard Worker path.join(cros_nacl_helper_arm32_toolchain, "lib64") + ":libs", 390*8975f5c5SAndroid Build Coastguard Worker cros_nacl_helper_arm32_sysroot + ":libs", 391*8975f5c5SAndroid Build Coastguard Worker ], 392*8975f5c5SAndroid Build Coastguard Worker }) 393*8975f5c5SAndroid Build Coastguard Worker 394*8975f5c5SAndroid Build Coastguard Worker return step_config 395*8975f5c5SAndroid Build Coastguard Worker 396*8975f5c5SAndroid Build Coastguard Workercros = module( 397*8975f5c5SAndroid Build Coastguard Worker "cros", 398*8975f5c5SAndroid Build Coastguard Worker filegroups = __filegroups, 399*8975f5c5SAndroid Build Coastguard Worker handlers = {}, 400*8975f5c5SAndroid Build Coastguard Worker step_config = __step_config, 401*8975f5c5SAndroid Build Coastguard Worker) 402