siso: add Cross-compiling Chrome/Win support
https://chromium.googlesource.com/chromium/src/+/lkgr/docs/win_cross.md ``` ukai@ukai ...src/chromium/src % cat out/win-cross/args.gn target_os = "win" is_component_build = true use_remoteexec = true use_reclient = false use_siso = true ukai@ukai ...src/chromium/src % gn clean out/win-cross ukai@ukai ...src/chromium/src % siso ninja -C out/win-cross depot_tools/siso.py: Using Siso binary from SISO_PATH: /usr/local/google/home/ukai/go/bin/siso. ninja: Entering directory `out/win-cross' reapi instance: projects/rbe-chrome-untrusted/instances/default_instance 5.96s load siso config 4.69s Regenerating ninja files 2.90s reloading 2.87s schedule pending:106032+ready:16240 (node:313917 edge:122272) build finished local:8050 remote:75674 cache:6927 fallback:39 retry:0 skip:31621 reapi: ops: 234097(err:75727) / r:236746(err:1) 120.04GiB / w:358125(err:0) 740.61MiB fs: ops: 4485290(err:701000) / r:461936(err:0) 288.99GiB / w:133373(err:0) 111.47GiB resource/capa used(err) wait-avg | s m | serv-avg | s m | fastlocal/6 230(0) 0.00s | | 3.31s | ▄▇█▃▂ | localexec/128 1607(0) 0.00s |█ ▂ | 0.57s |█▇▄▂▂▂ | pool=action/128 4564(0) 0.77s |█▂▆▇ | 0.35s | ▆█▂▂▂ | pool=link/30 1142(0) 0.23s |█▂▃▃ | 1.56s | ▂█▃▂▂ | preproc/65536 82640(0) 0.00s |█▂▂ | 7.24s |▂▂▃█▄▂ | rbe:sched 75713(0) 0.01s |▆█▂▂ | 7.10s |▂ ▂█▃▂ | rbe:worker 75713(0) 0.74s | ██▂ | 6.36s |▂ ▂█▃▂ | remoteexec/10240 75713(39) 0.00s |█▂ | 15.39s | ▆█▂ | 10m14.13s Build Succeeded: 90651 steps - 147.61/s ``` fallback are - 35 rust_bin - 1 rust_cdylib - 3 clang-cl (deadline exceeded) Change-Id: I837e7c711409c76d4aa91b5eac0da4f020a8f956 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5960537 Commit-Queue: Fumitoshi Ukai <ukai@google.com> Auto-Submit: Fumitoshi Ukai <ukai@google.com> Reviewed-by: Takuto Ikuta <tikuta@chromium.org> Cr-Commit-Position: refs/heads/main@{#1373162}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
4169531a55
commit
9f70ce8e8c
build/config/siso
@ -31,6 +31,7 @@ def __filegroups(ctx):
|
||||
"*.h",
|
||||
"bin/clang",
|
||||
"bin/clang++",
|
||||
"bin/clang-cl",
|
||||
"bin/clang-cl.exe",
|
||||
"*_ignorelist.txt",
|
||||
# https://crbug.com/335997052
|
||||
|
@ -12,6 +12,7 @@ load("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper")
|
||||
load("./config.star", "config")
|
||||
load("./cros.star", "cros")
|
||||
load("./gn_logs.star", "gn_logs")
|
||||
load("./win_sdk.star", "win_sdk")
|
||||
|
||||
# TODO: b/323091468 - Propagate target android ABI and android SDK version
|
||||
# from GN, and remove the hardcoded filegroups.
|
||||
@ -89,7 +90,8 @@ def __filegroups(ctx):
|
||||
"type": "glob",
|
||||
"includes": ["*"],
|
||||
}
|
||||
|
||||
if win_sdk.enabled(ctx):
|
||||
fg.update(win_sdk.filegroups(ctx))
|
||||
fg.update(clang_all.filegroups(ctx))
|
||||
return fg
|
||||
|
||||
@ -234,6 +236,36 @@ def __step_config(ctx, step_config):
|
||||
"timeout": "2m",
|
||||
},
|
||||
])
|
||||
if win_sdk.enabled(ctx):
|
||||
step_config["rules"].extend([
|
||||
{
|
||||
"name": "clang-cl/cxx",
|
||||
"action": "(.*_)?cxx",
|
||||
"command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang-cl ",
|
||||
"inputs": [
|
||||
"third_party/llvm-build/Release+Asserts/bin/clang-cl",
|
||||
],
|
||||
"exclude_input_patterns": ["*.stamp"],
|
||||
"remote": True,
|
||||
"input_root_absolute_path": input_root_absolute_path,
|
||||
"canonicalize_dir": canonicalize_dir,
|
||||
"timeout": "2m",
|
||||
},
|
||||
{
|
||||
"name": "clang-cl/cc",
|
||||
"action": "(.*_)?cc",
|
||||
"command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang-cl ",
|
||||
"inputs": [
|
||||
"third_party/llvm-build/Release+Asserts/bin/clang-cl",
|
||||
],
|
||||
"exclude_input_patterns": ["*.stamp"],
|
||||
"remote": True,
|
||||
"input_root_absolute_path": input_root_absolute_path,
|
||||
"canonicalize_dir": canonicalize_dir,
|
||||
"timeout": "2m",
|
||||
},
|
||||
])
|
||||
win_sdk.step_config(ctx, step_config)
|
||||
|
||||
# TODO: crbug.com/372355740 - Enable remote links for CrOS toolchain builds.
|
||||
if not (cros.custom_toolchain(ctx) or cros.custom_sysroot(ctx)):
|
||||
|
@ -4,7 +4,6 @@
|
||||
# found in the LICENSE file.
|
||||
"""Siso configuration for clang-cl/windows."""
|
||||
|
||||
load("@builtin//encoding.star", "json")
|
||||
load("@builtin//path.star", "path")
|
||||
load("@builtin//struct.star", "module")
|
||||
load("./clang_all.star", "clang_all")
|
||||
@ -12,40 +11,11 @@ load("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper")
|
||||
load("./config.star", "config")
|
||||
load("./gn_logs.star", "gn_logs")
|
||||
load("./rewrapper_cfg.star", "rewrapper_cfg")
|
||||
|
||||
def __win_toolchain_dir(ctx):
|
||||
# build/win_toolchain.json may not exist when
|
||||
# $env:DEPOT_TOOLS_WIN_TOOLCHAIN=0 or so.
|
||||
if not ctx.fs.exists("build/win_toolchain.json"):
|
||||
return None
|
||||
data = json.decode(str(ctx.fs.read("build/win_toolchain.json")))
|
||||
if "path" in data:
|
||||
return ctx.fs.canonpath(data["path"])
|
||||
return None
|
||||
|
||||
def __win_sdk_version(ctx):
|
||||
return gn_logs.read(ctx).get("windows_sdk_version")
|
||||
load("./win_sdk.star", "win_sdk")
|
||||
|
||||
def __filegroups(ctx):
|
||||
win_toolchain_dir = __win_toolchain_dir(ctx)
|
||||
fg = {}
|
||||
if win_toolchain_dir:
|
||||
fg.update({
|
||||
# for precomputed subtree
|
||||
win_toolchain_dir + ":headers-ci": {
|
||||
"type": "glob",
|
||||
"includes": [
|
||||
"*.h",
|
||||
"*.inl",
|
||||
"*.H",
|
||||
"*.Hxx",
|
||||
"*.hxx",
|
||||
"*.hpp",
|
||||
"VC/Tools/MSVC/*/include/*",
|
||||
"VC/Tools/MSVC/*/include/*/*",
|
||||
],
|
||||
},
|
||||
})
|
||||
fg.update(win_sdk.filegroups(ctx))
|
||||
fg.update(clang_all.filegroups(ctx))
|
||||
return fg
|
||||
|
||||
@ -83,7 +53,7 @@ def __step_config(ctx, step_config):
|
||||
# When building with ToT Clang, we can't run clang-cl
|
||||
# remotely, too.
|
||||
remote = False
|
||||
win_toolchain_dir = __win_toolchain_dir(ctx)
|
||||
win_toolchain_dir = win_sdk.toolchain_dir(ctx)
|
||||
if win_toolchain_dir:
|
||||
remote = True
|
||||
if reproxy_config["platform"]["OSFamily"] == "Windows":
|
||||
@ -93,164 +63,7 @@ def __step_config(ctx, step_config):
|
||||
],
|
||||
})
|
||||
else:
|
||||
win_toolchain_headers = [
|
||||
win_toolchain_dir + ":headers-ci",
|
||||
]
|
||||
sdk_version = __win_sdk_version(ctx)
|
||||
if sdk_version:
|
||||
win_toolchain_headers.extend([
|
||||
# third_party/abseil-cpp includes "dbghelp.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dbghelp.h"),
|
||||
# third_party/abseil-cpp includes "aclapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/aclapi.h"),
|
||||
# base/debug includes "psapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/psapi.h"),
|
||||
# base/process includes "tlhelp32.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/tlhelp32.h"),
|
||||
# base/process includes "userenv.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/userenv.h"),
|
||||
# base includes "shlobj.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/shlobj.h"),
|
||||
# base/win includes "lm.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/lm.h"),
|
||||
# base/win includes "mdmregistration.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mdmregistration.h"),
|
||||
# base/win includes "shellscalingapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/shellscalingapi.h"),
|
||||
# base/win includes "uiviewsettingsinterop.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/uiviewsettingsinterop.h"),
|
||||
# native_client/src/shared/platform/win includes "WinError.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/WinError.h"),
|
||||
# third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "cppwinrt/winrt/windows.graphics.directX.direct3d11.h"),
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "winrt/windows.graphics.directX.direct3d11.h"),
|
||||
# third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.interop.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/windows.graphics.directX.direct3d11.interop.h"),
|
||||
# third_party/crashpad/crashpad/handler/win includes "werapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/werapi.h"),
|
||||
# chrome/install_static/ includes "wtsapi32.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/wtsapi32.h"),
|
||||
# third_party/dawn/include/dawn/native includes "DXGI1_4.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/DXGI1_4.h"),
|
||||
# v8/src/diagnostics includes "versionhelpers.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/versionhelpers.h"),
|
||||
# ui/gfx/ includes "DXGIType.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/DXGIType.h"),
|
||||
# third_party/unrar includes "PowrProf.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/PowrProf.h"),
|
||||
# device/base/ includes "dbt.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dbt.h"),
|
||||
# third_party/skia/ includes "ObjBase.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ObjBase.h"),
|
||||
# third_party/webrtc/rtc_base includes "ws2spi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ws2spi.h"),
|
||||
# third_party/skia/ includes "T2EmbApi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/T2EmbApi.h"),
|
||||
# device/vr/windows/ includes "D3D11_1.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/D3D11_1.h"),
|
||||
# rlz/win/ includes "Sddl.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/Sddl.h"),
|
||||
# chrome/common/safe_browsing/ includes "softpub.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/softpub.h"),
|
||||
# services/device/generic_sensor/ includes "Sensors.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Sensors.h"),
|
||||
# third_party/webrtc/modules/desktop_capture/win includes "windows.graphics.capture.interop.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/windows.graphics.capture.interop.h"),
|
||||
# third_party/skia/ includes "FontSub.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/FontSub.h"),
|
||||
# chrome/updater/ includes "regstr.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/regstr.h"),
|
||||
# services/device/compute_pressure includes "pdh.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/pdh.h"),
|
||||
# chrome/installer/ includes "mshtmhst.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mshtmhst.h"),
|
||||
# net/ssl/ includes "NCrypt.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/NCrypt.h"),
|
||||
# device/fido/win/ includes "Combaseapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Combaseapi.h"),
|
||||
# components/device_signals/core/system_signals/win includes "wscapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/wscapi.h"),
|
||||
# net/proxy_resolution/win/ includes "dhcpcsdk.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dhcpcsdk.h"),
|
||||
# third_party/dawn/third_party/glfw includes "xinput.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/xinput.h"),
|
||||
# v8/tools/v8windbg includes "pathcch.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/pathcch.h"),
|
||||
# remoting/host includes "rpcproxy.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/rpcproxy.h"),
|
||||
# sandbox/win includes "Aclapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Aclapi.h"),
|
||||
# ui/accessibility/platform includes "uiautomation.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/uiautomation.h"),
|
||||
# chrome/credential_provider/gaiacp includes "ntsecapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ntsecapi.h"),
|
||||
# net/dns includes "Winsock2.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Winsock2.h"),
|
||||
# media/cdm/win includes "mferror.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mferror.h"),
|
||||
# chrome/credentialProvider/gaiacp includes "Winternl.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Winternl.h"),
|
||||
# media/audio/win includes "audioclient.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/audioclient.h"),
|
||||
# media/audio/win includes "MMDeviceAPI.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/MMDeviceAPI.h"),
|
||||
# net/proxy_resolution/win includes "dhcpv6csdk.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dhcpv6csdk.h"),
|
||||
# components/system_media_controls/win includes "systemmediatransportcontrolsinterop.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/systemmediatransportcontrolsinterop.h"),
|
||||
# ui/native_theme includes "Windows.Media.ClosedCaptioning.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "cppwinrt/winrt/Windows.Media.ClosedCaptioning.h"),
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "winrt/Windows.Media.ClosedCaptioning.h"),
|
||||
# media/audio/win includes "Functiondiscoverykeys_devpkey.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Functiondiscoverykeys_devpkey.h"),
|
||||
# device/fido includes "Winuser.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Winuser.h"),
|
||||
# chrome/updater/win includes "msxml2.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/msxml2.h"),
|
||||
# remoting/host includes "ime.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ime.h"),
|
||||
# remoting/host/win includes "D3DCommon.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/D3DCommon.h"),
|
||||
# ui/views/controls/menu includes "Vssym32.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Vssym32.h"),
|
||||
# third_party/wtl includes "richedit.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/richedit.h"),
|
||||
# chrome/updater/net includes "Urlmon.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Urlmon.h"),
|
||||
# device/gamepad includes "XInput.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/XInput.h"),
|
||||
# chrome/credential_provider/gaiacp includes "Shlobj.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Shlobj.h"),
|
||||
# content/renderer includes "mlang.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mlang.h"),
|
||||
# components/storage_monitor includes "portabledevice.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/portabledevice.h"),
|
||||
# third_party/wtl includes "richole.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/richole.h"),
|
||||
# chrome/utility/importer includes "intshcut.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/intshcut.h"),
|
||||
# chrome/browser/net includes "Ws2spi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Ws2spi.h"),
|
||||
# chrome/browser/enterprise/platform_auth includes "proofofpossessioncookieinfo.h)"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/proofofpossessioncookieinfo.h"),
|
||||
# chrome/utility/importer includes "urlhist.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/urlhist.h"),
|
||||
# chrome/updater/win/installer includes "msiquery.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/msiquery.h"),
|
||||
# third_party/win_virtual_display/controller includes "Devpropdef.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/Devpropdef.h"),
|
||||
# third_party/dawn/third_party/dxc/include/dxc/Support/WinIncludes.h "ObjIdl.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ObjIdl.h"),
|
||||
# third_party/dawn/third_party/dxc/lib/Support includes "D3Dcommon.h"
|
||||
# https://github.com/microsoft/DirectXShaderCompiler/pull/6380
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/D3Dcommon.h"),
|
||||
])
|
||||
else:
|
||||
# sdk_version may be unknown when first build after `gn clean` (no gn_logs.txt yet)
|
||||
print("sdk_version is unknown")
|
||||
step_config["input_deps"].update({
|
||||
win_toolchain_dir + ":headers": win_toolchain_headers,
|
||||
})
|
||||
win_sdk.step_config(ctx, step_config)
|
||||
remote_wrapper = reproxy_config.get("remote_wrapper")
|
||||
input_root_absolute_path = gn_logs.read(ctx).get("clang_need_input_root_absolute_path") == "true"
|
||||
canonicalize_dir = not input_root_absolute_path
|
||||
|
225
build/config/siso/win_sdk.star
Normal file
225
build/config/siso/win_sdk.star
Normal file
@ -0,0 +1,225 @@
|
||||
# -*- bazel-starlark -*-
|
||||
# Copyright 2024 The Chromium Authors
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
"""Siso configuration fow win sdk."""
|
||||
|
||||
load("@builtin//encoding.star", "json")
|
||||
load("@builtin//lib/gn.star", "gn")
|
||||
load("@builtin//path.star", "path")
|
||||
load("@builtin//runtime.star", "runtime")
|
||||
load("@builtin//struct.star", "module")
|
||||
load("./gn_logs.star", "gn_logs")
|
||||
|
||||
def __win_toolchain_dir(ctx):
|
||||
# build/win_toolchain.json may not exist when
|
||||
# $env:DEPOT_TOOLS_WIN_TOOLCHAIN=0 or so.
|
||||
if not ctx.fs.exists("build/win_toolchain.json"):
|
||||
return None
|
||||
data = json.decode(str(ctx.fs.read("build/win_toolchain.json")))
|
||||
if "path" in data:
|
||||
return ctx.fs.canonpath(data["path"])
|
||||
return None
|
||||
|
||||
def __win_sdk_version(ctx):
|
||||
return gn_logs.read(ctx).get("windows_sdk_version")
|
||||
|
||||
def __enabled(ctx):
|
||||
if "args.gn" in ctx.metadata:
|
||||
gn_args = gn.args(ctx)
|
||||
if gn_args.get("target_os") == '"win"':
|
||||
return True
|
||||
return runtime.os == "windows"
|
||||
|
||||
def __filegroups(ctx):
|
||||
win_toolchain_dir = __win_toolchain_dir(ctx)
|
||||
fg = {}
|
||||
if win_toolchain_dir:
|
||||
fg.update({
|
||||
# for precomputed subtree
|
||||
win_toolchain_dir + ":headers-ci": {
|
||||
"type": "glob",
|
||||
"includes": [
|
||||
"*.h",
|
||||
"*.inl",
|
||||
"*.H",
|
||||
"*.Hxx",
|
||||
"*.hxx",
|
||||
"*.hpp",
|
||||
"VC/Tools/MSVC/*/include/*",
|
||||
"VC/Tools/MSVC/*/include/*/*",
|
||||
],
|
||||
},
|
||||
})
|
||||
return fg
|
||||
|
||||
def __step_config(ctx, step_config):
|
||||
win_toolchain_dir = __win_toolchain_dir(ctx)
|
||||
if not win_toolchain_dir:
|
||||
return
|
||||
win_toolchain_headers = [
|
||||
win_toolchain_dir + ":headers-ci",
|
||||
]
|
||||
sdk_version = __win_sdk_version(ctx)
|
||||
if sdk_version:
|
||||
win_toolchain_headers.extend([
|
||||
# third_party/abseil-cpp includes "dbghelp.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dbghelp.h"),
|
||||
# third_party/abseil-cpp includes "aclapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/aclapi.h"),
|
||||
# base/debug includes "psapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/psapi.h"),
|
||||
# base/process includes "tlhelp32.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/tlhelp32.h"),
|
||||
# base/process includes "userenv.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/userenv.h"),
|
||||
# base includes "shlobj.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/shlobj.h"),
|
||||
# base/win includes "lm.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/lm.h"),
|
||||
# base/win includes "mdmregistration.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mdmregistration.h"),
|
||||
# base/win includes "shellscalingapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/shellscalingapi.h"),
|
||||
# base/win includes "uiviewsettingsinterop.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/uiviewsettingsinterop.h"),
|
||||
# native_client/src/shared/platform/win includes "WinError.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/WinError.h"),
|
||||
# third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "cppwinrt/winrt/windows.graphics.directX.direct3d11.h"),
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "winrt/windows.graphics.directX.direct3d11.h"),
|
||||
# third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.interop.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/windows.graphics.directX.direct3d11.interop.h"),
|
||||
# third_party/crashpad/crashpad/handler/win includes "werapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/werapi.h"),
|
||||
# chrome/install_static/ includes "wtsapi32.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/wtsapi32.h"),
|
||||
# third_party/dawn/include/dawn/native includes "DXGI1_4.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/DXGI1_4.h"),
|
||||
# v8/src/diagnostics includes "versionhelpers.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/versionhelpers.h"),
|
||||
# ui/gfx/ includes "DXGIType.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/DXGIType.h"),
|
||||
# third_party/unrar includes "PowrProf.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/PowrProf.h"),
|
||||
# device/base/ includes "dbt.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dbt.h"),
|
||||
# third_party/skia/ includes "ObjBase.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ObjBase.h"),
|
||||
# third_party/webrtc/rtc_base includes "ws2spi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ws2spi.h"),
|
||||
# third_party/skia/ includes "T2EmbApi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/T2EmbApi.h"),
|
||||
# device/vr/windows/ includes "D3D11_1.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/D3D11_1.h"),
|
||||
# rlz/win/ includes "Sddl.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/Sddl.h"),
|
||||
# chrome/common/safe_browsing/ includes "softpub.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/softpub.h"),
|
||||
# services/device/generic_sensor/ includes "Sensors.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Sensors.h"),
|
||||
# third_party/webrtc/modules/desktop_capture/win includes "windows.graphics.capture.interop.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/windows.graphics.capture.interop.h"),
|
||||
# third_party/skia/ includes "FontSub.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/FontSub.h"),
|
||||
# chrome/updater/ includes "regstr.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/regstr.h"),
|
||||
# services/device/compute_pressure includes "pdh.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/pdh.h"),
|
||||
# chrome/installer/ includes "mshtmhst.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mshtmhst.h"),
|
||||
# net/ssl/ includes "NCrypt.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/NCrypt.h"),
|
||||
# device/fido/win/ includes "Combaseapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Combaseapi.h"),
|
||||
# components/device_signals/core/system_signals/win includes "wscapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/wscapi.h"),
|
||||
# net/proxy_resolution/win/ includes "dhcpcsdk.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dhcpcsdk.h"),
|
||||
# third_party/dawn/third_party/glfw includes "xinput.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/xinput.h"),
|
||||
# v8/tools/v8windbg includes "pathcch.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/pathcch.h"),
|
||||
# remoting/host includes "rpcproxy.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/rpcproxy.h"),
|
||||
# sandbox/win includes "Aclapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Aclapi.h"),
|
||||
# ui/accessibility/platform includes "uiautomation.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/uiautomation.h"),
|
||||
# chrome/credential_provider/gaiacp includes "ntsecapi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ntsecapi.h"),
|
||||
# net/dns includes "Winsock2.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Winsock2.h"),
|
||||
# media/cdm/win includes "mferror.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mferror.h"),
|
||||
# chrome/credentialProvider/gaiacp includes "Winternl.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Winternl.h"),
|
||||
# media/audio/win includes "audioclient.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/audioclient.h"),
|
||||
# media/audio/win includes "MMDeviceAPI.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/MMDeviceAPI.h"),
|
||||
# net/proxy_resolution/win includes "dhcpv6csdk.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dhcpv6csdk.h"),
|
||||
# components/system_media_controls/win includes "systemmediatransportcontrolsinterop.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/systemmediatransportcontrolsinterop.h"),
|
||||
# ui/native_theme includes "Windows.Media.ClosedCaptioning.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "cppwinrt/winrt/Windows.Media.ClosedCaptioning.h"),
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "winrt/Windows.Media.ClosedCaptioning.h"),
|
||||
# media/audio/win includes "Functiondiscoverykeys_devpkey.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Functiondiscoverykeys_devpkey.h"),
|
||||
# device/fido includes "Winuser.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Winuser.h"),
|
||||
# chrome/updater/win includes "msxml2.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/msxml2.h"),
|
||||
# remoting/host includes "ime.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ime.h"),
|
||||
# remoting/host/win includes "D3DCommon.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/D3DCommon.h"),
|
||||
# ui/views/controls/menu includes "Vssym32.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Vssym32.h"),
|
||||
# third_party/wtl includes "richedit.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/richedit.h"),
|
||||
# chrome/updater/net includes "Urlmon.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Urlmon.h"),
|
||||
# device/gamepad includes "XInput.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/XInput.h"),
|
||||
# chrome/credential_provider/gaiacp includes "Shlobj.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Shlobj.h"),
|
||||
# content/renderer includes "mlang.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mlang.h"),
|
||||
# components/storage_monitor includes "portabledevice.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/portabledevice.h"),
|
||||
# third_party/wtl includes "richole.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/richole.h"),
|
||||
# chrome/utility/importer includes "intshcut.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/intshcut.h"),
|
||||
# chrome/browser/net includes "Ws2spi.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Ws2spi.h"),
|
||||
# chrome/browser/enterprise/platform_auth includes "proofofpossessioncookieinfo.h)"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/proofofpossessioncookieinfo.h"),
|
||||
# chrome/utility/importer includes "urlhist.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/urlhist.h"),
|
||||
# chrome/updater/win/installer includes "msiquery.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/msiquery.h"),
|
||||
# third_party/win_virtual_display/controller includes "Devpropdef.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/Devpropdef.h"),
|
||||
# third_party/dawn/third_party/dxc/include/dxc/Support/WinIncludes.h "ObjIdl.h"
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ObjIdl.h"),
|
||||
# third_party/dawn/third_party/dxc/lib/Support includes "D3Dcommon.h"
|
||||
# https://github.com/microsoft/DirectXShaderCompiler/pull/6380
|
||||
path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/D3Dcommon.h"),
|
||||
])
|
||||
else:
|
||||
# sdk_version may be unknown when first build after `gn clean` (no gn_logs.txt yet)
|
||||
print("sdk_version is unknown")
|
||||
step_config["input_deps"].update({
|
||||
win_toolchain_dir + ":headers": win_toolchain_headers,
|
||||
})
|
||||
|
||||
win_sdk = module(
|
||||
"win_sdk",
|
||||
enabled = __enabled,
|
||||
toolchain_dir = __win_toolchain_dir,
|
||||
step_config = __step_config,
|
||||
filegroups = __filegroups,
|
||||
)
|
Reference in New Issue
Block a user