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 clang/linux.""" 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Workerload("@builtin//path.star", "path") 8*8975f5c5SAndroid Build Coastguard Workerload("@builtin//struct.star", "module") 9*8975f5c5SAndroid Build Coastguard Workerload("./android.star", "android") 10*8975f5c5SAndroid Build Coastguard Workerload("./ar.star", "ar") 11*8975f5c5SAndroid Build Coastguard Workerload("./clang_all.star", "clang_all") 12*8975f5c5SAndroid Build Coastguard Workerload("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper") 13*8975f5c5SAndroid Build Coastguard Workerload("./config.star", "config") 14*8975f5c5SAndroid Build Coastguard Workerload("./fuchsia.star", "fuchsia") 15*8975f5c5SAndroid Build Coastguard Workerload("./gn_logs.star", "gn_logs") 16*8975f5c5SAndroid Build Coastguard Workerload("./win_sdk.star", "win_sdk") 17*8975f5c5SAndroid Build Coastguard Worker 18*8975f5c5SAndroid Build Coastguard Worker# TODO: b/323091468 - Propagate target android ABI and android SDK version 19*8975f5c5SAndroid Build Coastguard Worker# from GN, and remove the hardcoded filegroups. 20*8975f5c5SAndroid Build Coastguard Workerandroid_archs = [ 21*8975f5c5SAndroid Build Coastguard Worker "aarch64-linux-android", 22*8975f5c5SAndroid Build Coastguard Worker "arm-linux-androideabi", 23*8975f5c5SAndroid Build Coastguard Worker "i686-linux-android", 24*8975f5c5SAndroid Build Coastguard Worker "riscv64-linux-android", 25*8975f5c5SAndroid Build Coastguard Worker "x86_64-linux-android", 26*8975f5c5SAndroid Build Coastguard Worker] 27*8975f5c5SAndroid Build Coastguard Worker 28*8975f5c5SAndroid Build Coastguard Workerandroid_versions = list(range(21, 35)) 29*8975f5c5SAndroid Build Coastguard Worker 30*8975f5c5SAndroid Build Coastguard Workerdef __filegroups(ctx): 31*8975f5c5SAndroid Build Coastguard Worker fg = { 32*8975f5c5SAndroid Build Coastguard Worker # for precomputed subtrees 33*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/usr/include:include": { 34*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 35*8975f5c5SAndroid Build Coastguard Worker "includes": ["*"], 36*8975f5c5SAndroid Build Coastguard Worker # need bits/stab.def, c++/* 37*8975f5c5SAndroid Build Coastguard Worker }, 38*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/usr/lib:headers": { 39*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 40*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.h", "crtbegin.o"], 41*8975f5c5SAndroid Build Coastguard Worker }, 42*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_arm64-sysroot/usr/include:include": { 43*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 44*8975f5c5SAndroid Build Coastguard Worker "includes": ["*"], 45*8975f5c5SAndroid Build Coastguard Worker # need bits/stab.def, c++/* 46*8975f5c5SAndroid Build Coastguard Worker }, 47*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_arm64-sysroot/usr/lib:headers": { 48*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 49*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.h", "crtbegin.o"], 50*8975f5c5SAndroid Build Coastguard Worker }, 51*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/usr/include:include": { 52*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 53*8975f5c5SAndroid Build Coastguard Worker "includes": ["*"], 54*8975f5c5SAndroid Build Coastguard Worker # need bits/stab.def, c++/* 55*8975f5c5SAndroid Build Coastguard Worker }, 56*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/usr/lib:headers": { 57*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 58*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.h", "crtbegin.o"], 59*8975f5c5SAndroid Build Coastguard Worker }, 60*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/usr/include:include": { 61*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 62*8975f5c5SAndroid Build Coastguard Worker "includes": ["*"], 63*8975f5c5SAndroid Build Coastguard Worker # need bits/stab.def, c++/* 64*8975f5c5SAndroid Build Coastguard Worker }, 65*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/usr/lib:headers": { 66*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 67*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.h", "crtbegin.o"], 68*8975f5c5SAndroid Build Coastguard Worker }, 69*8975f5c5SAndroid Build Coastguard Worker "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include:include": { 70*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 71*8975f5c5SAndroid Build Coastguard Worker "includes": ["*"], 72*8975f5c5SAndroid Build Coastguard Worker # can't use "*.h", because c++ headers have no extension. 73*8975f5c5SAndroid Build Coastguard Worker }, 74*8975f5c5SAndroid Build Coastguard Worker "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include:include": { 75*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 76*8975f5c5SAndroid Build Coastguard Worker "includes": ["*"], 77*8975f5c5SAndroid Build Coastguard Worker }, 78*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin:llddeps": { 79*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 80*8975f5c5SAndroid Build Coastguard Worker "includes": [ 81*8975f5c5SAndroid Build Coastguard Worker "clang*", 82*8975f5c5SAndroid Build Coastguard Worker "ld.lld", 83*8975f5c5SAndroid Build Coastguard Worker "ld64.lld", 84*8975f5c5SAndroid Build Coastguard Worker "lld", 85*8975f5c5SAndroid Build Coastguard Worker "llvm-nm", 86*8975f5c5SAndroid Build Coastguard Worker "llvm-objcopy", 87*8975f5c5SAndroid Build Coastguard Worker "llvm-objdump", 88*8975f5c5SAndroid Build Coastguard Worker "llvm-otool", 89*8975f5c5SAndroid Build Coastguard Worker "llvm-readelf", 90*8975f5c5SAndroid Build Coastguard Worker "llvm-readobj", 91*8975f5c5SAndroid Build Coastguard Worker "llvm-strip", 92*8975f5c5SAndroid Build Coastguard Worker ], 93*8975f5c5SAndroid Build Coastguard Worker }, 94*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/lib/clang:libs": { 95*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 96*8975f5c5SAndroid Build Coastguard Worker "includes": ["*/lib/*/*", "*/lib/*", "*/share/*"], 97*8975f5c5SAndroid Build Coastguard Worker }, 98*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/lib/x86_64-linux-gnu:libso": { 99*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 100*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.so*"], 101*8975f5c5SAndroid Build Coastguard Worker }, 102*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/usr/lib/x86_64-linux-gnu:libs": { 103*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 104*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.o", "*.so*", "lib*.a"], 105*8975f5c5SAndroid Build Coastguard Worker }, 106*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu:libgcc": { 107*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 108*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.o", "*.a", "*.so"], 109*8975f5c5SAndroid Build Coastguard Worker }, 110*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/lib:libso": { 111*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 112*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.so*"], 113*8975f5c5SAndroid Build Coastguard Worker }, 114*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/usr/lib/i386-linux-gnu:libs": { 115*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 116*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.o", "*.so*", "lib*.a"], 117*8975f5c5SAndroid Build Coastguard Worker }, 118*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/usr/lib/gcc/i686-linux-gnu:libgcc": { 119*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 120*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.o", "*.a", "*.so"], 121*8975f5c5SAndroid Build Coastguard Worker }, 122*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/lib:libso": { 123*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 124*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.so*"], 125*8975f5c5SAndroid Build Coastguard Worker }, 126*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/usr/lib/arm-linux-gnueabihf:libs": { 127*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 128*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.o", "*.so*", "lib*.a"], 129*8975f5c5SAndroid Build Coastguard Worker }, 130*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/usr/lib/gcc/arm-linux-gnueabihf:libgcc": { 131*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 132*8975f5c5SAndroid Build Coastguard Worker "includes": ["*.o", "*.a", "*.so"], 133*8975f5c5SAndroid Build Coastguard Worker }, 134*8975f5c5SAndroid Build Coastguard Worker } 135*8975f5c5SAndroid Build Coastguard Worker if android.enabled(ctx): 136*8975f5c5SAndroid Build Coastguard Worker for arch in android_archs: 137*8975f5c5SAndroid Build Coastguard Worker for ver in android_versions: 138*8975f5c5SAndroid Build Coastguard Worker group = "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/%s/%d:link" % (arch, ver) 139*8975f5c5SAndroid Build Coastguard Worker fg[group] = { 140*8975f5c5SAndroid Build Coastguard Worker "type": "glob", 141*8975f5c5SAndroid Build Coastguard Worker "includes": ["*"], 142*8975f5c5SAndroid Build Coastguard Worker } 143*8975f5c5SAndroid Build Coastguard Worker if fuchsia.enabled(ctx): 144*8975f5c5SAndroid Build Coastguard Worker fg.update(fuchsia.filegroups(ctx)) 145*8975f5c5SAndroid Build Coastguard Worker fg.update(clang_all.filegroups(ctx)) 146*8975f5c5SAndroid Build Coastguard Worker return fg 147*8975f5c5SAndroid Build Coastguard Worker 148*8975f5c5SAndroid Build Coastguard Workerdef __clang_compile_coverage(ctx, cmd): 149*8975f5c5SAndroid Build Coastguard Worker clang_command = clang_code_coverage_wrapper.run(ctx, list(cmd.args)) 150*8975f5c5SAndroid Build Coastguard Worker ctx.actions.fix(args = clang_command) 151*8975f5c5SAndroid Build Coastguard Worker 152*8975f5c5SAndroid Build Coastguard Workerdef __clang_alink(ctx, cmd): 153*8975f5c5SAndroid Build Coastguard Worker # check command line to see "-T" and "-S". 154*8975f5c5SAndroid Build Coastguard Worker # rm -f obj/third_party/angle/libangle_common.a && "../../third_party/llvm-build/Release+Asserts/bin/llvm-ar" -T -S -r -c -D obj/third_party/angle/libangle_common.a @"obj/third_party/angle/libangle_common.a.rsp" 155*8975f5c5SAndroid Build Coastguard Worker if not ("-T" in cmd.args[-1] and "-S" in cmd.args[-1]): 156*8975f5c5SAndroid Build Coastguard Worker print("not thin archive without symbol table") 157*8975f5c5SAndroid Build Coastguard Worker return 158*8975f5c5SAndroid Build Coastguard Worker 159*8975f5c5SAndroid Build Coastguard Worker # create thin archive without symbol table by handler. 160*8975f5c5SAndroid Build Coastguard Worker rspfile_content = str(cmd.rspfile_content) 161*8975f5c5SAndroid Build Coastguard Worker inputs = [] 162*8975f5c5SAndroid Build Coastguard Worker for fname in rspfile_content.split(" "): 163*8975f5c5SAndroid Build Coastguard Worker inputs.append(ctx.fs.canonpath(fname)) 164*8975f5c5SAndroid Build Coastguard Worker data = ar.create(ctx, path.dir(cmd.outputs[0]), inputs) 165*8975f5c5SAndroid Build Coastguard Worker ctx.actions.write(cmd.outputs[0], data) 166*8975f5c5SAndroid Build Coastguard Worker ctx.actions.exit(exit_status = 0) 167*8975f5c5SAndroid Build Coastguard Worker 168*8975f5c5SAndroid Build Coastguard Workerdef __clang_link(ctx, cmd): 169*8975f5c5SAndroid Build Coastguard Worker inputs = [] 170*8975f5c5SAndroid Build Coastguard Worker sysroot = "" 171*8975f5c5SAndroid Build Coastguard Worker target = "" 172*8975f5c5SAndroid Build Coastguard Worker args = cmd.args 173*8975f5c5SAndroid Build Coastguard Worker if args[0] == "/bin/sh": 174*8975f5c5SAndroid Build Coastguard Worker args = args[2].split(" ") 175*8975f5c5SAndroid Build Coastguard Worker for i, arg in enumerate(args): 176*8975f5c5SAndroid Build Coastguard Worker if i == 1: 177*8975f5c5SAndroid Build Coastguard Worker driver = ctx.fs.canonpath(arg) # driver script 178*8975f5c5SAndroid Build Coastguard Worker if ctx.fs.exists(driver): 179*8975f5c5SAndroid Build Coastguard Worker inputs.append(driver + ":link") 180*8975f5c5SAndroid Build Coastguard Worker continue 181*8975f5c5SAndroid Build Coastguard Worker if arg.startswith("--sysroot="): 182*8975f5c5SAndroid Build Coastguard Worker sysroot = arg.removeprefix("--sysroot=") 183*8975f5c5SAndroid Build Coastguard Worker sysroot = ctx.fs.canonpath(sysroot) 184*8975f5c5SAndroid Build Coastguard Worker inputs.append(sysroot + ":link") 185*8975f5c5SAndroid Build Coastguard Worker elif arg == "-isysroot": 186*8975f5c5SAndroid Build Coastguard Worker sysroot = ctx.fs.canonpath(args[i + 1]) 187*8975f5c5SAndroid Build Coastguard Worker inputs.append(sysroot + ":link") 188*8975f5c5SAndroid Build Coastguard Worker elif arg.startswith("--target="): 189*8975f5c5SAndroid Build Coastguard Worker target = arg.removeprefix("--target=") 190*8975f5c5SAndroid Build Coastguard Worker elif arg.startswith("-L"): 191*8975f5c5SAndroid Build Coastguard Worker lib_path = ctx.fs.canonpath(arg.removeprefix("-L")) 192*8975f5c5SAndroid Build Coastguard Worker inputs.append(lib_path + ":link") 193*8975f5c5SAndroid Build Coastguard Worker elif arg.startswith("-Wl,-exported_symbols_list,"): 194*8975f5c5SAndroid Build Coastguard Worker export_path = ctx.fs.canonpath(arg.removeprefix("-Wl,-exported_symbols_list,")) 195*8975f5c5SAndroid Build Coastguard Worker inputs.append(export_path) 196*8975f5c5SAndroid Build Coastguard Worker elif arg == "-sectcreate": 197*8975f5c5SAndroid Build Coastguard Worker # -sectcreate <arg1> <arg2> <arg3> 198*8975f5c5SAndroid Build Coastguard Worker inputs.append(ctx.fs.canonpath(args[i + 3])) 199*8975f5c5SAndroid Build Coastguard Worker elif arg.startswith("-Wcrl,"): 200*8975f5c5SAndroid Build Coastguard Worker crls = arg.removeprefix("-Wcrl,").split(",") 201*8975f5c5SAndroid Build Coastguard Worker crl = ctx.fs.canonpath(crls[1]) 202*8975f5c5SAndroid Build Coastguard Worker if ctx.fs.exists(crl): 203*8975f5c5SAndroid Build Coastguard Worker inputs.append(crl + ":link") 204*8975f5c5SAndroid Build Coastguard Worker elif arg == "--": 205*8975f5c5SAndroid Build Coastguard Worker clang_base = ctx.fs.canonpath(path.dir(path.dir(cmd.args[i + 1]))) 206*8975f5c5SAndroid Build Coastguard Worker inputs.append(clang_base + ":link") 207*8975f5c5SAndroid Build Coastguard Worker 208*8975f5c5SAndroid Build Coastguard Worker for arch in android_archs: 209*8975f5c5SAndroid Build Coastguard Worker if target.startswith(arch): 210*8975f5c5SAndroid Build Coastguard Worker android_ver = target.removeprefix(arch) 211*8975f5c5SAndroid Build Coastguard Worker inputs.extend([ 212*8975f5c5SAndroid Build Coastguard Worker sysroot + "/usr/lib/" + arch + "/" + android_ver + ":link", 213*8975f5c5SAndroid Build Coastguard Worker ]) 214*8975f5c5SAndroid Build Coastguard Worker break 215*8975f5c5SAndroid Build Coastguard Worker 216*8975f5c5SAndroid Build Coastguard Worker ctx.actions.fix(inputs = cmd.inputs + inputs) 217*8975f5c5SAndroid Build Coastguard Worker 218*8975f5c5SAndroid Build Coastguard Worker__handlers = { 219*8975f5c5SAndroid Build Coastguard Worker "clang_compile_coverage": __clang_compile_coverage, 220*8975f5c5SAndroid Build Coastguard Worker "clang_alink": __clang_alink, 221*8975f5c5SAndroid Build Coastguard Worker "clang_link": __clang_link, 222*8975f5c5SAndroid Build Coastguard Worker} 223*8975f5c5SAndroid Build Coastguard Worker 224*8975f5c5SAndroid Build Coastguard Workerdef __step_config(ctx, step_config): 225*8975f5c5SAndroid Build Coastguard Worker step_config["input_deps"].update({ 226*8975f5c5SAndroid Build Coastguard Worker # sysroot headers for precomputed subtrees 227*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot:headers": [ 228*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/usr/include:include", 229*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/usr/lib:headers", 230*8975f5c5SAndroid Build Coastguard Worker ], 231*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_arm64-sysroot:headers": [ 232*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_arm64-sysroot/usr/include:include", 233*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_arm64-sysroot/usr/lib:headers", 234*8975f5c5SAndroid Build Coastguard Worker ], 235*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot:headers": [ 236*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/usr/include:include", 237*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/usr/lib:headers", 238*8975f5c5SAndroid Build Coastguard Worker ], 239*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot:headers": [ 240*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/usr/include:include", 241*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/usr/lib:headers", 242*8975f5c5SAndroid Build Coastguard Worker ], 243*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot:link": [ 244*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/lib/x86_64-linux-gnu:libso", 245*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/lib64/ld-linux-x86-64.so.2", 246*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/usr/lib/gcc/x86_64-linux-gnu:libgcc", 247*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_amd64-sysroot/usr/lib/x86_64-linux-gnu:libs", 248*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin:llddeps", 249*8975f5c5SAndroid Build Coastguard Worker # The following inputs are used for sanitizer builds. 250*8975f5c5SAndroid Build Coastguard Worker # It might be better to add them only for sanitizer builds if there is a performance issue. 251*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/lib/clang:libs", 252*8975f5c5SAndroid Build Coastguard Worker ], 253*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot:link": [ 254*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/lib:libso", 255*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/usr/lib/gcc/i686-linux-gnu:libgcc", 256*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_i386-sysroot/usr/lib/i386-linux-gnu:libs", 257*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin:llddeps", 258*8975f5c5SAndroid Build Coastguard Worker ], 259*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot:link": [ 260*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/lib:libso", 261*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/usr/lib/gcc/arm-linux-gnueabihf:libgcc", 262*8975f5c5SAndroid Build Coastguard Worker "build/linux/debian_bullseye_armhf-sysroot/usr/lib/arm-linux-gnueabihf:libs", 263*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin:llddeps", 264*8975f5c5SAndroid Build Coastguard Worker ], 265*8975f5c5SAndroid Build Coastguard Worker "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot:headers": [ 266*8975f5c5SAndroid Build Coastguard Worker "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include:include", 267*8975f5c5SAndroid Build Coastguard Worker "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include:include", 268*8975f5c5SAndroid Build Coastguard Worker ], 269*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin/clang++:link": [ 270*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin:llddeps", 271*8975f5c5SAndroid Build Coastguard Worker ], 272*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts:link": [ 273*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin:llddeps", 274*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/lib/clang:libs", 275*8975f5c5SAndroid Build Coastguard Worker ], 276*8975f5c5SAndroid Build Coastguard Worker }) 277*8975f5c5SAndroid Build Coastguard Worker step_config["input_deps"].update(clang_all.input_deps) 278*8975f5c5SAndroid Build Coastguard Worker 279*8975f5c5SAndroid Build Coastguard Worker input_root_absolute_path = gn_logs.read(ctx).get("clang_need_input_root_absolute_path") == "true" 280*8975f5c5SAndroid Build Coastguard Worker canonicalize_dir = not input_root_absolute_path 281*8975f5c5SAndroid Build Coastguard Worker 282*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 283*8975f5c5SAndroid Build Coastguard Worker { 284*8975f5c5SAndroid Build Coastguard Worker "name": "clang/cxx", 285*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?cxx", 286*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang++ ", 287*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 288*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin/clang++", 289*8975f5c5SAndroid Build Coastguard Worker ], 290*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": ["*.stamp"], 291*8975f5c5SAndroid Build Coastguard Worker "remote": True, 292*8975f5c5SAndroid Build Coastguard Worker "input_root_absolute_path": input_root_absolute_path, 293*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": canonicalize_dir, 294*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 295*8975f5c5SAndroid Build Coastguard Worker }, 296*8975f5c5SAndroid Build Coastguard Worker { 297*8975f5c5SAndroid Build Coastguard Worker "name": "clang/cc", 298*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?cc", 299*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang ", 300*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 301*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin/clang", 302*8975f5c5SAndroid Build Coastguard Worker ], 303*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": ["*.stamp"], 304*8975f5c5SAndroid Build Coastguard Worker "remote": True, 305*8975f5c5SAndroid Build Coastguard Worker "input_root_absolute_path": input_root_absolute_path, 306*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": canonicalize_dir, 307*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 308*8975f5c5SAndroid Build Coastguard Worker }, 309*8975f5c5SAndroid Build Coastguard Worker { 310*8975f5c5SAndroid Build Coastguard Worker "name": "clang/asm", 311*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?asm", 312*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang", 313*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 314*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin/clang", 315*8975f5c5SAndroid Build Coastguard Worker ], 316*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "cog"), 317*8975f5c5SAndroid Build Coastguard Worker "input_root_absolute_path": input_root_absolute_path, 318*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": canonicalize_dir, 319*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 320*8975f5c5SAndroid Build Coastguard Worker }, 321*8975f5c5SAndroid Build Coastguard Worker { 322*8975f5c5SAndroid Build Coastguard Worker "name": "clang-coverage/cxx", 323*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?cxx", 324*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "\"python3\" ../../build/toolchain/clang_code_coverage_wrapper.py", 325*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 326*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin/clang++", 327*8975f5c5SAndroid Build Coastguard Worker ], 328*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": ["*.stamp"], 329*8975f5c5SAndroid Build Coastguard Worker "handler": "clang_compile_coverage", 330*8975f5c5SAndroid Build Coastguard Worker "remote": True, 331*8975f5c5SAndroid Build Coastguard Worker "input_root_absolute_path": input_root_absolute_path, 332*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": canonicalize_dir, 333*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 334*8975f5c5SAndroid Build Coastguard Worker }, 335*8975f5c5SAndroid Build Coastguard Worker { 336*8975f5c5SAndroid Build Coastguard Worker "name": "clang-coverage/cc", 337*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?cc", 338*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "\"python3\" ../../build/toolchain/clang_code_coverage_wrapper.py", 339*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 340*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin/clang", 341*8975f5c5SAndroid Build Coastguard Worker ], 342*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": ["*.stamp"], 343*8975f5c5SAndroid Build Coastguard Worker "handler": "clang_compile_coverage", 344*8975f5c5SAndroid Build Coastguard Worker "remote": True, 345*8975f5c5SAndroid Build Coastguard Worker "input_root_absolute_path": input_root_absolute_path, 346*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": canonicalize_dir, 347*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 348*8975f5c5SAndroid Build Coastguard Worker }, 349*8975f5c5SAndroid Build Coastguard Worker { 350*8975f5c5SAndroid Build Coastguard Worker "name": "clang/alink/llvm-ar", 351*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?alink", 352*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 353*8975f5c5SAndroid Build Coastguard Worker # TODO: b/316267242 - Add inputs to GN config. 354*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin/llvm-ar", 355*8975f5c5SAndroid Build Coastguard Worker ], 356*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": [ 357*8975f5c5SAndroid Build Coastguard Worker "*.cc", 358*8975f5c5SAndroid Build Coastguard Worker "*.h", 359*8975f5c5SAndroid Build Coastguard Worker "*.js", 360*8975f5c5SAndroid Build Coastguard Worker "*.pak", 361*8975f5c5SAndroid Build Coastguard Worker "*.py", 362*8975f5c5SAndroid Build Coastguard Worker "*.stamp", 363*8975f5c5SAndroid Build Coastguard Worker ], 364*8975f5c5SAndroid Build Coastguard Worker "handler": "clang_alink", 365*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "remote-link"), 366*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 367*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 368*8975f5c5SAndroid Build Coastguard Worker "platform_ref": "large", 369*8975f5c5SAndroid Build Coastguard Worker "accumulate": True, 370*8975f5c5SAndroid Build Coastguard Worker }, 371*8975f5c5SAndroid Build Coastguard Worker { 372*8975f5c5SAndroid Build Coastguard Worker "name": "clang/solink", 373*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?solink", 374*8975f5c5SAndroid Build Coastguard Worker "handler": "clang_link", 375*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": [ 376*8975f5c5SAndroid Build Coastguard Worker "*.cc", 377*8975f5c5SAndroid Build Coastguard Worker "*.h", 378*8975f5c5SAndroid Build Coastguard Worker "*.js", 379*8975f5c5SAndroid Build Coastguard Worker "*.pak", 380*8975f5c5SAndroid Build Coastguard Worker "*.py", 381*8975f5c5SAndroid Build Coastguard Worker "*.stamp", 382*8975f5c5SAndroid Build Coastguard Worker ], 383*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "remote-link"), 384*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 385*8975f5c5SAndroid Build Coastguard Worker "platform_ref": "large", 386*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 387*8975f5c5SAndroid Build Coastguard Worker }, 388*8975f5c5SAndroid Build Coastguard Worker { 389*8975f5c5SAndroid Build Coastguard Worker "name": "clang/link", 390*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?link", 391*8975f5c5SAndroid Build Coastguard Worker "handler": "clang_link", 392*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": [ 393*8975f5c5SAndroid Build Coastguard Worker "*.cc", 394*8975f5c5SAndroid Build Coastguard Worker "*.h", 395*8975f5c5SAndroid Build Coastguard Worker "*.js", 396*8975f5c5SAndroid Build Coastguard Worker "*.pak", 397*8975f5c5SAndroid Build Coastguard Worker "*.py", 398*8975f5c5SAndroid Build Coastguard Worker "*.stamp", 399*8975f5c5SAndroid Build Coastguard Worker ], 400*8975f5c5SAndroid Build Coastguard Worker "remote": config.get(ctx, "remote-link"), 401*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": True, 402*8975f5c5SAndroid Build Coastguard Worker "platform_ref": "large", 403*8975f5c5SAndroid Build Coastguard Worker "timeout": "10m", 404*8975f5c5SAndroid Build Coastguard Worker }, 405*8975f5c5SAndroid Build Coastguard Worker ]) 406*8975f5c5SAndroid Build Coastguard Worker if win_sdk.enabled(ctx): 407*8975f5c5SAndroid Build Coastguard Worker step_config["rules"].extend([ 408*8975f5c5SAndroid Build Coastguard Worker { 409*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cl/cxx", 410*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?cxx", 411*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang-cl ", 412*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 413*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin/clang-cl", 414*8975f5c5SAndroid Build Coastguard Worker ], 415*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": ["*.stamp"], 416*8975f5c5SAndroid Build Coastguard Worker "remote": True, 417*8975f5c5SAndroid Build Coastguard Worker "input_root_absolute_path": input_root_absolute_path, 418*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": canonicalize_dir, 419*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 420*8975f5c5SAndroid Build Coastguard Worker }, 421*8975f5c5SAndroid Build Coastguard Worker { 422*8975f5c5SAndroid Build Coastguard Worker "name": "clang-cl/cc", 423*8975f5c5SAndroid Build Coastguard Worker "action": "(.*_)?cc", 424*8975f5c5SAndroid Build Coastguard Worker "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang-cl ", 425*8975f5c5SAndroid Build Coastguard Worker "inputs": [ 426*8975f5c5SAndroid Build Coastguard Worker "third_party/llvm-build/Release+Asserts/bin/clang-cl", 427*8975f5c5SAndroid Build Coastguard Worker ], 428*8975f5c5SAndroid Build Coastguard Worker "exclude_input_patterns": ["*.stamp"], 429*8975f5c5SAndroid Build Coastguard Worker "remote": True, 430*8975f5c5SAndroid Build Coastguard Worker "input_root_absolute_path": input_root_absolute_path, 431*8975f5c5SAndroid Build Coastguard Worker "canonicalize_dir": canonicalize_dir, 432*8975f5c5SAndroid Build Coastguard Worker "timeout": "2m", 433*8975f5c5SAndroid Build Coastguard Worker }, 434*8975f5c5SAndroid Build Coastguard Worker ]) 435*8975f5c5SAndroid Build Coastguard Worker win_sdk.step_config(ctx, step_config) 436*8975f5c5SAndroid Build Coastguard Worker return step_config 437*8975f5c5SAndroid Build Coastguard Worker 438*8975f5c5SAndroid Build Coastguard Workerclang = module( 439*8975f5c5SAndroid Build Coastguard Worker "clang", 440*8975f5c5SAndroid Build Coastguard Worker step_config = __step_config, 441*8975f5c5SAndroid Build Coastguard Worker filegroups = __filegroups, 442*8975f5c5SAndroid Build Coastguard Worker handlers = __handlers, 443*8975f5c5SAndroid Build Coastguard Worker) 444