Add Ref
and OutRef
to enhance COM authoring support (#3025)
#1181
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: cross | |
on: | |
pull_request: | |
push: | |
paths-ignore: | |
- '.github/ISSUE_TEMPLATE/**' | |
branches: | |
- master | |
env: | |
RUSTFLAGS: -Dwarnings | |
LLVM-MINGW-TOOLCHAIN-NAME: llvm-mingw-20220906-ucrt-ubuntu-18.04-x86_64 | |
jobs: | |
check: | |
strategy: | |
matrix: | |
# | |
# i686 cross compilation requires mingw packages that are configured | |
# to use DWARF-2 exception handling (vice SJLJ). | |
# | |
# The mingw package ecosystem is fragmented so we avoid that target | |
# for now. (e.g. macOS hosts will require mingw recompile) | |
# | |
# See also: | |
# https://github.com/rust-lang/rust/issues/79577 | |
# https://sourceforge.net/p/mingw-w64/wiki2/Exception%20Handling | |
# | |
image: [macos-latest, ubuntu-latest] | |
version: [stable, nightly] | |
target: [x86_64-pc-windows-gnu, aarch64-pc-windows-gnullvm, x86_64-pc-windows-gnullvm, i686-pc-windows-gnullvm] | |
runs-on: ${{ matrix.image }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Add toolchain target | |
run: rustup target add ${{ matrix.target }} | |
if: contains(matrix.target, 'gnullvm') == false | |
- name: Add nightly toolchain with gnullvm target | |
run: | | |
rustup default ${{ matrix.version }} | |
rustup target add ${{ matrix.target }} | |
if: startsWith(matrix.image, 'ubuntu-') && contains(matrix.target, 'gnullvm') && matrix.version == 'nightly' | |
- name: Install gcc-mingw-w64-x86-64 | |
run: sudo apt-get install -y gcc-mingw-w64-x86-64 | |
if: startsWith(matrix.image, 'ubuntu-') && matrix.target == 'x86_64-pc-windows-gnu' | |
- name: Install mingw-w64 | |
run: brew install mingw-w64 | |
if: startsWith(matrix.image, 'macos-') && matrix.target == 'x86_64-pc-windows-gnu' | |
- name: LLVM MinGW toolchain cache configuration | |
id: cache-llvm-mingw-toolchain | |
uses: actions/cache@v4 | |
if: startsWith(matrix.image, 'ubuntu-') && contains(matrix.target, 'gnullvm') && matrix.version == 'nightly' | |
with: | |
path: ${{ env.LLVM-MINGW-TOOLCHAIN-NAME }} | |
key: ${{ env.LLVM-MINGW-TOOLCHAIN-NAME }} | |
- name: Install LLVM MinGW toolchain | |
if: startsWith(matrix.image, 'ubuntu-') && contains(matrix.target, 'gnullvm') && matrix.version == 'nightly' && steps.cache-llvm-mingw-toolchain.outputs.cache-hit != 'true' | |
run: | | |
curl -L -o ${{ env.LLVM-MINGW-TOOLCHAIN-NAME }}.tar.xz https://github.com/mstorsjo/llvm-mingw/releases/download/20220906/${{ env.LLVM-MINGW-TOOLCHAIN-NAME }}.tar.xz | |
tar -xf ${{ env.LLVM-MINGW-TOOLCHAIN-NAME }}.tar.xz | |
echo "${{ env.LLVM-MINGW-TOOLCHAIN-NAME }}/bin" >> $GITHUB_PATH | |
- name: Add LLVM MinGW toolchain to PATH | |
if: startsWith(matrix.image, 'ubuntu-') && contains(matrix.target, 'gnullvm') && matrix.version == 'nightly' | |
run: | | |
echo "${{ env.LLVM-MINGW-TOOLCHAIN-NAME }}/bin" >> $GITHUB_PATH | |
- name: Test | |
shell: pwsh | |
run: | | |
cargo test --no-run --target ${{ matrix.target }} -p test_win32 | |
if (-Not (Resolve-Path "target/*/debug/deps/test_win32-*.exe" | Test-Path)) { | |
throw "Failed to find test_win32 executable." | |
} | |
if: contains(matrix.target, 'gnullvm') == false | |
- name: Test gnullvm | |
shell: pwsh | |
run: | | |
cargo test --no-run --target ${{ matrix.target }} -p test_win32 | |
if (-Not (Resolve-Path "target/*/debug/deps/test_win32-*.exe" | Test-Path)) { | |
throw "Failed to find test_win32 executable." | |
} | |
if: startsWith(matrix.image, 'ubuntu-') && contains(matrix.target, 'gnullvm') && matrix.version == 'nightly' |