summaryrefslogtreecommitdiffstats
path: root/library/stdarch/.github/workflows/main.yml
blob: 7d408533467fa9c687558b04d7fdb0701079cc3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
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
        - riscv64gc-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
        - mipsel-unknown-linux-musl
        - nvptx64-nvidia-cuda
        - thumbv6m-none-eabi
        - thumbv7m-none-eabi
        - thumbv7em-none-eabi
        - thumbv7em-none-eabihf

        # macOS targets
        #- x86_64-apple-darwin
        - aarch64-apple-darwin
        # FIXME: gh-actions build environment doesn't have linker support
        # - i686-apple-darwin

        # Windows targets
        - x86_64-pc-windows-msvc
        - i686-pc-windows-msvc
        # FIXME: Disassembly not implemented for the # following targets:
        # - x86_64-pc-windows-gnu:
        # - i686-pc-windows-gnu:
        # - aarch64-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
        - 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-apple-darwin
          os: macos-latest
          norun: true
        - target: aarch64-unknown-linux-gnu
          os: ubuntu-latest
        - target: x86_64-apple-darwin
          os: macos-11
        - target: x86_64-pc-windows-msvc
          os: windows-latest
        - target: i686-pc-windows-msvc
          os: windows-latest
        - target: i586-unknown-linux-gnu
          os: ubuntu-latest
        - target: mipsel-unknown-linux-musl
          os: ubuntu-latest
          norun: 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
        - target: riscv64gc-unknown-linux-gnu
          os: ubuntu-latest

    steps:
    - uses: actions/checkout@master
      with:
        submodules: recursive
    - 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 "$HOME/.cargo/bin" >> $GITHUB_PATH
        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')"
    - name: Setup (aarch64-apple-darwin)
      run: |
        echo "SDKROOT=$(xcrun -sdk macosx11.0 --show-sdk-path)" >> $GITHUB_ENV
        echo "MACOS_DEPLOYMENT_TARGET=$(xcrun -sdk macosx11.0 --show-sdk-platform-version)" >> $GITHUB_ENV
      if: matrix.target == 'aarch64-apple-darwin'
    - run: cargo generate-lockfile

    # Configure some env vars based on matrix configuration
    - run: echo "NORUN=1" >> $GITHUB_ENV
      if: matrix.norun != '' || startsWith(matrix.target, 'thumb') || matrix.target == 'nvptx64-nvidia-cuda'
    - run: echo "STDARCH_TEST_EVERYTHING=1" >> $GITHUB_ENV
      if: matrix.test_everything != ''
    - run: echo "RUSTFLAGS=${{ matrix.rustflags }}" >> $GITHUB_ENV
      if: matrix.rustflags != ''
    - run: echo "STDARCH_DISABLE_ASSERT_INSTR=1" >> $GITHUB_ENV
      if: matrix.disable_assert_instr != ''
    - run: echo "NOSTD=1" >> $GITHUB_ENV
      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 }}