# Copyright 2026 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""
An alias that cross-compiles its target for Windows with the hermetic LLVM
toolchains, regardless of the host platform.

This is equivalent to building the target with
`--config=llvm --platforms=@llvm//platforms:windows_x86_64`.
"""

load("@with_cfg.bzl", "with_cfg")

# Keep the toolchains in sync with the `llvm` config in .bazelrc.
windows_llvm_alias, _windows_llvm_alias = (
    with_cfg(native.alias)
        .set("platforms", [Label("@llvm//platforms:windows_x86_64")])
        .extend("extra_toolchains", ["@llvm//toolchain:all", "//src:llvm_rc_toolchain"])
        .build()
)
