From e41924b855433c7b8c66bf51d655cf99ecc825c0 Mon Sep 17 00:00:00 2001 From: Justin Smith Date: Mon, 1 Jul 2024 11:27:35 -0400 Subject: [PATCH] Build w/ and w/o Ninja on Windows --- .github/workflows/cross.yml | 36 +++++++++++++++++++++-------- aws-lc-sys/builder/cmake_builder.rs | 24 +++++++++++-------- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/.github/workflows/cross.yml b/.github/workflows/cross.yml index 1607210f1d2..bd799f9d136 100644 --- a/.github/workflows/cross.yml +++ b/.github/workflows/cross.yml @@ -140,7 +140,7 @@ jobs: aws-lc-rs-windows-gnu: if: github.repository_owner == 'aws' - name: ${{ matrix.target }} + name: ${{ matrix.target }} ${{ (matrix.ninja == '1' && 'w/ Ninja') || 'w/o Ninja'}} runs-on: windows-latest strategy: fail-fast: false @@ -148,11 +148,17 @@ jobs: target: - 'x86_64-pc-windows-gnu' # TODO: 'i686-pc-windows-gnu' + ninja: + - '0' + - '1' steps: - uses: ilammy/setup-nasm@v1 - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: 'recursive' + - name: Install ninja-build tool + if: ${{ matrix.ninja == '1' }} + uses: seanmiddleditch/gha-setup-ninja@v4 - uses: dtolnay/rust-toolchain@master id: toolchain with: @@ -164,8 +170,8 @@ jobs: run: cargo test -p aws-lc-rs --release --target ${{ matrix.target }} --features bindgen aws-lc-rs-windows-msvc: - if: github.repository_owner == 'aws' - name: ${{ matrix.target }} + if: ${{ github.repository_owner == 'aws' }} + name: ${{ matrix.target }} ${{ (matrix.ninja == '1' && 'w/ Ninja') || 'w/o Ninja'}} - ${{ (matrix.crt_static == '1' && '/WX and crt-static') || '/WX' }} runs-on: windows-latest strategy: fail-fast: false @@ -174,8 +180,12 @@ jobs: - 'x86_64-pc-windows-msvc' - 'i686-pc-windows-msvc' - 'aarch64-pc-windows-msvc' - env: - RUSTFLAGS: '-Clink-arg=/WX' + ninja: + - '0' + - '1' + crt_static: + - '0' + - '1' steps: - name: Install NASM if: ${{ matrix.target == 'x86_64-pc-windows-msvc' || matrix.target == 'i686-pc-windows-msvc' }} @@ -184,6 +194,7 @@ jobs: with: submodules: 'recursive' - name: Install ninja-build tool + if: ${{ matrix.ninja == '1' }} uses: seanmiddleditch/gha-setup-ninja@v4 - uses: dtolnay/rust-toolchain@master id: toolchain @@ -197,9 +208,16 @@ jobs: } else { echo "ACTION_CARGO=test" | Out-File -FilePath $env:GITHUB_ENV -Append } - - name: Degbug build for ${{ matrix.target }} + - name: Set RUSTFLAGS + run: | + if ('${{ matrix.crt_static }}' -eq '1') { + echo "RUSTFLAGS=-Clink-arg=/WX -Ctarget-feature=+crt-static" | Out-File -FilePath $env:GITHUB_ENV -Append + } else { + echo "RUSTFLAGS=-Clink-arg=/WX" | Out-File -FilePath $env:GITHUB_ENV -Append + } + - name: Debug build + if: ${{ matrix.target != 'aarch64-pc-windows-msvc' || matrix.ninja == '1' }} run: cargo ${{ env.ACTION_CARGO }} -p aws-lc-rs --all-targets --target ${{ matrix.target }} --features bindgen - - name: No-default-features Debug Build for ${{ matrix.target }} - run: cargo ${{ env.ACTION_CARGO }} -p aws-lc-rs --all-targets --target ${{ matrix.target }} --no-default-features --features aws-lc-sys - name: Release Build for ${{ matrix.target }} + if: ${{ matrix.target != 'aarch64-pc-windows-msvc' || matrix.ninja == '1' }} run: cargo ${{ env.ACTION_CARGO }} --release -p aws-lc-rs --all-targets --target ${{ matrix.target }} diff --git a/aws-lc-sys/builder/cmake_builder.rs b/aws-lc-sys/builder/cmake_builder.rs index fc867a35c1f..522e90dcbf7 100644 --- a/aws-lc-sys/builder/cmake_builder.rs +++ b/aws-lc-sys/builder/cmake_builder.rs @@ -67,12 +67,7 @@ impl CmakeBuilder { } fn get_cmake_config(&self) -> cmake::Config { - let mut cmake_cfg = cmake::Config::new(&self.manifest_dir); - if cargo_env("CARGO_ENCODED_RUSTFLAGS").contains("-Ctarget-feature=+crt-static") { - // See issue: https://github.com/aws/aws-lc-rs/issues/453 - cmake_cfg.static_crt(true); - } - cmake_cfg + cmake::Config::new(&self.manifest_dir) } #[allow(clippy::too_many_lines)] @@ -147,9 +142,20 @@ impl CmakeBuilder { cmake_cfg.generator("Ninja"); } - if target_os() == "windows" && target_arch() == "x86" && target_env() == "msvc" { - cmake_cfg.define("CMAKE_SYSTEM_NAME", ""); - cmake_cfg.define("CMAKE_SYSTEM_PROCESSOR", ""); + if target_os() == "windows" { + // See issue: https://github.com/aws/aws-lc-rs/issues/453 + if cargo_env("CARGO_ENCODED_RUSTFLAGS").contains("+crt-static") { + cmake_cfg.static_crt(true); + } + // cmake_cfg.define("CMAKE_MSVC_RUNTIME_LIBRARY", "MultiThreaded"); + // } else { + // cmake_cfg.static_crt(false); + // cmake_cfg.define("CMAKE_MSVC_RUNTIME_LIBRARY", "MultiThreadedDLL"); + // } + if target_arch() == "x86" && target_env() == "msvc" { + cmake_cfg.define("CMAKE_SYSTEM_NAME", ""); + cmake_cfg.define("CMAKE_SYSTEM_PROCESSOR", ""); + } } if target_vendor() == "apple" {