name: Multiple architectures # START OF COMMON SECTION on: push: branches: [ 'master', 'main', 'release/**' ] pull_request: branches: [ '*' ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true # END OF COMMON SECTION jobs: my_matrix: name: Multi-arch test strategy: fail-fast: false matrix: include: - HOST: aarch64-linux-gnu CC: aarch64-linux-gnu-gcc ARCH: arm64 EXTRA_OPTS: --enable-sp-asm --enable-armasm - HOST: arm-linux-gnueabihf CC: arm-linux-gnueabihf-gcc ARCH: armhf EXTRA_OPTS: --enable-sp-asm - HOST: riscv64-linux-gnu CC: riscv64-linux-gnu-gcc ARCH: riscv64 # Config to ensure CPUs without Thumb instructions compiles - HOST: arm-linux-gnueabi CC: arm-linux-gnueabi-gcc CFLAGS: -marm -DWOLFSSL_SP_ARM_ARCH=6 ARCH: armel EXTRA_OPTS: --enable-sp-asm if: github.repository_owner == 'wolfssl' runs-on: ubuntu-22.04 # This should be a safe limit for the tests to run. timeout-minutes: 10 steps: - name: Install Compiler run: | sudo apt update sudo apt install -y crossbuild-essential-${{ matrix.ARCH }} qemu-user - uses: actions/checkout@v4 - name: Build env: CC: ${{ matrix.CC }} CFLAGS: ${{ matrix.CFLAGS }} QEMU_LD_PREFIX: /usr/${{ matrix.HOST }} run: ./autogen.sh && ./configure --host=${{ matrix.HOST }} --enable-all --disable-examples ${{ matrix.EXTRA_OPTS }} && make - name: Print errors if: ${{ failure() }} run: | if [ -f config.log ] ; then cat config.log fi - name: Run WolfCrypt Tests env: QEMU_LD_PREFIX: /usr/${{ matrix.HOST }} run: ./wolfcrypt/test/testwolfcrypt