Implement sym operands for global asm #3099
Workflow file for this run
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: CI | |
on: | |
- push | |
- pull_request | |
jobs: | |
rustfmt: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install rustfmt | |
run: | | |
rustup component add rustfmt | |
- name: Rustfmt | |
run: | | |
cargo fmt --check | |
rustfmt --check build_system/mod.rs | |
build: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-20.04 # FIXME switch to ubuntu-22.04 once #1303 is fixed | |
env: | |
TARGET_TRIPLE: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
env: | |
TARGET_TRIPLE: x86_64-apple-darwin | |
# cross-compile from Linux to Windows using mingw | |
- os: ubuntu-latest | |
env: | |
TARGET_TRIPLE: x86_64-pc-windows-gnu | |
- os: ubuntu-latest | |
env: | |
TARGET_TRIPLE: aarch64-unknown-linux-gnu | |
# s390x requires QEMU 6.1 or greater, we could build it from source, but ubuntu 22.04 comes with 6.2 by default | |
- os: ubuntu-latest | |
env: | |
TARGET_TRIPLE: s390x-unknown-linux-gnu | |
- os: windows-latest | |
env: | |
TARGET_TRIPLE: x86_64-pc-windows-msvc | |
- os: windows-latest | |
env: | |
TARGET_TRIPLE: x86_64-pc-windows-gnu | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache cargo target dir | |
uses: actions/cache@v3 | |
with: | |
path: build/cg_clif | |
key: ${{ runner.os }}-${{ matrix.env.TARGET_TRIPLE }}-cargo-build-target-${{ hashFiles('rust-toolchain', '**/Cargo.lock') }} | |
- name: Set MinGW as the default toolchain | |
if: matrix.os == 'windows-latest' && matrix.env.TARGET_TRIPLE == 'x86_64-pc-windows-gnu' | |
run: rustup set default-host x86_64-pc-windows-gnu | |
- name: Install MinGW toolchain and wine | |
if: matrix.os == 'ubuntu-latest' && matrix.env.TARGET_TRIPLE == 'x86_64-pc-windows-gnu' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gcc-mingw-w64-x86-64 wine-stable | |
- name: Install AArch64 toolchain and qemu | |
if: matrix.os == 'ubuntu-latest' && matrix.env.TARGET_TRIPLE == 'aarch64-unknown-linux-gnu' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gcc-aarch64-linux-gnu qemu-user | |
- name: Install s390x toolchain and qemu | |
if: matrix.env.TARGET_TRIPLE == 's390x-unknown-linux-gnu' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gcc-s390x-linux-gnu qemu-user | |
- name: Use sparse cargo registry | |
run: | | |
cat >> ~/.cargo/config.toml <<EOF | |
[unstable] | |
sparse-registry = true | |
EOF | |
- name: Prepare dependencies | |
run: ./y.rs prepare | |
- name: Build without unstable features | |
env: | |
TARGET_TRIPLE: ${{ matrix.env.TARGET_TRIPLE }} | |
# This is the config rust-lang/rust uses for builds | |
run: ./y.rs build --no-unstable-features | |
- name: Build | |
run: ./y.rs build --sysroot none | |
- name: Test | |
env: | |
TARGET_TRIPLE: ${{ matrix.env.TARGET_TRIPLE }} | |
run: ./y.rs test | |
abi_cafe: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
- os: ubuntu-latest | |
env: | |
TARGET_TRIPLE: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
env: | |
TARGET_TRIPLE: x86_64-apple-darwin | |
- os: windows-latest | |
env: | |
TARGET_TRIPLE: x86_64-pc-windows-msvc | |
- os: windows-latest | |
env: | |
TARGET_TRIPLE: x86_64-pc-windows-gnu | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache cargo target dir | |
uses: actions/cache@v3 | |
with: | |
path: build/cg_clif | |
key: ${{ runner.os }}-${{ matrix.env.TARGET_TRIPLE }}-cargo-build-target-${{ hashFiles('rust-toolchain', '**/Cargo.lock') }} | |
- name: Set MinGW as the default toolchain | |
if: matrix.env.TARGET_TRIPLE == 'x86_64-pc-windows-gnu' | |
run: rustup set default-host x86_64-pc-windows-gnu | |
- name: Use sparse cargo registry | |
run: | | |
cat >> ~/.cargo/config.toml <<EOF | |
[unstable] | |
sparse-registry = true | |
EOF | |
- name: Prepare dependencies | |
run: ./y.rs prepare | |
- name: Build | |
run: ./y.rs build --sysroot none | |
- name: Test abi-cafe | |
env: | |
TARGET_TRIPLE: ${{ matrix.env.TARGET_TRIPLE }} | |
run: ./y.rs abi-cafe | |
bench: | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache cargo target dir | |
uses: actions/cache@v3 | |
with: | |
path: build/cg_clif | |
key: ${{ runner.os }}-x86_64-unknown-linux-gnu-cargo-build-target-${{ hashFiles('rust-toolchain', '**/Cargo.lock') }} | |
- name: Cache cargo bin dir | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cargo/bin | |
key: ${{ runner.os }}-${{ matrix.env.TARGET_TRIPLE }}-cargo-bin-dir-${{ hashFiles('rust-toolchain', '**/Cargo.lock') }} | |
- name: Use sparse cargo registry | |
run: | | |
cat >> ~/.cargo/config.toml <<EOF | |
[unstable] | |
sparse-registry = true | |
EOF | |
- name: Install hyperfine | |
run: cargo install hyperfine || true | |
- name: Prepare dependencies | |
run: ./y.rs prepare | |
- name: Build | |
run: CI_OPT=1 ./y.rs build --sysroot none | |
- name: Benchmark | |
run: CI_OPT=1 ./y.rs bench | |
dist: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-20.04 # FIXME switch to ubuntu-22.04 once #1303 is fixed | |
env: | |
TARGET_TRIPLE: x86_64-unknown-linux-gnu | |
- os: macos-latest | |
env: | |
TARGET_TRIPLE: x86_64-apple-darwin | |
# cross-compile from Linux to Windows using mingw | |
- os: ubuntu-latest | |
env: | |
TARGET_TRIPLE: x86_64-pc-windows-gnu | |
- os: windows-latest | |
env: | |
TARGET_TRIPLE: x86_64-pc-windows-msvc | |
- os: windows-latest | |
env: | |
TARGET_TRIPLE: x86_64-pc-windows-gnu | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache cargo target dir | |
uses: actions/cache@v3 | |
with: | |
path: build/cg_clif | |
key: ${{ runner.os }}-${{ matrix.env.TARGET_TRIPLE }}-dist-cargo-build-target-${{ hashFiles('rust-toolchain', '**/Cargo.lock') }} | |
- name: Set MinGW as the default toolchain | |
if: matrix.os == 'windows-latest' && matrix.env.TARGET_TRIPLE == 'x86_64-pc-windows-gnu' | |
run: rustup set default-host x86_64-pc-windows-gnu | |
- name: Install MinGW toolchain and wine | |
if: matrix.os == 'ubuntu-latest' && matrix.env.TARGET_TRIPLE == 'x86_64-pc-windows-gnu' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gcc-mingw-w64-x86-64 wine-stable | |
- name: Use sparse cargo registry | |
run: | | |
cat >> ~/.cargo/config.toml <<EOF | |
[unstable] | |
sparse-registry = true | |
EOF | |
- name: Prepare dependencies | |
run: ./y.rs prepare | |
- name: Build backend | |
run: CI_OPT=1 ./y.rs build --sysroot none | |
- name: Build sysroot | |
run: CI_OPT=1 ./y.rs build | |
- name: Package prebuilt cg_clif | |
run: tar cvfJ cg_clif.tar.xz dist | |
- name: Upload prebuilt cg_clif | |
if: matrix.os == 'windows-latest' || matrix.env.TARGET_TRIPLE != 'x86_64-pc-windows-gnu' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: cg_clif-${{ matrix.env.TARGET_TRIPLE }} | |
path: cg_clif.tar.xz | |
- name: Upload prebuilt cg_clif (cross compile) | |
if: matrix.os != 'windows-latest' && matrix.env.TARGET_TRIPLE == 'x86_64-pc-windows-gnu' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: cg_clif-${{ runner.os }}-cross-x86_64-mingw | |
path: cg_clif.tar.xz |