Make --target link arg non-local #1030
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- 'master' | |
- 'stable/**' | |
jobs: | |
test: | |
name: Test Corrosion | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.rust == 'nightly' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- windows-2022 | |
- ubuntu-latest | |
- macos-13 | |
arch: | |
- x86_64 | |
- i686 | |
- aarch64 | |
- powerpc64le | |
abi: | |
- gnu | |
- darwin | |
- msvc | |
cmake: | |
- 3.22.6 | |
rust: | |
- "stable" | |
generator: | |
- default # This is just whatever the platform default is | |
- ninja | |
compiler: [default] | |
include: | |
- rust: nightly | |
cmake: 3.22.6 | |
generator: ninja | |
arch: x86_64 | |
abi: msvc | |
os: windows-2022 | |
- rust: nightly | |
cmake: 3.22.6 | |
generator: ninja | |
arch: x86_64 | |
abi: gnu | |
os: ubuntu-latest | |
- rust: nightly | |
cmake: 3.22.6 | |
generator: ninja | |
arch: x86_64 | |
abi: darwin | |
os: macos-13 | |
- rust: 1.54 | |
cmake: 3.22.6 | |
generator: ninja | |
arch: x86_64 | |
abi: msvc | |
os: windows-2019 | |
compiler: clang | |
- os: ubuntu-latest | |
arch: x86_64 | |
abi: gnu | |
cmake: 3.22.6 | |
rust: 1.54 | |
generator: ninja-multiconfig | |
exclude: | |
# We have a separate test Matrix for the Visual Studio Generator | |
- os: windows-2022 | |
generator: default # Default generator is Visual Studio | |
# ARCH | |
- os: windows-2022 | |
arch: i686 | |
abi: gnu | |
- os: windows-2022 | |
arch: aarch64 | |
abi: gnu | |
- os: windows-2022 | |
arch: i686 | |
generator: ninja | |
- os: windows-2022 | |
arch: aarch64 | |
generator: ninja | |
- os: windows-2022 | |
arch: powerpc64le | |
- os: macos-13 | |
arch: i686 | |
- os: macos-13 | |
arch: aarch64 | |
- os: macos-13 | |
arch: powerpc64le | |
# ABI | |
- os: ubuntu-latest | |
abi: msvc | |
- os: ubuntu-latest | |
abi: darwin | |
- os: windows-2022 | |
abi: darwin | |
- os: macos-13 | |
abi: msvc | |
- os: macos-13 | |
abi: gnu | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Environment and Configure CMake | |
uses: "./.github/actions/setup_test" | |
with: | |
target_arch: ${{matrix.arch}} | |
abi: ${{matrix.abi}} | |
cmake: ${{matrix.cmake}} | |
rust: ${{matrix.rust}} | |
generator: ${{matrix.generator}} | |
build_dir: build | |
compiler: ${{matrix.compiler}} | |
- name: Run Tests | |
id: run_tests | |
working-directory: build | |
run: ctest --output-on-failure --build-config Debug -j 3 | |
test_msvc: | |
name: Test MSVC Generator | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- windows-2019 | |
- windows-2022 | |
arch: | |
- x86_64 | |
- i686 | |
- aarch64 | |
include: | |
- rust: 1.54.0 | |
# Override rust version for x86_64 | |
- arch: x86_64 | |
rust: 1.46.0 | |
- os: windows-2019 | |
cmake: 3.22.6 | |
- os: windows-2022 | |
cmake: 3.22.6 | |
steps: | |
- uses: actions/checkout@v4 | |
# The initial configure for MSVC is quite slow, so we cache the build directory | |
# (including the build directories of the tests) since reconfiguring is | |
# significantly faster. | |
- name: Cache MSVC build directory | |
id: cache-msvc-builddir | |
uses: actions/cache@v3 | |
with: | |
path: build | |
key: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.rust }}-msvc-build | |
- name: Setup Environment and Configure CMake | |
uses: "./.github/actions/setup_test" | |
with: | |
target_arch: ${{matrix.arch}} | |
abi: msvc | |
cmake: ${{matrix.cmake}} | |
rust: ${{matrix.rust}} | |
generator: default | |
build_dir: build | |
configure_params: "-DCORROSION_TESTS_KEEP_BUILDDIRS=ON" | |
- name: Run Tests | |
working-directory: build | |
run: ctest --output-on-failure --build-config Debug -j 3 | |
test_cxxbridge: | |
name: Test cxxbridge integration | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- windows-2022 | |
- ubuntu-latest | |
- macos-13 | |
include: | |
- abi: default | |
# - os: windows-2019 | |
# abi: gnu | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v3 | |
id: cache_cxxbridge | |
with: | |
path: "~/.cargo/bin/cxxbridge*" | |
key: ${{ runner.os }}-cxxbridge_1_0_86 | |
- name: Install cxxbridge | |
if: steps.cache_cxxbridge.outputs.cache-hit != 'true' | |
run: cargo install [email protected] | |
- name: Install lld | |
run: sudo apt update && sudo apt install -y lld | |
if: ${{ 'Linux' == runner.os }} | |
- name: Setup Environment and Configure CMake | |
uses: "./.github/actions/setup_test" | |
with: | |
target_arch: x86_64 | |
cmake: 3.22.6 | |
rust: stable minus 2 releases | |
abi: ${{ matrix.abi }} | |
generator: ninja | |
build_dir: build | |
configure_params: -DCORROSION_TESTS_CXXBRIDGE=ON | |
- name: Run Tests | |
working-directory: build | |
run: ctest --output-on-failure --build-config Debug -j 3 -R "^cxxbridge" | |
install: | |
name: Test Corrosion as a Library | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- windows-2019 | |
- ubuntu-latest | |
- macos-13 | |
include: | |
- rust: 1.46.0 | |
- os: macos-13 | |
rust: 1.54.0 # On MacOS-12 linking fails before Rust 1.54 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup MSVC Development Environment | |
uses: ilammy/msvc-dev-cmd@v1 | |
if: runner.os == 'Windows' | |
- name: Install CMake | |
uses: corrosion-rs/install-cmake@v2 | |
with: | |
cmake: 3.22.6 | |
ninja: 1.10.0 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{matrix.rust}} | |
- name: CMake Version | |
run: cmake --version | |
- name: Rust Version | |
run: rustc --version | |
- name: Test Corrosion as subdirectory | |
run: > | |
cmake | |
-S. | |
-Bbuild | |
-GNinja | |
-DCORROSION_VERBOSE_OUTPUT=ON | |
-DCORROSION_TESTS_INSTALL_CORROSION=OFF | |
&& | |
cd build | |
&& | |
ctest --output-on-failure -C Debug -j 3 | |
- name: Test Corrosion as installed module | |
run: > | |
cmake -E remove_directory build | |
&& | |
cmake | |
-S. | |
-Bbuild | |
-GNinja | |
-DCORROSION_VERBOSE_OUTPUT=ON | |
-DCMAKE_BUILD_TYPE=Release | |
-DCORROSION_TESTS_INSTALL_CORROSION=ON | |
&& | |
cd build | |
&& | |
ctest --output-on-failure -C Release -j 3 | |
# We want an "accumulation" job here because it is easier to specify required | |
# jobs here via needs, then in the github UI, since we use matrix jobs. | |
ci-success: | |
name: bors-ci-status | |
if: ${{ always() }} | |
needs: | |
- test | |
- test_msvc | |
- test_cxxbridge | |
- install | |
runs-on: ubuntu-latest | |
# Step copied from: https://github.com/cross-rs/cross/blob/80c9f9109a719ffb0f694060ddc6e371d5b3a540/.github/workflows/ci.yml#L361 | |
steps: | |
- name: Result | |
run: | | |
jq -C <<< "${needs}" | |
# Check if all needs were successful or skipped. | |
"$(jq -r 'all(.result as $result | (["success", "skipped"] | contains([$result])))' <<< "${needs}")" | |
env: | |
needs: ${{ toJson(needs) }} | |