tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

win_sdk.star (23518B)


      1 # -*- bazel-starlark -*-
      2 # Copyright 2024 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 fow win sdk."""
      6 
      7 load("@builtin//encoding.star", "json")
      8 load("@builtin//lib/gn.star", "gn")
      9 load("@builtin//path.star", "path")
     10 load("@builtin//runtime.star", "runtime")
     11 load("@builtin//struct.star", "module")
     12 load("./gn_logs.star", "gn_logs")
     13 
     14 def __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 
     24 def __win_sdk_version(ctx):
     25     return gn_logs.read(ctx).get("windows_sdk_version")
     26 
     27 def __target_cpu(ctx):
     28     if "args.gn" in ctx.metadata:
     29         gn_args = gn.args(ctx)
     30         target = gn_args.get("target_cpu", "").strip('"')
     31         if target:
     32             return target
     33     return __host_cpu()
     34 
     35 def __host_cpu():
     36     if runtime.arch == "amd64":
     37         return "x64"
     38     return runtime.arch
     39 
     40 def __enabled(ctx):
     41     if "args.gn" in ctx.metadata:
     42         gn_args = gn.args(ctx)
     43         if gn_args.get("target_os") == '"win"':
     44             return True
     45     return runtime.os == "windows"
     46 
     47 def __filegroups(ctx):
     48     win_toolchain_dir = __win_toolchain_dir(ctx)
     49     sdk_version = __win_sdk_version(ctx)
     50     target_cpu = __target_cpu(ctx)
     51     host_cpu = __host_cpu()
     52     fg = {}
     53     if win_toolchain_dir and sdk_version:
     54         def __extend_libs_for_target_cpu(libs, cpu):
     55             libs.extend([
     56                 path.join("VC/Tools/MSVC/*/lib", cpu, "*.lib"),
     57                 path.join("VC/Tools/MSVC/*/lib", cpu, "*.pdb"),
     58                 path.join("VC/Tools/MSVC/*/*/lib", cpu, "*.lib"),
     59                 path.join("VC/Tools/MSVC/*/*/lib", cpu, "*.pdb"),
     60                 path.join("VC/Tools/MSVC/*/lib", cpu, "*/*.lib"),
     61                 path.join("Windows Kits/10/Lib", sdk_version, "ucrt", cpu, "*.lib"),
     62                 path.join("Windows Kits/10/Lib", sdk_version, "um", cpu, "*.lib"),
     63                 path.join("Windows Kits/10/Lib", cpu, "*.lib"),
     64             ])
     65             return libs
     66 
     67         toolchain_lib_globs = [
     68             "DIA SDK/lib/*.lib",
     69             "DIA SDK/lib/*/*.lib",
     70         ]
     71         toolchain_lib_globs = __extend_libs_for_target_cpu(toolchain_lib_globs, target_cpu)
     72         if target_cpu != host_cpu:
     73             # Add libs for host OS if it's cross build because it might be a
     74             # target with sub toolchain for host.
     75             toolchain_lib_globs = __extend_libs_for_target_cpu(toolchain_lib_globs, host_cpu)
     76 
     77         fg.update({
     78             # for precomputed subtrees.
     79             # Case insensitive files are listed by filegroups.
     80             # But, case sensitive files are added individually in
     81             # __step_config() below.
     82             win_toolchain_dir + ":headers-ci": {
     83                 "type": "glob",
     84                 "includes": [
     85                     "*.h",
     86                     "*.inl",
     87                     "*.H",
     88                     "*.Hxx",
     89                     "*.hxx",
     90                     "*.hpp",
     91                     "VC/Tools/MSVC/*/include/*",
     92                     "VC/Tools/MSVC/*/include/*/*",
     93                 ],
     94             },
     95             win_toolchain_dir + ":libs-ci": {
     96                 "type": "glob",
     97                 "includes": toolchain_lib_globs,
     98             },
     99         })
    100     return fg
    101 
    102 def __step_config(ctx, step_config):
    103     win_toolchain_dir = __win_toolchain_dir(ctx)
    104     if not win_toolchain_dir:
    105         return
    106     target_cpu = __target_cpu(ctx)
    107     host_cpu = __host_cpu()
    108     win_toolchain_headers = [
    109         win_toolchain_dir + ":headers-ci",
    110     ]
    111     win_toolchain_libs = [
    112         win_toolchain_dir + ":libs-ci",
    113     ]
    114     sdk_version = __win_sdk_version(ctx)
    115     if sdk_version:
    116         win_toolchain_headers.extend([
    117             # third_party/abseil-cpp includes "dbghelp.h"
    118             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dbghelp.h"),
    119             # third_party/abseil-cpp includes "aclapi.h"
    120             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/aclapi.h"),
    121             # base/debug includes "psapi.h"
    122             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/psapi.h"),
    123             # base/process includes "tlhelp32.h"
    124             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/tlhelp32.h"),
    125             # base/process includes "userenv.h"
    126             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/userenv.h"),
    127             # base includes "shlobj.h"
    128             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/shlobj.h"),
    129             # base/win includes "lm.h"
    130             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/lm.h"),
    131             # base/win includes "mdmregistration.h"
    132             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mdmregistration.h"),
    133             # base/win includes "shellscalingapi.h"
    134             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/shellscalingapi.h"),
    135             # base/win includes "uiviewsettingsinterop.h"
    136             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/uiviewsettingsinterop.h"),
    137             # native_client/src/shared/platform/win includes "WinError.h"
    138             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/WinError.h"),
    139             # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.h"
    140             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "cppwinrt/winrt/windows.graphics.directX.direct3d11.h"),
    141             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "winrt/windows.graphics.directX.direct3d11.h"),
    142             # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.interop.h"
    143             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/windows.graphics.directX.direct3d11.interop.h"),
    144             # third_party/crashpad/crashpad/handler/win includes "werapi.h"
    145             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/werapi.h"),
    146             # chrome/install_static/ includes "wtsapi32.h"
    147             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/wtsapi32.h"),
    148             # third_party/dawn/include/dawn/native includes "DXGI1_4.h"
    149             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/DXGI1_4.h"),
    150             # v8/src/diagnostics includes "versionhelpers.h"
    151             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/versionhelpers.h"),
    152             # ui/gfx/ includes "DXGIType.h"
    153             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/DXGIType.h"),
    154             # third_party/unrar includes "PowrProf.h"
    155             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/PowrProf.h"),
    156             # device/base/ includes "dbt.h"
    157             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dbt.h"),
    158             # third_party/skia/ includes "ObjBase.h"
    159             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ObjBase.h"),
    160             # third_party/webrtc/rtc_base includes "ws2spi.h"
    161             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ws2spi.h"),
    162             # third_party/skia/ includes "T2EmbApi.h"
    163             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/T2EmbApi.h"),
    164             # device/vr/windows/ includes "D3D11_1.h"
    165             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/D3D11_1.h"),
    166             # rlz/win/ includes "Sddl.h"
    167             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/Sddl.h"),
    168             # chrome/common/safe_browsing/ includes "softpub.h"
    169             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/softpub.h"),
    170             # services/device/generic_sensor/ includes "Sensors.h"
    171             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Sensors.h"),
    172             # third_party/webrtc/modules/desktop_capture/win includes "windows.graphics.capture.interop.h"
    173             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/windows.graphics.capture.interop.h"),
    174             # third_party/skia/ includes "FontSub.h"
    175             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/FontSub.h"),
    176             # chrome/updater/ includes "regstr.h"
    177             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/regstr.h"),
    178             # services/device/compute_pressure includes "pdh.h"
    179             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/pdh.h"),
    180             # chrome/installer/ includes "mshtmhst.h"
    181             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mshtmhst.h"),
    182             # net/ssl/ includes "NCrypt.h"
    183             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/NCrypt.h"),
    184             # device/fido/win/ includes "Combaseapi.h"
    185             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Combaseapi.h"),
    186             # components/device_signals/core/system_signals/win includes "wscapi.h"
    187             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/wscapi.h"),
    188             # net/proxy_resolution/win/ includes "dhcpcsdk.h"
    189             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dhcpcsdk.h"),
    190             # third_party/dawn/third_party/glfw includes "xinput.h"
    191             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/xinput.h"),
    192             # v8/tools/v8windbg includes "pathcch.h"
    193             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/pathcch.h"),
    194             # remoting/host includes "rpcproxy.h"
    195             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/rpcproxy.h"),
    196             # sandbox/win includes "Aclapi.h"
    197             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Aclapi.h"),
    198             # ui/accessibility/platform includes "uiautomation.h"
    199             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/uiautomation.h"),
    200             # chrome/credential_provider/gaiacp includes "ntsecapi.h"
    201             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ntsecapi.h"),
    202             # net/dns includes "Winsock2.h"
    203             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Winsock2.h"),
    204             # media/cdm/win includes "mferror.h"
    205             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mferror.h"),
    206             # chrome/credentialProvider/gaiacp includes "Winternl.h"
    207             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Winternl.h"),
    208             # media/audio/win includes "audioclient.h"
    209             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/audioclient.h"),
    210             # media/audio/win includes "MMDeviceAPI.h"
    211             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/MMDeviceAPI.h"),
    212             # net/proxy_resolution/win includes "dhcpv6csdk.h"
    213             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/dhcpv6csdk.h"),
    214             # components/system_media_controls/win includes "systemmediatransportcontrolsinterop.h"
    215             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/systemmediatransportcontrolsinterop.h"),
    216             # ui/native_theme includes "Windows.Media.ClosedCaptioning.h"
    217             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "cppwinrt/winrt/Windows.Media.ClosedCaptioning.h"),
    218             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "winrt/Windows.Media.ClosedCaptioning.h"),
    219             # media/audio/win includes "Functiondiscoverykeys_devpkey.h"
    220             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Functiondiscoverykeys_devpkey.h"),
    221             # device/fido includes "Winuser.h"
    222             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Winuser.h"),
    223             # chrome/updater/win includes "msxml2.h"
    224             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/msxml2.h"),
    225             # remoting/host includes "ime.h"
    226             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ime.h"),
    227             # remoting/host/win includes "D3DCommon.h"
    228             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/D3DCommon.h"),
    229             # ui/views/controls/menu includes "Vssym32.h"
    230             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Vssym32.h"),
    231             # third_party/wtl includes "richedit.h"
    232             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/richedit.h"),
    233             # chrome/updater/net includes "Urlmon.h"
    234             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Urlmon.h"),
    235             # device/gamepad includes "XInput.h"
    236             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/XInput.h"),
    237             # chrome/credential_provider/gaiacp includes "Shlobj.h"
    238             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Shlobj.h"),
    239             # content/renderer includes "mlang.h"
    240             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/mlang.h"),
    241             # components/storage_monitor includes "portabledevice.h"
    242             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/portabledevice.h"),
    243             # third_party/wtl includes "richole.h"
    244             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/richole.h"),
    245             # chrome/utility/importer includes "intshcut.h"
    246             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/intshcut.h"),
    247             # chrome/browser/net includes "Ws2spi.h"
    248             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/Ws2spi.h"),
    249             # chrome/browser/enterprise/platform_auth includes "proofofpossessioncookieinfo.h)"
    250             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/proofofpossessioncookieinfo.h"),
    251             # chrome/utility/importer includes "urlhist.h"
    252             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/urlhist.h"),
    253             # chrome/updater/win/installer includes "msiquery.h"
    254             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/msiquery.h"),
    255             # third_party/win_virtual_display/controller includes "Devpropdef.h"
    256             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "shared/Devpropdef.h"),
    257             # third_party/dawn/third_party/dxc/include/dxc/Support/WinIncludes.h "ObjIdl.h"
    258             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/ObjIdl.h"),
    259             # third_party/dawn/third_party/dxc/lib/Support includes "D3Dcommon.h"
    260             # https://github.com/microsoft/DirectXShaderCompiler/pull/6380
    261             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version, "um/D3Dcommon.h"),
    262         ])
    263 
    264         def __extend_libs_for_case_varients(libs, cpu):
    265             # The following libs are necessary to resolve case mismatches on
    266             # Linux remote workers.
    267             libs.extend([
    268                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "Bthprops.lib"),
    269                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "Cfgmgr32.lib"),
    270                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "Crypt32.lib"),
    271                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "DXGI.lib"),
    272                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "DbgEng.lib"),
    273                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "DbgModel.lib"),
    274                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "Ole32.lib"),
    275                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "Pathcch.lib"),
    276                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "Propsys.lib"),
    277                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "Rtworkq.lib"),
    278                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "RuntimeObject.lib"),
    279                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "Setupapi.lib"),
    280                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "Wintrust.lib"),
    281                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "advapi32.lib"),
    282                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "comctl32.lib"),
    283                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "comdlg32.lib"),
    284                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "credui.lib"),
    285                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "crypt32.lib"),
    286                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "dbghelp.lib"),
    287                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "dhcpcsvc.lib"),
    288                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "dnsapi.lib"),
    289                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "gdi32.lib"),
    290                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "imagehlp.lib"),
    291                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "imm32.lib"),
    292                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "kernel32.lib"),
    293                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "mf.lib"),
    294                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "mfplat.lib"),
    295                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "msi.lib"),
    296                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "msimg32.lib"),
    297                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "msxml2.lib"),
    298                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "netapi32.lib"),
    299                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "ntdsapi.lib"),
    300                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "ole32.lib"),
    301                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "oleacc.lib"),
    302                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "oleaut32.lib"),
    303                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "onecore.lib"),
    304                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "opengl32.lib"),
    305                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "pdh.lib"),
    306                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "portabledeviceguids.lib"),
    307                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "rpcns4.lib"),
    308                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "rpcrt4.lib"),
    309                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "sapi.lib"),
    310                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "secur32.lib"),
    311                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "setupapi.lib"),
    312                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "shlwapi.lib"),
    313                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "uiautomationcore.lib"),
    314                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "urlmon.lib"),
    315                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "user32.lib"),
    316                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "userenv.lib"),
    317                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "usp10.lib"),
    318                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "uuid.lib"),
    319                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "uxtheme.lib"),
    320                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "version.lib"),
    321                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "wininet.lib"),
    322                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "winmm.lib"),
    323                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "winspool.lib"),
    324                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "wintrust.lib"),
    325                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "ws2_32.lib"),
    326                 path.join(win_toolchain_dir, "Windows Kits/10/Lib", sdk_version, "um", cpu, "wtsapi32.lib"),
    327             ])
    328             return libs
    329 
    330         win_toolchain_libs.extend([
    331             # Having the empty "Windows Kits/10/Include/{sdk_version}" directory is necessary
    332             # for lld-link to search libs under "Windows Kits/10/Lib/{sdk_version}/um".
    333             path.join(win_toolchain_dir, "Windows Kits/10/Include", sdk_version),
    334         ])
    335         win_toolchain_libs = __extend_libs_for_case_varients(win_toolchain_libs, target_cpu)
    336         if target_cpu != host_cpu:
    337             win_toolchain_libs = __extend_libs_for_case_varients(win_toolchain_libs, host_cpu)
    338         step_config["input_deps"].update({
    339             win_toolchain_dir + ":headers": win_toolchain_headers,
    340             win_toolchain_dir + ":libs": win_toolchain_libs,
    341         })
    342     else:
    343         # sdk_version may be unknown when first build after `gn clean` (no gn_logs.txt yet)
    344         print("sdk_version is unknown")
    345 
    346 win_sdk = module(
    347     "win_sdk",
    348     enabled = __enabled,
    349     toolchain_dir = __win_toolchain_dir,
    350     step_config = __step_config,
    351     filegroups = __filegroups,
    352 )