WSL ROCDXG CI Stage
May 15, 2026 ยท View on GitHub
This document describes the multi-arch CI stage that builds the WSL-only
rocdxg bridge library from rocm-systems.
Note
This page is about the WSL ROCDXG CI stage. For native Windows source builds, see Windows Support.
Execution Model
The WSL ROCDXG job starts on a Windows runner but runs TheRock's Linux-side build steps inside a WSL Ubuntu shell:
flowchart TD runner["Windows runner<br/>checkout + MSVC/SDK discovery"] wsl["Enter WSL Ubuntu shell"] deps["Linux base + compiler-runtime artifacts"] cfg["Inside WSL Ubuntu<br/>configure wsl-rocdxg<br/>amd-hip toolchain"] build["Inside WSL Ubuntu<br/>build stage-wsl-rocdxg<br/>publish ROCDXG artifact"] runner --> wsl deps --> cfg wsl --> cfg --> build
The Windows host is used for checkout, MSVC setup, and Windows SDK discovery.
The WSL shell handles artifact fetch, CMake configure, build, and artifact
upload. The workflow bridges the Windows SDK shared include path into WSL with
WSLENV.
Build Topology
wsl-rocdxg is modeled as its own multi-arch stage and artifact group in
BUILD_TOPOLOGY.toml. The stage produces a
target-neutral artifact from the rocm-systems source set.
The relevant feature controls are:
THEROCK_ENABLE_WSL: enables the WSL feature group.THEROCK_ENABLE_WSL_ROCDXG: enables the ROCDXG component.
The wsl-rocdxg artifact group depends on base, and the artifact depends on
core-hip. This lets the WSL stage bootstrap from the same inbound Linux
artifact pattern used by other downstream multi-arch stages and use TheRock's
amd-hip compiler toolchain for the nested ROCDXG build.
Linux Inbound Artifacts
Although the job starts on a Windows runner, CMake runs inside WSL Ubuntu. That
means the configure and build environment is Linux userspace, so the stage
consumes Linux prebuilt artifacts, including the base artifact and compiler
runtime artifacts used by the amd-hip toolchain.
The portable Linux multi-arch workflow gives the WSL job a dependency on
compiler-runtime so those inbound artifacts exist before the WSL stage fetches
them.
Configure Behavior
For the WSL stage, configure_stage.py
is invoked with --stage=wsl-rocdxg and --platform=linux. The generated
CMake arguments include:
-DTHEROCK_ENABLE_ALL=OFF
-DTHEROCK_ENABLE_WSL_ROCDXG=ON
Topology-derived inbound dependency features are also enabled for the stage,
including the core-hip dependency used for the amd-hip compiler toolchain.
Workflow Differences
Compared with the portable Linux artifact workflow, the WSL workflow:
- Runs on the WSL-capable Windows runner.
- Sets up Ubuntu under WSL.
- Configures with
--platform=linux. - Builds
stage-${stage_name}for the WSL stage.
Compared with the native Windows artifact workflow, the WSL workflow:
- Uses host Windows for checkout, MSVC setup, and Windows SDK discovery.
- Uses WSL-local Python and CMake tooling for artifact fetch, configure, build, and upload.
- Bridges the Windows SDK shared include path into the WSL shell with
WSLENV.
ROCDXG Build
TheRock does not build rocdxg directly. The wrapper project invokes the
libhsakmt CMake path in rocm-systems that produces the WSL rocdxg
library, then installs the WSL-built outputs back into the normal TheRock
artifact flow.
Troubleshooting
- If the WSL build cannot find Windows SDK shared headers, check the Windows SDK
discovery step and the
WSLENVbridge into WSL. - If
rocdxgoutputs are missing, check thelibhsakmtWSL CMake path inrocm-systemsand the wrapper install step.