| name: CI | |
| on: | |
| push: | |
| branches: | |
| - auto | |
| - try | |
| pull_request: | |
| branches: | |
| - master | |
| jobs: | |
| style: | |
| name: Check Style | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@master | |
| - name: Install Rust | |
| run: rustup update nightly && rustup default nightly | |
| - run: ci/style.sh | |
| docs: | |
| name: Build Documentation | |
| needs: [style] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@master | |
| - name: Install Rust | |
| run: rustup update nightly && rustup default nightly | |
| - run: ci/dox.sh | |
| env: | |
| CI: 1 | |
| - name: Publish documentation | |
| run: | | |
| cd target/doc | |
| git init | |
| git add . | |
| git -c user.name='ci' -c user.email='ci' commit -m init | |
| git push -f -q https://git:${{ secrets.github_token }}@github.com/${{ github.repository }} HEAD:gh-pages | |
| if: github.event_name == 'push' && github.event.ref == 'refs/heads/master' | |
| verify: | |
| name: Automatic intrinsic verification | |
| needs: [style] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@master | |
| - name: Install Rust | |
| run: rustup update nightly && rustup default nightly | |
| - run: cargo test --manifest-path crates/stdarch-verify/Cargo.toml | |
| env_override: | |
| name: Env Override | |
| needs: [style] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@master | |
| - name: Install Rust | |
| run: rustup update nightly && rustup default nightly | |
| - run: RUST_STD_DETECT_UNSTABLE=avx cargo test --features=std_detect_env_override --manifest-path crates/std_detect/Cargo.toml env_override_no_avx | |
| test: | |
| needs: [style] | |
| name: Test | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| target: | |
| # Dockers that are run through docker on linux | |
| - i686-unknown-linux-gnu | |
| - x86_64-unknown-linux-gnu | |
| - x86_64-unknown-linux-gnu-emulated | |
| - arm-unknown-linux-gnueabihf | |
| - armv7-unknown-linux-gnueabihf | |
| - aarch64-unknown-linux-gnu | |
| - powerpc64le-unknown-linux-gnu | |
| - mips-unknown-linux-gnu | |
| - mips64-unknown-linux-gnuabi64 | |
| - mips64el-unknown-linux-gnuabi64 | |
| - s390x-unknown-linux-gnu | |
| - wasm32-wasi | |
| - i586-unknown-linux-gnu | |
| - x86_64-linux-android | |
| - arm-linux-androideabi | |
| - mipsel-unknown-linux-musl | |
| - aarch64-linux-android | |
| - nvptx64-nvidia-cuda | |
| - thumbv6m-none-eabi | |
| - thumbv7m-none-eabi | |
| - thumbv7em-none-eabi | |
| - thumbv7em-none-eabihf | |
| # macOS targets | |
| - x86_64-apple-darwin | |
| # FIXME: gh-actions build environment doesn't have linker support | |
| # - i686-apple-darwin | |
| # Windows targets | |
| - x86_64-pc-windows-msvc | |
| # FIXME: Disassembly not implemented for the # following targets: | |
| # - x86_64-pc-windows-gnu: | |
| # - i686-pc-windows-gnu: | |
| # - i686-pc-windows-msvc: | |
| include: | |
| - target: i686-unknown-linux-gnu | |
| os: ubuntu-latest | |
| - target: x86_64-unknown-linux-gnu | |
| os: ubuntu-latest | |
| - target: x86_64-unknown-linux-gnu-emulated | |
| os: ubuntu-latest | |
| test_everything: true | |
| rustflags: --cfg stdarch_intel_sde | |
| - target: arm-unknown-linux-gnueabihf | |
| os: ubuntu-latest | |
| - target: armv7-unknown-linux-gnueabihf | |
| os: ubuntu-latest | |
| rustflags: -C target-feature=+neon | |
| - target: mips-unknown-linux-gnu | |
| os: ubuntu-latest | |
| norun: true | |
| - target: mips64-unknown-linux-gnuabi64 | |
| os: ubuntu-latest | |
| norun: true | |
| - target: mips64el-unknown-linux-gnuabi64 | |
| os: ubuntu-latest | |
| norun: true | |
| - target: powerpc64le-unknown-linux-gnu | |
| os: ubuntu-latest | |
| disable_assert_instr: true | |
| - target: s390x-unknown-linux-gnu | |
| os: ubuntu-latest | |
| - target: wasm32-wasi | |
| os: ubuntu-latest | |
| - target: aarch64-unknown-linux-gnu | |
| os: ubuntu-latest | |
| - target: x86_64-apple-darwin | |
| os: macos-latest | |
| - target: x86_64-pc-windows-msvc | |
| os: windows-latest | |
| - target: i586-unknown-linux-gnu | |
| os: ubuntu-latest | |
| - target: x86_64-linux-android | |
| os: ubuntu-latest | |
| disable_assert_instr: 1 | |
| - target: arm-linux-androideabi | |
| os: ubuntu-latest | |
| disable_assert_instr: 1 | |
| - target: mipsel-unknown-linux-musl | |
| os: ubuntu-latest | |
| norun: 1 | |
| - target: aarch64-linux-android | |
| os: ubuntu-latest | |
| disable_assert_instr: 1 | |
| - target: nvptx64-nvidia-cuda | |
| os: ubuntu-latest | |
| - target: thumbv6m-none-eabi | |
| os: ubuntu-latest | |
| - target: thumbv7m-none-eabi | |
| os: ubuntu-latest | |
| - target: thumbv7em-none-eabi | |
| os: ubuntu-latest | |
| - target: thumbv7em-none-eabihf | |
| os: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@master | |
| - name: Install Rust (rustup) | |
| run: | | |
| rustup update nightly --no-self-update | |
| rustup default nightly | |
| if: matrix.os != 'macos-latest' | |
| - name: Install Rust (macos) | |
| run: | | |
| curl https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly | |
| echo "##[add-path]$HOME/.cargo/bin" | |
| rustup update nightly --no-self-update | |
| rustup default nightly | |
| if: matrix.os == 'macos-latest' | |
| - run: | | |
| rustup default nightly | |
| rustup target add ${{ matrix.target }} | |
| if: "!endsWith(matrix.target, 'emulated')" | |
| - run: cargo generate-lockfile | |
| # Configure some env vars based on matrix configuration | |
| - run: echo "##[set-env name=NORUN]1" | |
| if: matrix.norun != '' || startsWith(matrix.target, 'thumb') || matrix.target == 'nvptx64-nvidia-cuda' | |
| - run: echo "##[set-env name=STDARCH_TEST_EVERYTHING]1" | |
| if: matrix.test_everything != '' | |
| - run: echo "##[set-env name=RUSTFLAGS]${{ matrix.rustflags }}" | |
| if: matrix.rustflags != '' | |
| - run: echo "##[set-env name=STDARCH_DISABLE_ASSERT_INSTR]1" | |
| if: matrix.disable_assert_instr != '' | |
| - run: echo "##[set-env name=NOSTD]1" | |
| if: startsWith(matrix.target, 'thumb') || matrix.target == 'nvptx64-nvidia-cuda' | |
| # Windows & OSX go straight to `run.sh` ... | |
| - run: ./ci/run.sh | |
| shell: bash | |
| if: matrix.os != 'ubuntu-latest' || startsWith(matrix.target, 'thumb') | |
| env: | |
| TARGET: ${{ matrix.target }} | |
| # ... while Linux goes to `run-docker.sh` | |
| - run: ./ci/run-docker.sh ${{ matrix.target }} | |
| shell: bash | |
| if: "matrix.os == 'ubuntu-latest' && !startsWith(matrix.target, 'thumb')" | |
| env: | |
| TARGET: ${{ matrix.target }} |