Pregeneration of NASM build artifacts #836
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: | |
push: | |
branches: | |
- '*' | |
- '!generate/aws-lc-*' | |
pull_request: | |
branches: | |
- '*' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }} | |
cancel-in-progress: true | |
env: | |
RUST_BACKTRACE: 1 | |
# We can pin the version if nightly is too unstable. | |
# Otherwise, we test against the latest version. | |
RUST_NIGHTLY_TOOLCHAIN: nightly | |
jobs: | |
aws-lc-rs-cross-test: | |
if: github.repository_owner == 'aws' | |
name: aws-lc-rs cross tests | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-22.04 ] | |
target: | |
- aarch64-linux-android | |
- aarch64-unknown-linux-gnu | |
- aarch64-unknown-linux-musl | |
- arm-linux-androideabi | |
- arm-unknown-linux-gnueabihf | |
- armv7-linux-androideabi | |
- armv7-unknown-linux-gnueabihf | |
- i686-unknown-linux-gnu | |
- powerpc-unknown-linux-gnu | |
- powerpc64-unknown-linux-gnu | |
- powerpc64le-unknown-linux-gnu | |
- riscv64gc-unknown-linux-gnu | |
- s390x-unknown-linux-gnu | |
- x86_64-pc-windows-gnu | |
- x86_64-unknown-linux-musl | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: 'stable' | |
- name: Install cross | |
run: cargo install cross ${{ (matrix.target == 'riscv64gc-unknown-linux-gnu' && '--locked') || '' }} --git https://github.com/cross-rs/cross | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: ${{ (matrix.target == 'riscv64gc-unknown-linux-gnu' && '1.72.1') || 'stable' }} | |
target: ${{ matrix.target }} | |
- name: Set Rust toolchain override | |
run: rustup override set ${{ steps.toolchain.outputs.name }} | |
- if: ${{ matrix.target == 'riscv64gc-unknown-linux-gnu' }} | |
run: | | |
cargo update | |
cargo update -p clap --precise 4.4.18 | |
- name: Cross-compilation (build debug) | |
run: cross build -p aws-lc-rs --features unstable --target ${{ matrix.target }} | |
- name: Cross-compilation (test release) | |
run: cross test -p aws-lc-rs --release --features unstable --target ${{ matrix.target }} | |
aws-lc-rs-ios-aarch64: | |
if: github.repository_owner == 'aws' | |
name: iOS aarch64 cross-platform build | |
runs-on: macos-13-xlarge | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- run: | | |
brew install llvm | |
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' | |
echo 'export LIBCLANG_PATH=/opt/homebrew/opt/llvm' >> "$GITHUB_ENV" | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: stable | |
target: aarch64-apple-ios-sim | |
- name: Install bash | |
run: brew install bash | |
- name: iOS Simulator Runner | |
run: ./scripts/ci/ios-simulator-runner.sh | |
aws-lc-rs-ios-x86_64: | |
if: github.repository_owner == 'aws' | |
name: iOS x86-64 cross-platform build | |
runs-on: macos-13-xlarge | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- run: | | |
brew install llvm | |
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' | |
echo 'export LIBCLANG_PATH=/opt/homebrew/opt/llvm' >> "$GITHUB_ENV" | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: stable | |
target: x86_64-apple-ios | |
- name: Debug build for `x86_64-apple-ios` | |
run: cargo build -p aws-lc-rs --target x86_64-apple-ios --features bindgen | |
- name: Release build for `x86_64-apple-ios` | |
run: cargo build -p aws-lc-rs --release --target x86_64-apple-ios --features bindgen | |
cargo-xwin: | |
if: github.repository_owner == 'aws' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install build dependencies | |
run: | | |
sudo apt-get update && sudo apt-get install --assume-yes nasm clang ninja-build llvm | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
target: x86_64-pc-windows-msvc | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
target: aarch64-pc-windows-msvc | |
- name: Install cargo-xwin and bindgen-cli | |
run: cargo install --locked cargo-xwin bindgen-cli | |
- name: cargo xwin build for `x86_64-pc-windows-msvc` | |
run: cargo xwin build -p aws-lc-rs --release --all-targets --target x86_64-pc-windows-msvc | |
- name: cargo xwin build for `aarch64-pc-windows-msvc` | |
run: cargo xwin build -p aws-lc-rs --release --all-targets --target aarch64-pc-windows-msvc | |
aws-lc-rs-windows-gnu: | |
if: github.repository_owner == 'aws' | |
name: ${{ matrix.target }} | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- 'x86_64-pc-windows-gnu' | |
# TODO: Fails in GitHub CI. Appears to be related to bindgen. | |
# .../base.h:61:10: fatal error: 'stdlib.h' file not found | |
# - 'i686-pc-windows-gnu' | |
steps: | |
- uses: ilammy/setup-nasm@v1 | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
- name: Debug Test on `${{ matrix.target }}` | |
run: cargo test -p aws-lc-rs --target ${{ matrix.target }} --features bindgen | |
- name: Release test on `${{ matrix.target }}` | |
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 }} - ${{ (matrix.crt_static == '1' && 'crt-static and /WX') || '/WX' }} | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- 'x86_64-pc-windows-msvc' | |
- 'i686-pc-windows-msvc' | |
- 'aarch64-pc-windows-msvc' | |
crt_static: | |
- '0' | |
- '1' | |
steps: | |
- name: Install NASM | |
if: ${{ matrix.target == 'x86_64-pc-windows-msvc' || matrix.target == 'i686-pc-windows-msvc' }} | |
uses: ilammy/setup-nasm@v1 | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
- name: Set ACTION_CARGO | |
run: | | |
if ('${{ matrix.target }}' -like '*aarch64*') { | |
echo "ACTION_CARGO=build" | Out-File -FilePath $env:GITHUB_ENV -Append | |
} else { | |
echo "ACTION_CARGO=test" | Out-File -FilePath $env:GITHUB_ENV -Append | |
} | |
- 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 | |
run: cargo ${{ env.ACTION_CARGO }} -p aws-lc-rs --all-targets --target ${{ matrix.target }} --features bindgen | |
- name: Release Build for ${{ matrix.target }} | |
run: cargo ${{ env.ACTION_CARGO }} --release -p aws-lc-rs --all-targets --target ${{ matrix.target }} | |
freebsd: | |
if: github.repository_owner == 'aws' | |
name: aws-lc-rs freebsd test | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: Prepare VM | |
uses: vmactions/freebsd-vm@v1 | |
with: | |
release: 13.2 | |
usesh: true | |
copyback: false | |
prepare: | | |
pkg install -y git gmake bash sudo cmake-core llvm-devel-lite curl rust-bindgen-cli | |
run: | | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
. "$HOME/.cargo/env" | |
export AWS_LC_SYS_EXTERNAL_BINDGEN=1 | |
cargo test -p aws-lc-rs |