xref: /aosp_15_r20/external/cronet/build/config/siso/clang_mac.star (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# -*- bazel-starlark -*-
2*6777b538SAndroid Build Coastguard Worker# Copyright 2023 The Chromium Authors
3*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
5*6777b538SAndroid Build Coastguard Worker"""Siso configuration for clang/mac."""
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Workerload("@builtin//lib/gn.star", "gn")
8*6777b538SAndroid Build Coastguard Workerload("@builtin//path.star", "path")
9*6777b538SAndroid Build Coastguard Workerload("@builtin//struct.star", "module")
10*6777b538SAndroid Build Coastguard Workerload("./clang_all.star", "clang_all")
11*6777b538SAndroid Build Coastguard Workerload("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper")
12*6777b538SAndroid Build Coastguard Workerload("./rewrapper_cfg.star", "rewrapper_cfg")
13*6777b538SAndroid Build Coastguard Worker
14*6777b538SAndroid Build Coastguard Workerdef __filegroups(ctx):
15*6777b538SAndroid Build Coastguard Worker    sdk_includes = [
16*6777b538SAndroid Build Coastguard Worker        "*.framework",
17*6777b538SAndroid Build Coastguard Worker        "*.h",
18*6777b538SAndroid Build Coastguard Worker        "*.json",
19*6777b538SAndroid Build Coastguard Worker        "*.modulemap",
20*6777b538SAndroid Build Coastguard Worker        "Current",
21*6777b538SAndroid Build Coastguard Worker        "Frameworks",
22*6777b538SAndroid Build Coastguard Worker        "Headers",
23*6777b538SAndroid Build Coastguard Worker        "Modules",
24*6777b538SAndroid Build Coastguard Worker        "crt*.o",
25*6777b538SAndroid Build Coastguard Worker        "usr/include/c++/v1/*",
26*6777b538SAndroid Build Coastguard Worker        "usr/include/c++/v1/*/*",
27*6777b538SAndroid Build Coastguard Worker    ]
28*6777b538SAndroid Build Coastguard Worker    fg = {
29*6777b538SAndroid Build Coastguard Worker        "build/mac_files/xcode_binaries/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk:headers": {
30*6777b538SAndroid Build Coastguard Worker            "type": "glob",
31*6777b538SAndroid Build Coastguard Worker            "includes": sdk_includes,
32*6777b538SAndroid Build Coastguard Worker        },
33*6777b538SAndroid Build Coastguard Worker    }
34*6777b538SAndroid Build Coastguard Worker
35*6777b538SAndroid Build Coastguard Worker    # precompute subtree for sysroot/frameworks for siso scandeps,
36*6777b538SAndroid Build Coastguard Worker    # which is not complex enough to handle C preprocessor tricks
37*6777b538SAndroid Build Coastguard Worker    # and need system include dirs when using deps log of -MMD.
38*6777b538SAndroid Build Coastguard Worker    # need to add new entries when new version is used.
39*6777b538SAndroid Build Coastguard Worker    # TODO: b/323091468 - get sysroot, ios_sdk_path from gn
40*6777b538SAndroid Build Coastguard Worker    fg[ctx.fs.canonpath("./sdk/xcode_links/MacOSX14.2.sdk") + ":headers"] = {
41*6777b538SAndroid Build Coastguard Worker        "type": "glob",
42*6777b538SAndroid Build Coastguard Worker        "includes": sdk_includes,
43*6777b538SAndroid Build Coastguard Worker    }
44*6777b538SAndroid Build Coastguard Worker    fg[ctx.fs.canonpath("./sdk/xcode_links/iPhoneSimulator17.2.sdk") + ":headers"] = {
45*6777b538SAndroid Build Coastguard Worker        "type": "glob",
46*6777b538SAndroid Build Coastguard Worker        "includes": sdk_includes,
47*6777b538SAndroid Build Coastguard Worker    }
48*6777b538SAndroid Build Coastguard Worker
49*6777b538SAndroid Build Coastguard Worker    # https://b.corp.google.com/issues/332652041#comment2
50*6777b538SAndroid Build Coastguard Worker    fg[ctx.fs.canonpath("./sdk/xcode_links/MacOSX14.4.sdk") + ":headers"] = {
51*6777b538SAndroid Build Coastguard Worker        "type": "glob",
52*6777b538SAndroid Build Coastguard Worker        "includes": sdk_includes,
53*6777b538SAndroid Build Coastguard Worker    }
54*6777b538SAndroid Build Coastguard Worker    fg[ctx.fs.canonpath("./sdk/xcode_links/iPhoneSimulator17.4.sdk") + ":headers"] = {
55*6777b538SAndroid Build Coastguard Worker        "type": "glob",
56*6777b538SAndroid Build Coastguard Worker        "includes": sdk_includes,
57*6777b538SAndroid Build Coastguard Worker    }
58*6777b538SAndroid Build Coastguard Worker    fg[ctx.fs.canonpath("./sdk/xcode_links/iPhoneSimulator.platform/Developer/Library/Frameworks") + ":headers"] = {
59*6777b538SAndroid Build Coastguard Worker        "type": "glob",
60*6777b538SAndroid Build Coastguard Worker        "includes": sdk_includes,
61*6777b538SAndroid Build Coastguard Worker    }
62*6777b538SAndroid Build Coastguard Worker    fg.update(clang_all.filegroups(ctx))
63*6777b538SAndroid Build Coastguard Worker    return fg
64*6777b538SAndroid Build Coastguard Worker
65*6777b538SAndroid Build Coastguard Workerdef __clang_compile_coverage(ctx, cmd):
66*6777b538SAndroid Build Coastguard Worker    clang_command = clang_code_coverage_wrapper.run(ctx, list(cmd.args))
67*6777b538SAndroid Build Coastguard Worker    ctx.actions.fix(args = clang_command)
68*6777b538SAndroid Build Coastguard Worker
69*6777b538SAndroid Build Coastguard Worker__handlers = {
70*6777b538SAndroid Build Coastguard Worker    "clang_compile_coverage": __clang_compile_coverage,
71*6777b538SAndroid Build Coastguard Worker}
72*6777b538SAndroid Build Coastguard Worker
73*6777b538SAndroid Build Coastguard Workerdef __step_config(ctx, step_config):
74*6777b538SAndroid Build Coastguard Worker    cfg = "buildtools/reclient_cfgs/chromium-browser-clang/rewrapper_mac.cfg"
75*6777b538SAndroid Build Coastguard Worker    if ctx.fs.exists(cfg):
76*6777b538SAndroid Build Coastguard Worker        reproxy_config = rewrapper_cfg.parse(ctx, cfg)
77*6777b538SAndroid Build Coastguard Worker        largePlatform = {}
78*6777b538SAndroid Build Coastguard Worker        for k, v in reproxy_config["platform"].items():
79*6777b538SAndroid Build Coastguard Worker            if k.startswith("label:action"):
80*6777b538SAndroid Build Coastguard Worker                continue
81*6777b538SAndroid Build Coastguard Worker            largePlatform[k] = v
82*6777b538SAndroid Build Coastguard Worker        largePlatform["label:action_large"] = "1"
83*6777b538SAndroid Build Coastguard Worker        step_config["platforms"].update({
84*6777b538SAndroid Build Coastguard Worker            "clang": reproxy_config["platform"],
85*6777b538SAndroid Build Coastguard Worker            "clang_large": largePlatform,
86*6777b538SAndroid Build Coastguard Worker        })
87*6777b538SAndroid Build Coastguard Worker        step_config["input_deps"].update(clang_all.input_deps)
88*6777b538SAndroid Build Coastguard Worker
89*6777b538SAndroid Build Coastguard Worker        # TODO: https://issues.chromium.org/40120210 - remove this
90*6777b538SAndroid Build Coastguard Worker        # once we can use relative path in hmap.
91*6777b538SAndroid Build Coastguard Worker        need_input_root_absolute_path_for_objc = False
92*6777b538SAndroid Build Coastguard Worker        gn_args = gn.args(ctx)
93*6777b538SAndroid Build Coastguard Worker        if gn_args.get("target_os") == "\"ios\"":
94*6777b538SAndroid Build Coastguard Worker            # objc/objcxx uses hmap, which contains absolute path
95*6777b538SAndroid Build Coastguard Worker            # see also b/256536089
96*6777b538SAndroid Build Coastguard Worker            need_input_root_absolute_path_for_objc = True
97*6777b538SAndroid Build Coastguard Worker        step_config["rules"].extend([
98*6777b538SAndroid Build Coastguard Worker            {
99*6777b538SAndroid Build Coastguard Worker                "name": "clang/cxx",
100*6777b538SAndroid Build Coastguard Worker                "action": "(.*_)?cxx",
101*6777b538SAndroid Build Coastguard Worker                "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang++",
102*6777b538SAndroid Build Coastguard Worker                "inputs": [
103*6777b538SAndroid Build Coastguard Worker                    "third_party/llvm-build/Release+Asserts/bin/clang++",
104*6777b538SAndroid Build Coastguard Worker                ],
105*6777b538SAndroid Build Coastguard Worker                "exclude_input_patterns": ["*.stamp"],
106*6777b538SAndroid Build Coastguard Worker                "platform_ref": "clang",
107*6777b538SAndroid Build Coastguard Worker                "remote": True,
108*6777b538SAndroid Build Coastguard Worker                "remote_wrapper": reproxy_config["remote_wrapper"],
109*6777b538SAndroid Build Coastguard Worker                "timeout": "2m",
110*6777b538SAndroid Build Coastguard Worker            },
111*6777b538SAndroid Build Coastguard Worker            {
112*6777b538SAndroid Build Coastguard Worker                "name": "clang/cc",
113*6777b538SAndroid Build Coastguard Worker                "action": "(.*_)?cc",
114*6777b538SAndroid Build Coastguard Worker                "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang",
115*6777b538SAndroid Build Coastguard Worker                "inputs": [
116*6777b538SAndroid Build Coastguard Worker                    "third_party/llvm-build/Release+Asserts/bin/clang",
117*6777b538SAndroid Build Coastguard Worker                ],
118*6777b538SAndroid Build Coastguard Worker                "exclude_input_patterns": ["*.stamp"],
119*6777b538SAndroid Build Coastguard Worker                "platform_ref": "clang",
120*6777b538SAndroid Build Coastguard Worker                "remote": True,
121*6777b538SAndroid Build Coastguard Worker                "remote_wrapper": reproxy_config["remote_wrapper"],
122*6777b538SAndroid Build Coastguard Worker                "timeout": "2m",
123*6777b538SAndroid Build Coastguard Worker            },
124*6777b538SAndroid Build Coastguard Worker            {
125*6777b538SAndroid Build Coastguard Worker                "name": "clang/objcxx",
126*6777b538SAndroid Build Coastguard Worker                "action": "(.*_)?objcxx",
127*6777b538SAndroid Build Coastguard Worker                "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang++",
128*6777b538SAndroid Build Coastguard Worker                "inputs": [
129*6777b538SAndroid Build Coastguard Worker                    "third_party/llvm-build/Release+Asserts/bin/clang++",
130*6777b538SAndroid Build Coastguard Worker                ],
131*6777b538SAndroid Build Coastguard Worker                "exclude_input_patterns": ["*.stamp"],
132*6777b538SAndroid Build Coastguard Worker                "platform_ref": "clang",
133*6777b538SAndroid Build Coastguard Worker                "remote": True,
134*6777b538SAndroid Build Coastguard Worker                "remote_wrapper": reproxy_config["remote_wrapper"],
135*6777b538SAndroid Build Coastguard Worker                "timeout": "2m",
136*6777b538SAndroid Build Coastguard Worker                "input_root_absolute_path": need_input_root_absolute_path_for_objc,
137*6777b538SAndroid Build Coastguard Worker            },
138*6777b538SAndroid Build Coastguard Worker            {
139*6777b538SAndroid Build Coastguard Worker                "name": "clang/objc",
140*6777b538SAndroid Build Coastguard Worker                "action": "(.*_)?objc",
141*6777b538SAndroid Build Coastguard Worker                "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang",
142*6777b538SAndroid Build Coastguard Worker                "inputs": [
143*6777b538SAndroid Build Coastguard Worker                    "third_party/llvm-build/Release+Asserts/bin/clang",
144*6777b538SAndroid Build Coastguard Worker                ],
145*6777b538SAndroid Build Coastguard Worker                "exclude_input_patterns": ["*.stamp"],
146*6777b538SAndroid Build Coastguard Worker                "platform_ref": "clang",
147*6777b538SAndroid Build Coastguard Worker                "remote": True,
148*6777b538SAndroid Build Coastguard Worker                "remote_wrapper": reproxy_config["remote_wrapper"],
149*6777b538SAndroid Build Coastguard Worker                "timeout": "2m",
150*6777b538SAndroid Build Coastguard Worker                "input_root_absolute_path": need_input_root_absolute_path_for_objc,
151*6777b538SAndroid Build Coastguard Worker            },
152*6777b538SAndroid Build Coastguard Worker            {
153*6777b538SAndroid Build Coastguard Worker                "name": "clang-coverage/cxx",
154*6777b538SAndroid Build Coastguard Worker                "action": "(.*_)?cxx",
155*6777b538SAndroid Build Coastguard Worker                "command_prefix": "python3 ../../build/toolchain/clang_code_coverage_wrapper.py",
156*6777b538SAndroid Build Coastguard Worker                "inputs": [
157*6777b538SAndroid Build Coastguard Worker                    "third_party/llvm-build/Release+Asserts/bin/clang++",
158*6777b538SAndroid Build Coastguard Worker                ],
159*6777b538SAndroid Build Coastguard Worker                "exclude_input_patterns": ["*.stamp"],
160*6777b538SAndroid Build Coastguard Worker                "handler": "clang_compile_coverage",
161*6777b538SAndroid Build Coastguard Worker                "platform_ref": "clang",
162*6777b538SAndroid Build Coastguard Worker                "remote": True,
163*6777b538SAndroid Build Coastguard Worker                "remote_wrapper": reproxy_config["remote_wrapper"],
164*6777b538SAndroid Build Coastguard Worker                "timeout": "2m",
165*6777b538SAndroid Build Coastguard Worker            },
166*6777b538SAndroid Build Coastguard Worker            {
167*6777b538SAndroid Build Coastguard Worker                "name": "clang-coverage/cc",
168*6777b538SAndroid Build Coastguard Worker                "action": "(.*_)?cc",
169*6777b538SAndroid Build Coastguard Worker                "command_prefix": "python3 ../../build/toolchain/clang_code_coverage_wrapper.py",
170*6777b538SAndroid Build Coastguard Worker                "inputs": [
171*6777b538SAndroid Build Coastguard Worker                    "third_party/llvm-build/Release+Asserts/bin/clang",
172*6777b538SAndroid Build Coastguard Worker                ],
173*6777b538SAndroid Build Coastguard Worker                "exclude_input_patterns": ["*.stamp"],
174*6777b538SAndroid Build Coastguard Worker                "handler": "clang_compile_coverage",
175*6777b538SAndroid Build Coastguard Worker                "platform_ref": "clang",
176*6777b538SAndroid Build Coastguard Worker                "remote": True,
177*6777b538SAndroid Build Coastguard Worker                "remote_wrapper": reproxy_config["remote_wrapper"],
178*6777b538SAndroid Build Coastguard Worker                "timeout": "2m",
179*6777b538SAndroid Build Coastguard Worker            },
180*6777b538SAndroid Build Coastguard Worker            {
181*6777b538SAndroid Build Coastguard Worker                "name": "clang-coverage/objcxx",
182*6777b538SAndroid Build Coastguard Worker                "action": "(.*_)?objcxx",
183*6777b538SAndroid Build Coastguard Worker                "command_prefix": "python3 ../../build/toolchain/clang_code_coverage_wrapper.py",
184*6777b538SAndroid Build Coastguard Worker                "inputs": [
185*6777b538SAndroid Build Coastguard Worker                    "third_party/llvm-build/Release+Asserts/bin/clang++",
186*6777b538SAndroid Build Coastguard Worker                ],
187*6777b538SAndroid Build Coastguard Worker                "exclude_input_patterns": ["*.stamp"],
188*6777b538SAndroid Build Coastguard Worker                "handler": "clang_compile_coverage",
189*6777b538SAndroid Build Coastguard Worker                "platform_ref": "clang",
190*6777b538SAndroid Build Coastguard Worker                "remote": True,
191*6777b538SAndroid Build Coastguard Worker                "remote_wrapper": reproxy_config["remote_wrapper"],
192*6777b538SAndroid Build Coastguard Worker                "timeout": "2m",
193*6777b538SAndroid Build Coastguard Worker                "input_root_absolute_path": need_input_root_absolute_path_for_objc,
194*6777b538SAndroid Build Coastguard Worker            },
195*6777b538SAndroid Build Coastguard Worker            {
196*6777b538SAndroid Build Coastguard Worker                "name": "clang-coverage/objc",
197*6777b538SAndroid Build Coastguard Worker                "action": "(.*_)?objc",
198*6777b538SAndroid Build Coastguard Worker                "command_prefix": "python3 ../../build/toolchain/clang_code_coverage_wrapper.py",
199*6777b538SAndroid Build Coastguard Worker                "inputs": [
200*6777b538SAndroid Build Coastguard Worker                    "third_party/llvm-build/Release+Asserts/bin/clang",
201*6777b538SAndroid Build Coastguard Worker                ],
202*6777b538SAndroid Build Coastguard Worker                "exclude_input_patterns": ["*.stamp"],
203*6777b538SAndroid Build Coastguard Worker                "handler": "clang_compile_coverage",
204*6777b538SAndroid Build Coastguard Worker                "platform_ref": "clang",
205*6777b538SAndroid Build Coastguard Worker                "remote": True,
206*6777b538SAndroid Build Coastguard Worker                "remote_wrapper": reproxy_config["remote_wrapper"],
207*6777b538SAndroid Build Coastguard Worker                "timeout": "2m",
208*6777b538SAndroid Build Coastguard Worker                "input_root_absolute_path": need_input_root_absolute_path_for_objc,
209*6777b538SAndroid Build Coastguard Worker            },
210*6777b538SAndroid Build Coastguard Worker        ])
211*6777b538SAndroid Build Coastguard Worker    return step_config
212*6777b538SAndroid Build Coastguard Worker
213*6777b538SAndroid Build Coastguard Workerclang = module(
214*6777b538SAndroid Build Coastguard Worker    "clang",
215*6777b538SAndroid Build Coastguard Worker    step_config = __step_config,
216*6777b538SAndroid Build Coastguard Worker    filegroups = __filegroups,
217*6777b538SAndroid Build Coastguard Worker    handlers = __handlers,
218*6777b538SAndroid Build Coastguard Worker)
219