Skip to content

Commit 4c3ddff

Browse files
author
finn-ball
committed
add windows support
1 parent fff200b commit 4c3ddff

File tree

8 files changed

+68
-33
lines changed

8 files changed

+68
-33
lines changed

cuda/extensions.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,15 @@ def _impl(module_ctx):
185185
for component_name in redist_components_mapping.keys():
186186
# Build dictionaries mapping versions to repo names for each platform.
187187
x86_64_repos = {ver: versioned_repos[component_name]["linux-x86_64"][ver] for ver in redist_versions if "linux-x86_64" in versioned_repos[component_name] and ver in versioned_repos[component_name]["linux-x86_64"]}
188+
windows_x86_64_repos = {ver: versioned_repos[component_name]["windows-x86_64"][ver] for ver in redist_versions if "windows-x86_64" in versioned_repos[component_name] and ver in versioned_repos[component_name]["windows-x86_64"]}
188189
aarch64_repos = {ver: versioned_repos[component_name]["linux-aarch64"][ver] for ver in redist_versions if "linux-aarch64" in versioned_repos[component_name] and ver in versioned_repos[component_name]["linux-aarch64"]}
189190
sbsa_repos = {ver: versioned_repos[component_name]["linux-sbsa"][ver] for ver in redist_versions if "linux-sbsa" in versioned_repos[component_name] and ver in versioned_repos[component_name]["linux-sbsa"]}
190191

191192
platform_alias_repo(
192193
name = redist_components_mapping[component_name],
193194
component_name = component_name,
194195
linux_x86_64_repos = x86_64_repos,
196+
windows_x86_64_repos = windows_x86_64_repos,
195197
linux_aarch64_repos = aarch64_repos,
196198
linux_sbsa_repos = sbsa_repos,
197199
versions = redist_versions,

cuda/platform_alias_extension.bzl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ def _platform_alias_repo_impl(ctx):
5050
platforms_available = []
5151
if len(ctx.attr.linux_x86_64_repos) > 0:
5252
platforms_available.append("linux-x86_64")
53+
if len(ctx.attr.windows_x86_64_repos) > 0:
54+
platforms_available.append("windows-x86_64")
5355
if len(ctx.attr.linux_sbsa_repos) > 0:
5456
platforms_available.append("linux-sbsa")
5557
if len(ctx.attr.linux_aarch64_repos) > 0:
@@ -113,6 +115,7 @@ def _platform_alias_repo_impl(ctx):
113115

114116
platform_repos_map = {
115117
"linux-x86_64": ctx.attr.linux_x86_64_repos,
118+
"windows-x86_64": ctx.attr.windows_x86_64_repos,
116119
"linux-sbsa": ctx.attr.linux_sbsa_repos,
117120
"linux-aarch64": ctx.attr.linux_aarch64_repos,
118121
}
@@ -177,6 +180,10 @@ platform_alias_repo = repository_rule(
177180
default = {},
178181
doc = "Dictionary mapping versions to ARM64/Jetpack repository names",
179182
),
183+
"windows_x86_64_repos": attr.string_dict(
184+
default = {},
185+
doc = "Dictionary mapping versions to Windows x86_64 repository names",
186+
),
180187
"linux_sbsa_repos": attr.string_dict(
181188
default = {},
182189
doc = "Dictionary mapping versions to SBSA repository names",

cuda/private/platforms.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# These are the platforms for which we generate component aliases.
55
SUPPORTED_PLATFORMS = [
66
"linux-x86_64",
7+
"windows-x86_64",
78
"linux-sbsa",
89
"linux-aarch64",
910
]

cuda/private/templates/BUILD.nvcc

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,58 @@
1-
# Export individual executables as simple target names
2-
exports_files([
1+
nvcc_bin = any_or_first(
32
"%{component_name}/bin/nvcc",
3+
"%{component_name}/bin/nvcc.exe",
4+
)
5+
nvlink_bin = any_or_first(
46
"%{component_name}/bin/nvlink",
7+
"%{component_name}/bin/nvlink.exe",
8+
)
9+
ptxas_bin = any_or_first(
510
"%{component_name}/bin/ptxas",
11+
"%{component_name}/bin/ptxas.exe",
12+
)
13+
bin2c_bin = any_or_first(
614
"%{component_name}/bin/bin2c",
15+
"%{component_name}/bin/bin2c.exe",
16+
)
17+
fatbinary_bin = any_or_first(
718
"%{component_name}/bin/fatbinary",
19+
"%{component_name}/bin/fatbinary.exe",
20+
)
21+
22+
# Export individual executables as simple target names
23+
exports_files([
24+
nvcc_bin,
25+
nvlink_bin,
26+
ptxas_bin,
27+
bin2c_bin,
28+
fatbinary_bin,
829
"%{component_name}/bin/crt/link.stub",
930
], visibility = ["//visibility:public"])
1031

1132
# Create aliases with simple names for toolchain compatibility
1233
alias(
1334
name = "nvcc",
14-
actual = "%{component_name}/bin/nvcc",
35+
actual = nvcc_bin,
1536
)
1637

1738
alias(
1839
name = "nvlink",
19-
actual = "%{component_name}/bin/nvlink",
40+
actual = nvlink_bin,
2041
)
2142

2243
alias(
2344
name = "ptxas",
24-
actual = "%{component_name}/bin/ptxas",
45+
actual = ptxas_bin,
2546
)
2647

2748
alias(
2849
name = "bin2c",
29-
actual = "%{component_name}/bin/bin2c",
50+
actual = bin2c_bin,
3051
)
3152

3253
alias(
3354
name = "fatbinary",
34-
actual = "%{component_name}/bin/fatbinary",
55+
actual = fatbinary_bin,
3556
)
3657

3758
alias(

cuda/private/templates/BUILD.nvvm

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1+
cicc_bin = any_or_first(
2+
"%{component_name}/nvvm/bin/cicc",
3+
"%{component_name}/nvvm/bin/cicc.exe",
4+
)
5+
16
# Export individual files as simple target names
27
exports_files([
3-
"%{component_name}/nvvm/bin/cicc",
8+
cicc_bin,
49
"%{component_name}/nvvm/libdevice/libdevice.10.bc",
510
], visibility = ["//visibility:public"])
611

712
# Create aliases with simple names for toolchain compatibility
813
alias(
914
name = "cicc",
10-
actual = "%{component_name}/nvvm/bin/cicc",
15+
actual = cicc_bin,
1116
)
1217

1318
alias(

tests/integration/test_all.sh

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ skip_components_bzlmod=false
1111
skip_redist_json=false
1212
skip_redist_json_multi=false
1313
skip_redist_json_collision=false
14-
redist_windows_limited=false
1514

1615
while [[ $# -gt 0 ]]; do
1716
case $1 in
@@ -40,11 +39,12 @@ done
4039

4140
set -ex
4241

43-
# The CUDA redist archives used here are linux-only; skip on Windows CI.
42+
redist_platform_args=()
4443
if [[ "$RUNNER_OS" == "Windows" ]] || [[ "$(uname -s 2>/dev/null)" =~ MINGW|MSYS|CYGWIN ]]; then
45-
# Multi-version redist tests currently generate linux repos only.
46-
# On Windows, run a reduced analysis-only subset for coverage.
47-
redist_windows_limited=true
44+
redist_platform_args=(
45+
--@rules_cuda//cuda:exec_platform=windows-x86_64
46+
--@rules_cuda//cuda:target_platform=windows-x86_64
47+
)
4848
fi
4949

5050
# toolchain configured by the root module of the user
@@ -178,14 +178,12 @@ cat <<- EOF
178178
============================================================
179179
EOF
180180
pushd "$this_dir/toolchain_redist_json"
181-
bazel build --enable_workspace //... --@rules_cuda//cuda:enable=False
182-
bazel build --enable_workspace //:optionally_use_rule --@rules_cuda//cuda:enable=False
183-
if [ "$redist_windows_limited" = false ]; then
184-
bazel build --enable_workspace //... --@rules_cuda//cuda:enable=True
185-
bazel build --enable_workspace //:optionally_use_rule --@rules_cuda//cuda:enable=True
186-
bazel build --enable_workspace //:use_library
187-
bazel build --enable_workspace //:use_rule
188-
fi
181+
bazel build --enable_workspace //... --@rules_cuda//cuda:enable=False "${redist_platform_args[@]}"
182+
bazel build --enable_workspace //... --@rules_cuda//cuda:enable=True "${redist_platform_args[@]}"
183+
bazel build --enable_workspace //:optionally_use_rule --@rules_cuda//cuda:enable=False "${redist_platform_args[@]}"
184+
bazel build --enable_workspace //:optionally_use_rule --@rules_cuda//cuda:enable=True "${redist_platform_args[@]}"
185+
bazel build --enable_workspace //:use_library "${redist_platform_args[@]}"
186+
bazel build --enable_workspace //:use_rule "${redist_platform_args[@]}"
189187
bazel clean && bazel shutdown
190188
popd
191189
fi
@@ -199,20 +197,18 @@ cat <<- EOF
199197
============================================================
200198
EOF
201199
pushd "$this_dir/toolchain_redist_json_multi"
202-
bazel build --enable_bzlmod //... --@rules_cuda//cuda:enable=False
203-
bazel build --enable_bzlmod //:optionally_use_rule --@rules_cuda//cuda:enable=False
204-
if [ "$redist_windows_limited" = false ]; then
205-
bazel build --enable_bzlmod //... --@rules_cuda//cuda:enable=True
206-
bazel build --enable_bzlmod //:optionally_use_rule --@rules_cuda//cuda:enable=True --@rules_cuda//cuda:version=12.6.3
207-
bazel build --enable_bzlmod //:optionally_use_rule --@rules_cuda//cuda:enable=True --@rules_cuda//cuda:version=11.7.0
208-
bazel build --enable_bzlmod //:use_library
209-
bazel build --enable_bzlmod //:use_rule --@rules_cuda//cuda:version=12.6.3
210-
bazel build --enable_bzlmod //:use_rule --@rules_cuda//cuda:version=11.7.0
211-
fi
200+
bazel build --enable_bzlmod //... --@rules_cuda//cuda:enable=False "${redist_platform_args[@]}"
201+
bazel build --enable_bzlmod //... --@rules_cuda//cuda:enable=True "${redist_platform_args[@]}"
202+
bazel build --enable_bzlmod //:optionally_use_rule --@rules_cuda//cuda:enable=False "${redist_platform_args[@]}"
203+
bazel build --enable_bzlmod //:optionally_use_rule --@rules_cuda//cuda:enable=True --@rules_cuda//cuda:version=12.6.3 "${redist_platform_args[@]}"
204+
bazel build --enable_bzlmod //:optionally_use_rule --@rules_cuda//cuda:enable=True --@rules_cuda//cuda:version=11.7.0 "${redist_platform_args[@]}"
205+
bazel build --enable_bzlmod //:use_library "${redist_platform_args[@]}"
206+
bazel build --enable_bzlmod //:use_rule --@rules_cuda//cuda:version=12.6.3 "${redist_platform_args[@]}"
207+
bazel build --enable_bzlmod //:use_rule --@rules_cuda//cuda:version=11.7.0 "${redist_platform_args[@]}"
212208

213209
# Keep the override-only dedupe probe isolated so it cannot pollute later versioned builds.
214210
bazel clean && bazel shutdown
215-
CUDA_REDIST_VERSION_OVERRIDE=11.7.0 bazel build --enable_bzlmod //:optionally_use_rule --@rules_cuda//cuda:enable=False
211+
CUDA_REDIST_VERSION_OVERRIDE=11.7.0 bazel build --enable_bzlmod //:optionally_use_rule --@rules_cuda//cuda:enable=False "${redist_platform_args[@]}"
216212
bazel clean && bazel shutdown
217213
popd
218214
fi

tests/integration/toolchain_redist_json/MODULE.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ cuda.redist_json(
1212
name = "rules_cuda_redist_json",
1313
platforms = [
1414
"linux-x86_64",
15+
"windows-x86_64",
1516
],
1617
version = "12.6.3",
1718
)

tests/integration/toolchain_redist_json_multi/MODULE.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ cuda.redist_json(
1212
name = "cuda_12_6_3",
1313
platforms = [
1414
"linux-x86_64",
15+
"windows-x86_64",
1516
],
1617
version = "12.6.3",
1718
)
1819
cuda.redist_json(
1920
name = "cuda_11_7_0",
2021
platforms = [
2122
"linux-x86_64",
23+
"windows-x86_64",
2224
],
2325
version = "11.7.0",
2426
)

0 commit comments

Comments
 (0)