From 2488ea0126ce32f5bfd296b2e90b315cbae9608b Mon Sep 17 00:00:00 2001 From: LongYinan Date: Fri, 14 Mar 2025 17:13:01 +0800 Subject: [PATCH] ci: +crt-static flag on Windows --- .github/workflows/ci.yml | 7 +++++++ libmimalloc-sys/build.rs | 13 +++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 68ef0b5..b7550d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -174,6 +174,7 @@ jobs: yarn install - name: Install wasi-sdk + if: ${{ matrix.settings.target == 'wasm32-wasip1-threads' }} run: | mkdir -p $HOME/wasi-sdk curl -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz | tar -xzf - -C $HOME/wasi-sdk --strip-components=1 @@ -195,3 +196,9 @@ jobs: yarn build --target ${{ matrix.settings.target }} yarn build --target ${{ matrix.settings.target }} --release fi + - name: Build with static CRT + if: ${{ matrix.settings.target == 'x86_64-pc-windows-msvc' }} + working-directory: example + run: yarn build --target ${{ matrix.settings.target }} --release + env: + RUSTFLAGS: "-C target-feature=+crt-static -C link-arg=/FORCE:MULTIPLE" diff --git a/libmimalloc-sys/build.rs b/libmimalloc-sys/build.rs index e5ff338..542b11f 100644 --- a/libmimalloc-sys/build.rs +++ b/libmimalloc-sys/build.rs @@ -83,10 +83,15 @@ fn main() { cmake_config .define("MI_USE_CXX", "ON") .define("MI_WIN_USE_FIXED_TLS", "ON"); - if profile == "debug" { - println!("cargo:rustc-link-lib=ucrtd"); - } else { - println!("cargo:rustc-link-lib=ucrt"); + if !std::env::var("CARGO_CFG_TARGET_FEATURE") + .map(|s| s.contains("+crt-static")) + .unwrap_or(false) + { + if profile == "debug" { + println!("cargo:rustc-link-lib=ucrtd"); + } else { + println!("cargo:rustc-link-lib=ucrt"); + } } }