xref: /aosp_15_r20/external/angle/build/config/siso/clang_linux.star (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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