1# -*- bazel-starlark -*- 2# Copyright 2023 The Chromium Authors 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5"""Siso configuration for clang-cl/windows.""" 6 7load("@builtin//encoding.star", "json") 8load("@builtin//path.star", "path") 9load("@builtin//struct.star", "module") 10load("./clang_all.star", "clang_all") 11load("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper") 12load("./rewrapper_cfg.star", "rewrapper_cfg") 13 14def __win_toolchain_dir(ctx): 15 # build/win_toolchain.json may not exist when 16 # $env:DEPOT_TOOLS_WIN_TOOLCHAIN=0 or so. 17 if not ctx.fs.exists("build/win_toolchain.json"): 18 return None 19 data = json.decode(str(ctx.fs.read("build/win_toolchain.json"))) 20 if "path" in data: 21 return ctx.fs.canonpath(data["path"]) 22 return None 23 24def __filegroups(ctx): 25 win_toolchain_dir = __win_toolchain_dir(ctx) 26 fg = {} 27 if win_toolchain_dir: 28 fg.update({ 29 # for precomputed subtree 30 win_toolchain_dir + ":headers-ci": { 31 "type": "glob", 32 "includes": [ 33 "*.h", 34 "*.inl", 35 "*.H", 36 "*.Hxx", 37 "*.hxx", 38 "*.hpp", 39 "VC/Tools/MSVC/*/include/*", 40 "VC/Tools/MSVC/*/include/*/*", 41 ], 42 }, 43 }) 44 fg.update(clang_all.filegroups(ctx)) 45 return fg 46 47def __clang_compile_coverage(ctx, cmd): 48 clang_command = clang_code_coverage_wrapper.run(ctx, list(cmd.args)) 49 ctx.actions.fix(args = clang_command) 50 51__handlers = { 52 "clang_compile_coverage": __clang_compile_coverage, 53} 54 55def __step_config(ctx, step_config): 56 cfg = "buildtools/reclient_cfgs/chromium-browser-clang/rewrapper_windows.cfg" 57 if ctx.fs.exists(cfg): 58 reproxy_config = rewrapper_cfg.parse(ctx, cfg) 59 step_config["platforms"].update({ 60 "clang-cl": reproxy_config["platform"], 61 }) 62 step_config["input_deps"].update(clang_all.input_deps) 63 64 # when win_toolchain_dir is unknown (e.g. 65 # missing build/win_toolchain.json), we can't run 66 # clang-cl remotely as we can find sysroot files 67 # under exec_root, so just run locally. 68 remote = False 69 win_toolchain_dir = __win_toolchain_dir(ctx) 70 if win_toolchain_dir: 71 if reproxy_config["platform"]["OSFamily"] == "Windows": 72 step_config["input_deps"].update({ 73 win_toolchain_dir + ":headers": [ 74 win_toolchain_dir + ":headers-ci", 75 ], 76 }) 77 else: 78 step_config["input_deps"].update({ 79 win_toolchain_dir + ":headers": [ 80 win_toolchain_dir + ":headers-ci", 81 # third_party/libc++ includes "DeplayIMP.h" 82 path.join(win_toolchain_dir, "VC/Tools/MSVC/14.34.31933/include/DelayIMP.h"), 83 # third_party/abseil-cpp includes "dbghelp.h" 84 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/dbghelp.h"), 85 # third_party/abseil-cpp includes "aclapi.h" 86 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/aclapi.h"), 87 # base/debug includes "psapi.h" 88 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/psapi.h"), 89 # base/process includes "tlhelp32.h" 90 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/tlhelp32.h"), 91 # base/process includes "userenv.h" 92 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/userenv.h"), 93 # base includes "shlobj.h" 94 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/shlobj.h"), 95 # base/win includes "lm.h" 96 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/lm.h"), 97 # base/win includes "mdmregistration.h" 98 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/mdmregistration.h"), 99 # base/win includes "shellscalingapi.h" 100 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/shellscalingapi.h"), 101 # base/win includes "uiviewsettingsinterop.h" 102 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/uiviewsettingsinterop.h"), 103 # native_client/src/shared/platform/win includes "WinError.h" 104 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/WinError.h"), 105 # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.h" 106 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/cppwinrt/winrt/windows.graphics.directX.direct3d11.h"), 107 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/winrt/windows.graphics.directX.direct3d11.h"), 108 # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.interop.h" 109 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/windows.graphics.directX.direct3d11.interop.h"), 110 # third_party/crashpad/crashpad/handler/win includes "werapi.h" 111 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/werapi.h"), 112 # chrome/install_static/ includes "wtsapi32.h" 113 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/wtsapi32.h"), 114 # third_party/dawn/include/dawn/native includes "DXGI1_4.h" 115 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/DXGI1_4.h"), 116 # v8/src/diagnostics includes "versionhelpers.h" 117 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/versionhelpers.h"), 118 # ui/gfx/ includes "DXGIType.h" 119 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/DXGIType.h"), 120 # third_party/unrar includes "PowrProf.h" 121 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/PowrProf.h"), 122 # device/base/ includes "dbt.h" 123 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/dbt.h"), 124 # third_party/skia/ includes "ObjBase.h" 125 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/ObjBase.h"), 126 # third_party/webrtc/rtc_base includes "ws2spi.h" 127 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/ws2spi.h"), 128 # third_party/skia/ includes "T2EmbApi.h" 129 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/T2EmbApi.h"), 130 # device/vr/windows/ includes "D3D11_1.h" 131 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/D3D11_1.h"), 132 # rlz/win/ includes "Sddl.h" 133 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/Sddl.h"), 134 # chrome/common/safe_browsing/ includes "softpub.h" 135 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/softpub.h"), 136 # services/device/generic_sensor/ includes "Sensors.h" 137 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Sensors.h"), 138 # third_party/webrtc/modules/desktop_capture/win includes "windows.graphics.capture.interop.h" 139 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/windows.graphics.capture.interop.h"), 140 # third_party/skia/ includes "FontSub.h" 141 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/FontSub.h"), 142 # chrome/updater/ includes "regstr.h" 143 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/regstr.h"), 144 # services/device/compute_pressure includes "pdh.h" 145 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/pdh.h"), 146 # chrome/installer/ includes "mshtmhst.h" 147 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/mshtmhst.h"), 148 # net/ssl/ includes "NCrypt.h" 149 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/NCrypt.h"), 150 # device/fido/win/ includes "Combaseapi.h" 151 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Combaseapi.h"), 152 # components/device_signals/core/system_signals/win includes "wscapi.h" 153 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/wscapi.h"), 154 # net/proxy_resolution/win/ includes "dhcpcsdk.h" 155 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/dhcpcsdk.h"), 156 # third_party/dawn/third_party/glfw includes "xinput.h" 157 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/xinput.h"), 158 # v8/tools/v8windbg includes "pathcch.h" 159 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/pathcch.h"), 160 # remoting/host includes "rpcproxy.h" 161 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/rpcproxy.h"), 162 # sandbox/win includes "Aclapi.h" 163 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Aclapi.h"), 164 # ui/accessibility/platform includes "uiautomation.h" 165 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/uiautomation.h"), 166 # chrome/credential_provider/gaiacp includes "ntsecapi.h" 167 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/ntsecapi.h"), 168 # net/dns includes "Winsock2.h" 169 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Winsock2.h"), 170 # media/cdm/win includes "mferror.h" 171 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/mferror.h"), 172 # chrome/credentialProvider/gaiacp includes "Winternl.h" 173 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Winternl.h"), 174 # media/audio/win includes "audioclient.h" 175 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/audioclient.h"), 176 # media/audio/win includes "MMDeviceAPI.h" 177 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/MMDeviceAPI.h"), 178 # net/proxy_resolution/win includes "dhcpv6csdk.h" 179 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/dhcpv6csdk.h"), 180 # components/system_media_controls/win includes "systemmediatransportcontrolsinterop.h" 181 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/systemmediatransportcontrolsinterop.h"), 182 # ui/native_theme includes "Windows.Media.ClosedCaptioning.h" 183 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/cppwinrt/winrt/Windows.Media.ClosedCaptioning.h"), 184 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/winrt/Windows.Media.ClosedCaptioning.h"), 185 # media/audio/win includes "Functiondiscoverykeys_devpkey.h" 186 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Functiondiscoverykeys_devpkey.h"), 187 # device/fido includes "Winuser.h" 188 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Winuser.h"), 189 # chrome/updater/win includes "msxml2.h" 190 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/msxml2.h"), 191 # remoting/host includes "ime.h" 192 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/ime.h"), 193 # remoting/host/win includes "D3DCommon.h" 194 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/D3DCommon.h"), 195 # ui/views/controls/menu includes "Vssym32.h" 196 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Vssym32.h"), 197 # third_party/wtl includes "richedit.h" 198 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/richedit.h"), 199 # chrome/updater/net includes "Urlmon.h" 200 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Urlmon.h"), 201 # device/gamepad includes "XInput.h" 202 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/XInput.h"), 203 # chrome/credential_provider/gaiacp includes "Shlobj.h" 204 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Shlobj.h"), 205 # content/renderer includes "mlang.h" 206 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/mlang.h"), 207 # components/storage_monitor includes "portabledevice.h" 208 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/portabledevice.h"), 209 # third_party/wtl includes "richole.h" 210 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/richole.h"), 211 # chrome/utility/importer includes "intshcut.h" 212 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/intshcut.h"), 213 # chrome/browser/net includes "Ws2spi.h" 214 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Ws2spi.h"), 215 # chrome/browser/enterprise/platform_auth includes "proofofpossessioncookieinfo.h)" 216 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/proofofpossessioncookieinfo.h"), 217 # chrome/utility/importer includes "urlhist.h" 218 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/urlhist.h"), 219 # chrome/updater/win/installer includes "msiquery.h" 220 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/msiquery.h"), 221 # third_party/win_virtual_display/controller includes "Devpropdef.h" 222 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/Devpropdef.h"), 223 # third_party/dawn/third_party/dxc/include/dxc/Support/WinIncludes.h "ObjIdl.h" 224 path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/ObjIdl.h"), 225 ], 226 }) 227 remote = True 228 step_config["rules"].extend([ 229 { 230 "name": "clang-cl/cxx", 231 "action": "(.*_)?cxx", 232 "command_prefix": "..\\..\\third_party\\llvm-build\\Release+Asserts\\bin\\clang-cl.exe", 233 "platform_ref": "clang-cl", 234 "remote": remote, 235 "remote_wrapper": reproxy_config["remote_wrapper"], 236 "timeout": "2m", 237 }, 238 { 239 "name": "clang-cl/cc", 240 "action": "(.*_)?cc", 241 "command_prefix": "..\\..\\third_party\\llvm-build\\Release+Asserts\\bin\\clang-cl.exe", 242 "platform_ref": "clang-cl", 243 "remote": remote, 244 "remote_wrapper": reproxy_config["remote_wrapper"], 245 "timeout": "2m", 246 }, 247 { 248 "name": "clang-coverage/cxx", 249 "action": "(.*_)?cxx", 250 "command_prefix": "python3.exe ../../build/toolchain/clang_code_coverage_wrapper.py", 251 "inputs": [ 252 "third_party/llvm-build/Release+Asserts/bin/clang++", 253 ], 254 "handler": "clang_compile_coverage", 255 "platform_ref": "clang-cl", 256 "remote": remote, 257 "remote_wrapper": reproxy_config["remote_wrapper"], 258 "timeout": "2m", 259 }, 260 { 261 "name": "clang-coverage/cc", 262 "action": "(.*_)?cc", 263 "command_prefix": "python3.exe ../../build/toolchain/clang_code_coverage_wrapper.py", 264 "inputs": [ 265 "third_party/llvm-build/Release+Asserts/bin/clang", 266 ], 267 "handler": "clang_compile_coverage", 268 "platform_ref": "clang-cl", 269 "remote": remote, 270 "remote_wrapper": reproxy_config["remote_wrapper"], 271 "timeout": "2m", 272 }, 273 ]) 274 return step_config 275 276clang = module( 277 "clang", 278 step_config = __step_config, 279 filegroups = __filegroups, 280 handlers = __handlers, 281) 282