From 6387b4f7e7b12d15a2d505eadeffe4baef4779b5 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 23 Jul 2024 12:40:59 -0500 Subject: [PATCH] Use MSVC for the Windows toolchain instead of MinGW (#456) * Use MSVC for the Windows toolchain instead of MinGW Explicitly use MSVC to avoid the runtime dependencies that the default toolchain CMake is using is bringing in. Closes #454 * Update .github/workflows/main.yml Co-authored-by: Andrew Brown * Specify MinSizeRel in `build.sh` Looks like MSVC defaults to "Debug" instead of an empty string to so the default logic which works for other compilers isn't kicking in here. * Don't persist ccache stats across runs * Move zeroing --------- Co-authored-by: Andrew Brown --- .github/workflows/main.yml | 21 ++++++++++++++++++--- ci/build.sh | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0ff1d36..3109532 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -125,6 +125,9 @@ jobs: run: sudo apt install ccache if: runner.os == 'Linux' + - name: Clear ccache statistics + run: ccache --zero-stats + - name: Build and test (macOS) run: ./ci/build.sh if: runner.os == 'macOS' @@ -133,11 +136,23 @@ jobs: run: ./ci/docker-build.sh ${{ matrix.artifact }} if: runner.os == 'Linux' - # Use a shorter build directory than the default on Windows to avoid - # hitting path length and command line length limits. See - # WebAssembly/wasi-libc#514 + # Setup the VS Developoer Prompt environment variables to explicitly use + # MSVC to compile LLVM as that avoids extra runtime dependencies + # msys/mingw might bring. + # + # As of 2024-07-22 this sha is the "v1.13.0" tag. + - uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 + if: runner.os == 'Windows' - name: Build and test (Windows) run: | + # Delete a troublesome binary as recommended here + # https://github.com/ilammy/msvc-dev-cmd?tab=readme-ov-file#name-conflicts-with-shell-bash + rm /usr/bin/link + # Use a shorter build directory than the default on Windows to avoid + # hitting path length and command line length limits. See + # WebAssembly/wasi-libc#514. Despite using a different build directory + # though still move the `dist` folder to `build/dist` so the upload + # step below doesn't need a windows-specific hook. ./ci/build.sh C:/wasi-sdk mkdir build cp -r C:/wasi-sdk/dist build diff --git a/ci/build.sh b/ci/build.sh index 6dc187c..09c92a3 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -18,6 +18,7 @@ fi cmake -G Ninja -B $build_dir/toolchain -S . \ -DWASI_SDK_BUILD_TOOLCHAIN=ON \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ "-DCMAKE_INSTALL_PREFIX=$build_dir/install" \ $WASI_SDK_CI_TOOLCHAIN_CMAKE_ARGS \ "-DLLVM_CMAKE_FLAGS=$WASI_SDK_CI_TOOLCHAIN_LLVM_CMAKE_ARGS"