| name: CI |
| |
| on: |
| push: |
| branches-ignore: |
| - 'ci/**' |
| - '!ci/gha**' |
| - 'dependabot/**' |
| pull_request: |
| branches: |
| - 'master' |
| |
| concurrency: |
| group: build-${{ github.event.pull_request.number || github.ref }} |
| cancel-in-progress: true |
| |
| jobs: |
| checkinstall: |
| runs-on: ubuntu-slim |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| fetch-depth: 2 |
| - name: Install APT Dependencies |
| run: | |
| sudo apt-get update && sudo apt-get install -y --no-install-recommends ninja-build |
| pipx install meson==1.3.2 |
| - run: | |
| meson setup build --prefix "$PWD/install" -Dtests=false |
| meson install -C build --quiet |
| diff <(find simde/ -type f -name "*.h") <(cd install/include/; find simde -type f -name "*.h" ) |
| |
| formatting: |
| runs-on: ubuntu-slim |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| fetch-depth: 2 |
| - name: Install pcre2grep |
| run: sudo apt-get update && sudo apt-get install -y --no-install-recommends pcre2-utils |
| # Check for trailing whitespace |
| - name: Trailing whitespace |
| run: find simde/ \( -name '*.c' -o -name '*.h' \) -exec grep -nP '\s+$' {} + && exit 1 || exit 0 |
| # We use spaces, not tabs. I don't want to start a holy war here; |
| # I don't actually have a strong preference between the two, but I |
| # do have a strong preference for consistency, so don't @ me. |
| - name: Tabs |
| run: find simde/ \( -name '*.c' -o -name '*.h' \) -exec grep -nP '\t' {} + && exit 1 || exit 0 |
| # s/8/16/ will result in this if the input is x86. |
| - name: Bad substitutions |
| run: git grep -i 'x''1''6''6' && exit 1 || exit 0 |
| - name: Incorrect assertions in test/ |
| run: grep -PR '(?<=[^a-zA-Z0-9_])simde_assert_u?int(8|16|32|64)(?>[^a-zA-Z0-9_])' test/ && exit 1 || exit 0 |
| # Check to make sure no source files have the executable bit set |
| - name: Executable sources |
| run: find \( -name '*.c' -o -name '*.h' \) -executable | grep -q '.' && exit 1 || exit 0 |
| # Make sure neon.h includes all the NEON headers. |
| - name: Missing NEON includes |
| run: for f in simde/arm/neon/*.h; do grep -q "include \"neon/$(basename "$f")\"" simde/arm/neon.h || (echo "Missing $f" && exit 1); done |
| # Make sure sve.h includes all the SVE headers. |
| - name: Missing SVE includes |
| run: for f in simde/arm/sve/*.h; do grep -q "include \"sve/$(basename "$f")\"" simde/arm/sve.h || (echo "Missing $f" && exit 1); done |
| # Make sure msa.h includes all the MSA headers. |
| - name: Missing MSA includes |
| run: for f in simde/mips/msa/*.h; do grep -q "include \"msa/$(basename "$f")\"" simde/mips/msa.h || (echo "Missing $f" && exit 1); done |
| # Make sure we can find the expected header guards. It's easy to miss this when doing C&P |
| - name: Header guards |
| run: | |
| while IFS= read -r -d '' file |
| do |
| grep -q "$(echo "$file" | tr '[:lower:]' '[:upper:]' | tr '[:punct:]' '_')" "$file" || (echo "Missing or incorrect header guard in $file" && exit 1) |
| done < <(find simde/*/ -name '*.h' -print0) |
| # There should be an empty line at the end of every file |
| - name: Newline at EOF |
| run: | |
| while IFS= read -r -d '' file |
| do |
| if [ -n "$(tail -c 1 "$file")" ] |
| then echo "No newline at end of $file" && exit 1 |
| fi |
| done < <(find simde -name '*.h' -print0) |
| # Don't #ifndef ; use !defined(...) instead. ifndef leads to annoying inconsistencies |
| - name: ifndef |
| run: | |
| while IFS= read -r -d '' file |
| do |
| grep -qP '^ *# *ifndef ' "${file}" && exit 1 || exit 0 |
| done < <(find simde -name '*.h' -print0) |
| # List of headers we want Meson to install |
| - name: Meson install headers |
| run: | |
| while IFS= read -r -d '' file |
| do |
| grep -qF "$(basename "${file}" .h)" meson.build || (echo "${file} missing from top-level meson.build" && exit 1) |
| done < <(find simde -name '*.h' -print0) |
| # Make sure we don't accidentally use `vector ...` instead of SIMDE_POWER_ALTIVEC_VECTOR(...) |
| - name: AltiVec raw vector keyword |
| run: find simde/ \( -name '*.c' -o -name '*.h' \) -exec grep -nP 'vector( +)((bool|signed|unsigned) +)?(double|float|long long|long|int|short|char)' {} + && exit 1 || exit 0 |
| # Check indentation of preprocessor directives. |
| - name: Preprocessor directive indentation |
| run: find simde/*/ -name 'avx*.h' -exec pcre2grep -M '{\n#' {} + && exit 1 || exit 0 |
| - name: Stray `&& 0` |
| run: git grep ' && 0' simde/ test/ && exit 1 || exit 0 |
| |
| x86: |
| runs-on: ubuntu-24.04 |
| strategy: |
| fail-fast: false |
| matrix: |
| isax: |
| - -DSIMDE_NATURAL_VECTOR_SIZE=256 -march=x86-64-v3 -mavx512bw -mavx512vl |
| # https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels |
| - -march=x86-64 -maes -mpclmul # the x86-64 baseline is CMOV, CX8, FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2 |
| - -march=x86-64-v2 # CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4_1, SSE4_2, SSSE3 |
| - -march=x86-64-v3 # AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE |
| - -march=x86-64-v4 # AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL a.k.a. skylake+ (including zen4) |
| include: |
| - target: tgl |
| - isax: -march=x86-64-v4 -mcx16 -mxsave -mpclmul -mfsgsbase -mrdrnd -mhle -mrdseed -maes -mclflushopt -mxsavec -mxsaves -msgx -mpku -msha -mrdpid -mavx512vpopcntdq -mavx512ifma -mavx512vbmi -mavx512vnni -mavx512vbmi2 -mavx512bitalg -mvpclmulqdq -mgfni -mvaes # icelake |
| target: icl |
| - isax: -march=x86-64-v4 -mcx16 -mxsave -mpclmul -mfsgsbase -mrdrnd -mhle -mrdseed -maes -mclflushopt -mxsavec -mxsaves -msgx -mpku -msha -mrdpid -mavx512vpopcntdq -mavx512ifma -mavx512vbmi -mavx512vnni -mavx512vbmi2 -mavx512bitalg -mvpclmulqdq -mgfni -mvaes -mpconfig -mwbnoinvd -mclwb -mmovdiri -mmovdir64b -menqcmd -mcldemote -mptwrite -mwaitpkg -mserialize -mtsxldtrk -muintr -mavxvnni -mavx512fp16 # sapphire rapids without bf16 |
| # See https://github.com/simd-everywhere/simde/issues/1095 |
| target: spr |
| env: |
| CFLAGS: -Wall -Wextra -Werror ${{ matrix.isax }} |
| CXXFLAGS: -Wall -Wextra -Werror ${{ matrix.isax }} |
| INTEL_TARGET: ${{ matrix.target }} |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - name: CPU Information |
| run: cat /proc/cpuinfo |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:daawesomep/toolchain-backports-noble |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo apt-get install -y --no-install-recommends ninja-build pipx \ |
| gcc-15 g++-15 ccache |
| sudo apt-get satisfy -y 'binutils (>= 2.45)' |
| sudo apt-get purge -y gcc g++ |
| sudo ln -s /usr/bin/gcc-15 /usr/bin/gcc |
| sudo ln -s /usr/bin/g++-15 /usr/bin/g++ |
| pipx install meson==1.3.2 |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }}-${{ matrix.isax }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| - name: Configure |
| run: meson setup build || (cat build/meson-logs/meson-log.txt ; false) |
| - name: Test run native? |
| run: | |
| test/check-flags.sh query && echo Tests with "$CFLAGS" will be run natively |
| test/check-flags.sh query || echo Tests with "$CFLAGS" will be run using SDE |
| - name: Build |
| run: ninja -C build -v |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs --wrapper "${GITHUB_WORKSPACE}/test/check-flags.sh sde" $(meson test -C build --list | grep -v emul) |
| |
| x86-xop: |
| runs-on: ubuntu-24.04 |
| strategy: |
| fail-fast: false |
| env: |
| CFLAGS: -Wall -Wextra -Werror -march=bdver2 |
| CXXFLAGS: -Wall -Wextra -Werror -march=bdver2 |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - name: CPU Information |
| run: cat /proc/cpuinfo |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:daawesomep/toolchain-backports-noble |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo apt-get install -y --no-install-recommends ninja-build pipx \ |
| g++-15 gcc-15 qemu-user-static ccache |
| sudo apt-get satisfy -y 'binutils (>= 2.45)' |
| sudo apt-get purge -y gcc g++ |
| sudo ln -s /usr/bin/gcc-15 /usr/bin/gcc |
| sudo ln -s /usr/bin/g++-15 /usr/bin/g++ |
| pipx install meson==1.3.2 |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| - name: Configure |
| run: meson setup build || (cat build/meson-logs/meson-log.txt ; false) |
| - name: Build |
| run: ninja -C build -v |
| # can't test until we find a combination of `gcc -march=` and `qemu -cpu` that both enable XOP and allows qemu to test it |
| # - name: Test |
| # run: meson test -C build --print-errorlogs --wrapper "qemu-amd64-static -cpu Opteron_G5-v1" |
| |
| emscripten: |
| runs-on: ubuntu-24.04 |
| strategy: |
| matrix: |
| variant: |
| - "32" |
| - "64" |
| - "32-relaxed" |
| - "64-relaxed" |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo apt-get install -y --no-install-recommends ninja-build pipx ccache |
| pipx install meson==1.3.2 |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }} |
| verbose: 2 |
| - name: Install emscripten |
| run: | |
| git clone https://github.com/emscripten-core/emsdk.git /opt/emsdk |
| cd /opt/emsdk |
| ./emsdk install latest # FIXME, revert to tot |
| ./emsdk activate latest # FIXME, revert to tot |
| source emsdk_env.sh |
| - name: Install v8 |
| run: | |
| sudo npm install jsvu -g |
| jsvu --os=linux64 --engines=v8 |
| sudo ln -s "$HOME/.jsvu/bin/v8" /usr/bin/v8 |
| ls -l /usr/bin/v8 |
| ls -l ~/.jsvu || true |
| /usr/bin/v8 --help |
| - name: Configure |
| run: meson setup build --optimization 2 --cross-file docker/cross-files/emscripten${{ matrix.variant }}.cross |
| - name: Build |
| run: meson compile -C build --verbose |
| - name: Test |
| run: meson test -C build --print-errorlogs |
| |
| native-aliases: |
| runs-on: ubuntu-24.04 |
| env: |
| CFLAGS: -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING -Wall -Wextra -Werror -pedantic |
| CXXFLAGS: -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING -Wall -Wextra -Werror -pedantic |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - id: cpu |
| name: CPU Information |
| run: cat /proc/cpuinfo |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:daawesomep/toolchain-backports-noble |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo apt-get -y --no-install-recommends install libxml2-utils \ |
| ninja-build pipx ccache gcc-15 g++-15 |
| sudo apt-get satisfy -y 'binutils (>= 2.45)' |
| sudo apt-get purge -y gcc g++ |
| sudo ln -s /usr/bin/gcc-15 /usr/bin/gcc |
| sudo ln -s /usr/bin/g++-15 /usr/bin/g++ |
| pipx install meson==1.3.2 |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| - name: Convert |
| run: ./test/native-aliases.sh |
| - name: Configure |
| run: meson setup build |
| - name: Build |
| run: ninja -C build -v |
| - name: Test |
| run: ninja -C build -v test |
| |
| sleef: |
| runs-on: ubuntu-24.04 |
| env: |
| CFLAGS: -march=native -Wall -Wextra -Werror |
| CXXFLAGS: -march=native -Wall -Wextra -Werror |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - id: cpu |
| name: CPU Information |
| run: | |
| cat /proc/cpuinfo |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:daawesomep/toolchain-backports-noble |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo apt-get install -y --no-install-recommends ninja-build libsleef-dev \ |
| pipx ccache gcc-15 g++-15 |
| sudo apt-get satisfy -y 'binutils (>= 2.45)' |
| sudo apt-get purge -y gcc g++ |
| sudo ln -s /usr/bin/gcc-15 /usr/bin/gcc |
| sudo ln -s /usr/bin/g++-15 /usr/bin/g++ |
| pipx install meson==1.3.2 |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| - name: Configure |
| run: meson setup build -Dsleef=enabled |
| - name: Build |
| run: ninja -C build -v |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) |
| |
| gcc: |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - version: 9 |
| distro: ubuntu-24.04 |
| - version: 10 |
| distro: ubuntu-24.04 |
| - version: 10 |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math |
| - version: 11 |
| distro: ubuntu-24.04 |
| - version: 11 |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math |
| - version: 11 |
| distro: ubuntu-24.04-arm |
| - version: 11 |
| distro: ubuntu-24.04-arm |
| plain: true |
| - version: 12 |
| distro: ubuntu-24.04 |
| - version: 12 |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math |
| - version: 12 |
| distro: ubuntu-24.04-arm |
| - version: 13 |
| distro: ubuntu-24.04 |
| - version: 13 |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math |
| - version: 13 |
| distro: ubuntu-24.04-arm |
| - version: 14 |
| distro: ubuntu-24.04 |
| - version: 14 |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math |
| - version: 14 |
| distro: ubuntu-24.04-arm |
| - version: 15 |
| distro: ubuntu-24.04 |
| - version: 15 |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math |
| - version: 15 |
| distro: ubuntu-24.04-arm |
| - version: 15 |
| distro: ubuntu-24.04-arm |
| plain: true |
| - version: 15 # plain armhf |
| distro: ubuntu-24.04-arm |
| gcc: arm-linux-gnueabihf |
| plain: true |
| - version: 15 # armv7 |
| distro: ubuntu-24.04-arm |
| gcc: arm-linux-gnueabihf |
| arch_flags: -march=armv7-a+simd+neon-fp16 |
| plain: true |
| - version: 15 # armv8 32-bit |
| distro: ubuntu-24.04-arm |
| gcc: arm-linux-gnueabihf |
| arch_flags: -mcpu=cortex-a32 -mfpu=crypto-neon-fp-armv8 |
| plain: true |
| runs-on: ${{ matrix.distro }} |
| env: |
| CFLAGS: ${{ matrix.arch_flags }} ${{ case( |
| matrix.plain == true, '-Wall -Wextra -Werror', |
| '-march=native -Wall -Wextra -Werror') }} |
| CXXFLAGS: ${{ matrix.arch_flags }} ${{ case( |
| matrix.plain == true, '-Wall -Wextra -Werror', |
| '-march=native -Wall -Wextra -Werror') }} |
| CCBIN: ${{ |
| case( |
| matrix.gcc == '', format('gcc-{0}', matrix.version), |
| format('{0}-gcc-{1}', matrix.gcc, matrix.version) |
| ) }} |
| CXXBIN: ${{ |
| case( |
| matrix.gcc == '', format('g++-{0}', matrix.version), |
| format('{0}-g++-{1}', matrix.gcc, matrix.version) |
| ) }} |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - id: cpu |
| name: CPU Information |
| run: | |
| cat /proc/cpuinfo |
| - name: enable armhf |
| if: ${{ contains(matrix.gcc,'arm-linux-gnueabihf') }} |
| run: sudo dpkg --add-architecture armhf && sudo apt-get update && sudo apt-get install -y libstdc++6:armhf |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo add-apt-repository ppa:daawesomep/toolchain-backports-noble |
| sudo add-apt-repository ppa:ubuntu-toolchain-r/test |
| sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa |
| sudo add-apt-repository ppa:cppiber/build-depends |
| sudo apt-get -y install --no-install-recommends pipx ninja-build \ |
| ccache gcc-${{ case(matrix.gcc == '', matrix.version, format('{0}-{1}', matrix.version, matrix.gcc)) }} \ |
| g++-${{ case(matrix.gcc == '', matrix.version, format('{0}-{1}', matrix.version, matrix.gcc)) }} |
| sudo apt-get -y purge g++ gcc |
| pipx install meson==1.3.2 |
| - if: ${{ matrix.version == '15' }} |
| run: sudo apt-get satisfy -y 'binutils (>= 2.45)' |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }}-${{ matrix.version }}-${{ matrix.distro }}-${{ matrix.arch_flags }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| sudo ln -s "/usr/bin/${CCBIN}" /usr/bin/gcc |
| sudo ln -s "/usr/bin/${CXXBIN}" /usr/bin/g++ |
| - name: Configure |
| run: meson setup build || (cat build/meson-logs/meson-log.txt ; false) |
| - name: Build |
| run: meson compile -C build --verbose |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs |
| |
| gcc-qemu: |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - version: 14 |
| cross: armel |
| arch_gnu_abi: eabi |
| arch_deb: armel |
| arch_gnu: arm |
| distro: ubuntu-24.04 |
| - version: 15 |
| cross: riscv64 |
| arch_gnu: riscv64 |
| arch_deb: riscv64 |
| distro: ubuntu-24.04 |
| - extra: -O3 |
| version: 15 |
| cross: riscv64 |
| arch_gnu: riscv64 |
| arch_deb: riscv64 |
| distro: ubuntu-24.04 |
| - version: 15 |
| cross: s390x |
| arch_gnu: s390x |
| arch_deb: s390x |
| distro: ubuntu-24.04 |
| - version: 14 |
| cross: power9 |
| arch_gnu: powerpc64le |
| arch_deb: ppc64el |
| distro: ubuntu-24.04 |
| - version: 14 |
| cross: loongarch64 |
| arch_gnu: loongarch64 |
| arch_deb: loong64 |
| distro: ubuntu-24.04 |
| # - version: 14 |
| # cross: mips64el |
| # arch_gnu: mips64el |
| # arch_gnu_abi: abi64 |
| # arch_deb: mips64el |
| # distro: ubuntu-24.04 |
| runs-on: ${{ matrix.distro }} |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - name: CPU Information |
| run: cat /proc/cpuinfo |
| - if: ${{ matrix.distro == 'ubuntu-24.04' && ( matrix.version == '15' )}} |
| run: |
| sudo add-apt-repository ppa:daawesomep/toolchain-backports-noble |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa |
| sudo apt-get -y --no-install-recommends install ccache ninja-build \ |
| gcc-${{ matrix.version }}-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} \ |
| g++-${{ matrix.version }}-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} binfmt-support \ |
| qemu-user-static pipx libc6-${{ matrix.arch_deb }}-cross libstdc++-${{ matrix.version }}-dev-${{ matrix.arch_deb }}-cross |
| pipx install meson==1.3.2 |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }}-${{ matrix.version}}${{ matrix.extra }}-${{ matrix.distro }}-${{ matrix.cross }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| - name: Configure |
| run: meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-gcc-${{ matrix.version }}${{ matrix.extra}}-ccache.cross build |
| - name: Build |
| run: ninja -C build -v |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs |
| |
| clang17-qemu-rvv: |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - version: 17 # not yet passing with clang 18.1.3 |
| cross: riscv64+rvv_vlen128_elen64 |
| arch_gnu: riscv64 |
| arch_deb: riscv64 |
| distro: ubuntu-24.04 |
| - version: 17 # not yet passing with clang 18.1.3 |
| cross: riscv64+rvv_vlen256_elen64 |
| arch_gnu: riscv64 |
| arch_deb: riscv64 |
| distro: ubuntu-24.04 |
| - version: 17 # not yet passing with clang 18.1.3 |
| cross: riscv64+rvv_vlen512_elen64 |
| arch_gnu: riscv64 |
| arch_deb: riscv64 |
| distro: ubuntu-24.04 |
| runs-on: ${{ matrix.distro }} |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - name: CPU Information |
| run: cat /proc/cpuinfo |
| - name: Install APT Dependencies |
| run: | |
| #add-apt-repository ppa:savoury1/virtualisation |
| #add-apt-repository ppa:savoury1/display |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo apt-get install -y --no-install-recommends ccache ninja-build pkg-config \ |
| qemu-user-static clang-${{ matrix.version }} binfmt-support \ |
| libc6-${{ matrix.arch_deb }}-cross meson llvm-${{ matrix.version }} \ |
| libstdc++-12-dev-${{ matrix.arch_deb }}-cross \ |
| binutils-${{ matrix.arch_gnu }}-linux-gnu |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }}-${{ matrix.distro }}-${{ matrix.cross }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| - name: Configure |
| run: | |
| meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-clang-${{ matrix.version }}-ccache.cross build \ |
| || (cat build/meson-logs/meson-log.txt ; false) |
| - name: Build |
| run: ninja -C build -v |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) |
| |
| clang18-qemu-rvv: |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - version: 18 |
| cross: riscv64+rvv_vlen128_elen64_zvfh |
| arch_gnu: riscv64 |
| arch_deb: riscv64 |
| distro: ubuntu-24.04 |
| - version: 18 |
| cross: riscv64+rvv_vlen256_elen64_zvfh |
| arch_gnu: riscv64 |
| arch_deb: riscv64 |
| distro: ubuntu-24.04 |
| - version: 18 |
| cross: riscv64+rvv_vlen512_elen64_zvfh |
| arch_gnu: riscv64 |
| arch_deb: riscv64 |
| distro: ubuntu-24.04 |
| runs-on: ${{ matrix.distro }} |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - name: CPU Information |
| run: cat /proc/cpuinfo |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo apt-get install -y --no-install-recommends \ |
| ninja-build pkg-config qemu-user-static clang-${{ matrix.version }} \ |
| binfmt-support libc6-${{ matrix.arch_deb }}-cross meson \ |
| libstdc++-12-dev-${{ matrix.arch_deb }}-cross \ |
| binutils-${{ matrix.arch_gnu }}-linux-gnu ccache |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }}-${{ matrix.distro }}-${{ matrix.cross }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| - name: Configure |
| run: | |
| meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-clang-${{ matrix.version }}-ccache.cross build \ |
| || (cat build/meson-logs/meson-log.txt ; false) |
| - name: Build |
| run: ninja -C build -v |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) |
| |
| clang-qemu: |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| # - version: 18 |
| # cross: mips64el |
| # arch_deb: mips64el |
| # arch_gnu: mips64el |
| # arch_gnu_abi: abi64 |
| # distro: ubuntu-24.04 |
| - version: 21 |
| cross: armel |
| arch_gnu_abi: eabi |
| arch_deb: armel |
| arch_gnu: arm |
| distro: ubuntu-24.04 |
| - version: 21 |
| cross: riscv64 |
| arch_gnu: riscv64 |
| arch_deb: riscv64 |
| distro: ubuntu-24.04 |
| - version: 20 |
| cross: s390x |
| arch_gnu: s390x |
| arch_deb: s390x |
| distro: ubuntu-24.04 |
| - version: 21 |
| cross: ppc64el |
| arch_deb: ppc64el |
| arch_gnu: powerpc64le |
| distro: ubuntu-24.04 |
| - version: 21 |
| cross: loongarch64 |
| arch_deb: loong64 |
| arch_gnu: loongarch64 |
| distro: ubuntu-24.04 |
| runs-on: ${{ matrix.distro }} |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - name: CPU Information |
| run: cat /proc/cpuinfo |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:stephanosio/ccache |
| wget https://apt.llvm.org/llvm.sh |
| chmod +x llvm.sh |
| sudo ./llvm.sh ${{ matrix.version }} |
| sudo apt-get -y --no-install-recommends install ccache ninja-build \ |
| binfmt-support clang-${{ matrix.version }} llvm-${{ matrix.version }} lld-${{ matrix.version }} \ |
| qemu-user-static pipx libc6-${{ matrix.arch_deb }}-cross libstdc++-14-dev-${{ matrix.arch_deb }}-cross \ |
| binutils-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} |
| pipx install meson |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }}-${{ matrix.version }}-${{ matrix.cross }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| - name: Configure |
| run: | |
| meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-clang-${{ matrix.version }}-ccache.cross build \ |
| || (cat build/meson-logs/meson-log.txt ; false) |
| - name: Build |
| run: ninja -C build -v |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs |
| |
| clang: |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| # clang-10 is tested on Semaphore-CI https://nemequ.semaphoreci.com/projects/simde |
| - version: "11" |
| distro: ubuntu-22.04 |
| - version: "12" |
| distro: ubuntu-22.04 |
| - version: "12" |
| distro: ubuntu-22.04 |
| arch_flags: -ffast-math |
| - version: "13" |
| distro: ubuntu-22.04 |
| - version: "13" |
| distro: ubuntu-22.04 |
| arch_flags: -ffast-math |
| - version: "14" |
| distro: ubuntu-24.04 |
| - version: "14" |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math |
| - version: "14" |
| distro: ubuntu-24.04-arm |
| arch_flags: -march=armv8-a+fp+aes+sha2 |
| plain: true |
| # grep Features < /proc/cpuinfo | head -n 1 | awk '-F: ' '{print $2}' | sed 's/asimd //;s/evtstrm //;s/pmull //;s/sha1 //;s/crc32 //;s/atomics //;s/fphp //;s/asimd.. //g;s/cpuid //;s/asimd... //g;s/jscvt //;s/fcma //;s/lrcpc //;s/dcpop //;s/sm3 //;s/sha512 //;s/uscat //;s/ilrcpc //;s/pac. //g;s/dcpodp //;s/sveaes //;s/svebitperm //;s/svesha3 //;s/svesm4 //;s/flagm2 //;s/frint //;s/svei8mm //;s/svebf16 //' | tr ' ' '+' |
| - version: "14" |
| distro: ubuntu-24.04-arm |
| arch_flags: -ffast-math -march=armv8-a+fp+aes+sha2 |
| plain: true |
| - version: "15" |
| distro: ubuntu-24.04 |
| - version: "15" |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math |
| - version: "15" |
| distro: ubuntu-24.04-arm |
| - version: "15" |
| distro: ubuntu-24.04-arm |
| arch_flags: -ffast-math |
| - version: "16" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage |
| - version: "16" |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage |
| - version: "16" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage |
| - version: "16" |
| distro: ubuntu-24.04-arm |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage |
| - version: "17" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage |
| - version: "17" |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage |
| - version: "17" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage -O2 |
| - version: "17" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage |
| - version: "17" |
| distro: ubuntu-24.04-arm |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage |
| - version: "17" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage -O2 |
| - version: "18" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default |
| - version: "18" |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-nan-infinity-disabled |
| - version: "18" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -O2 |
| - version: "18" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default |
| - version: "18" |
| distro: ubuntu-24.04-arm |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-nan-infinity-disabled |
| - version: "18" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -O2 |
| - version: "19" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default |
| - version: "19" |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-nan-infinity-disabled |
| - version: "19" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -O2 |
| - version: "19" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default |
| - version: "19" |
| distro: ubuntu-24.04-arm |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-nan-infinity-disabled |
| - version: "19" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -O2 |
| - version: "20" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default |
| - version: "20" |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-nan-infinity-disabled |
| - version: "20" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -O2 |
| - version: "20" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default |
| - version: "20" |
| distro: ubuntu-24.04-arm |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-nan-infinity-disabled |
| - version: "20" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -O2 |
| - version: "21" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword |
| - version: "21" |
| distro: ubuntu-24.04 |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -Wno-nan-infinity-disabled |
| - version: "21" |
| distro: ubuntu-24.04 |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -O2 |
| - version: "21" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword |
| - version: "21" |
| distro: ubuntu-24.04-arm |
| arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -Wno-nan-infinity-disabled |
| - version: "21" |
| distro: ubuntu-24.04-arm |
| arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -O2 |
| # - version: "22" |
| # distro: ubuntu-24.04 |
| # arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword |
| # - version: "22" |
| # distro: ubuntu-24.04 |
| # arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -Wno-nan-infinity-disabled |
| # - version: "22" |
| # distro: ubuntu-24.04 |
| # arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -O2 |
| # - version: "22" |
| # distro: ubuntu-24.04-arm |
| # arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword |
| # - version: "22" |
| # distro: ubuntu-24.04-arm |
| # plain: true |
| # arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword |
| # - version: "22" |
| # distro: ubuntu-24.04-arm |
| # arch_flags: -ffast-math -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -Wno-nan-infinity-disabled |
| # - version: "22" |
| # distro: ubuntu-24.04-arm |
| # arch_flags: -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword -O2 |
| - version: "21" # armv7 |
| distro: ubuntu-24.04-arm |
| arch_flags: --target=arm-linux-gnueabihf -march=armv7-a -mfpu=neon -isystem=/usr/arm-linux-gnueabihf/include -Wno-unsafe-buffer-usage -Wno-switch-default -Wno-c++-keyword |
| pkg: libstdc++-16-dev-armhf-cross |
| plain: true |
| runs-on: ${{ matrix.distro }} |
| env: |
| CFLAGS: ${{ matrix.arch_flags }} ${{ case( |
| matrix.plain == true, '-Wall -Weverything -Werror', |
| '-march=native -Wall -Weverything -Werror') }} -fno-lax-vector-conversions |
| CXXFLAGS: ${{ matrix.arch_flags }} ${{ case( |
| matrix.plain == true, '-Wall -Weverything -Werror', |
| '-march=native -Wall -Weverything -Werror') }} -fno-lax-vector-conversions |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| - id: cpu |
| name: CPU Information |
| run: | |
| cat /proc/cpuinfo |
| - name: enable armhf |
| if: ${{ matrix.pkg == 'libstdc++-16-dev-armhf-cross' }} |
| run: sudo dpkg --add-architecture armhf && sudo apt-get update && sudo apt-get install -y libstdc++6:armhf |
| - name: Install PPAs for Ubuntu 22.04 |
| if: ${{ matrix.distro == 'ubuntu-22.04' }} |
| run: | |
| sudo add-apt-repository ppa:ubuntu-toolchain-r/test |
| sudo add-apt-repository ppa:savoury1/build-tools |
| sudo add-apt-repository ppa:savoury1/display |
| sudo add-apt-repository ppa:savoury1/llvm-defaults-16 |
| - name: Install newer clang |
| if: ${{ matrix.version == '21' || matrix.version == '22' }} |
| run: | |
| wget https://apt.llvm.org/llvm.sh |
| chmod +x llvm.sh |
| sudo ./llvm.sh ${{ matrix.version }} |
| - name: Install APT Dependencies |
| run: | |
| sudo add-apt-repository ppa:misterc/gcc-snapshot-latest-lts |
| sudo add-apt-repository ppa:stephanosio/ccache |
| sudo add-apt-repository ppa:canonical-x/x-staging |
| sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa |
| sudo apt-get -y --no-install-recommends install ninja-build pipx \ |
| clang-${{ matrix.version }} ccache ${{ matrix.pkg }} |
| pipx install meson==1.3.2 |
| sudo rm /usr/bin/gcc /usr/bin/g++ /usr/bin/cc /usr/bin/c++ |
| sudo ln -s "$(command -v clang-${{ matrix.version }})" /usr/bin/cc |
| sudo ln -s "$(command -v clang-${{ matrix.version }})" /usr/bin/c++ |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }}-${{ matrix.version }}-${{ matrix.distro }}-${{ matrix.arch_flags }}${{ matrix.plain }} |
| verbose: 2 |
| - name: add ccache to the build path |
| run: | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |
| - name: Configure |
| run: meson setup build || (cat build/meson-logs/meson-log.txt ; false) |
| - name: Build |
| run: meson compile -C build --verbose |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs |
| |
| macos: |
| strategy: |
| fail-fast: false |
| matrix: |
| # https://www.jessesquires.com/blog/2020/01/06/selecting-an-xcode-version-on-github-ci/ |
| # https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md#xcode |
| # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md#xcode |
| # https://trac.macports.org/wiki/XcodeVersionInfo |
| include: |
| - xcode: "15.2" |
| os: macos-14 # arm64 |
| arch_flags: -march=native -Wno-poison-system-directories |
| # "-Wno-poison-system-directories": due to meson test |
| # "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled |
| - xcode: "15.3" |
| os: macos-14 # arm64 |
| arch_flags: -march=native -Wno-poison-system-directories |
| # "-Wno-poison-system-directories": due to meson test |
| # "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled |
| - xcode: "15.4" # clang 15? |
| os: macos-14 # arm64 |
| arch_flags: -march=native -Wno-poison-system-directories |
| # "-Wno-poison-system-directories": due to meson test |
| # "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled |
| - xcode: "16.0" # clang 16? |
| os: macos-15 # arm64 |
| arch_flags: -march=native -Wno-poison-system-directories |
| # "-Wno-poison-system-directories": due to meson test |
| # "-march=native": without, or with -mcpu=apple-m1 then unavailable __ARM_FEATURE_s get enabled |
| - xcode: "26.2" # clang 17? |
| os: macos-26 # arm64 |
| arch_flags: -Wno-poison-system-directories -Wno-switch-default |
| # "-Wno-poison-system-directories": due to meson test |
| runs-on: ${{ matrix.os }} |
| env: |
| DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app |
| CFLAGS: ${{ matrix.arch_flags }} -Wall -Weverything -Werror -Wno-complex-component-init |
| CXXFLAGS: ${{ matrix.arch_flags }} -Wall -Weverything -Werror -Wno-complex-component-init |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| submodules: recursive |
| # - name: System Information |
| # run: system_profiler |
| - name: Compiler version |
| run: cc --version |
| - name: ccache |
| uses: hendrikmuhs/ccache-action@v1.2 |
| with: |
| key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.xcode }} |
| verbose: 2 |
| - name: Python install bug workaround # https://github.com/actions/setup-python/issues/577 |
| run: | |
| find /usr/local/bin -type l -exec sh -c 'readlink -f "$1" \ |
| | grep -q ^/Library/Frameworks/Python.framework/Versions/' _ {} \; -exec rm -v {} \; |
| - name: Install Homebrew Dependencies |
| run: brew install meson ninja |
| - name: Configure |
| run: meson setup build || (cat build/meson-logs/meson-log.txt ; false) |
| - name: Build |
| run: ninja -C build -v |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) |
| |
| icc: |
| runs-on: ubuntu-24.04 |
| env: |
| CC: /home/runner/.local/bin/icx |
| CXX: /home/runner/.local/bin/icpx |
| CFLAGS: -Wall -Werror -march=native -fp-model precise |
| CXXFLAGS: -Wall -Werror -march=native -fp-model precise |
| steps: |
| - uses: actions/checkout@v6 |
| - name: CPU Information |
| run: cat /proc/cpuinfo |
| - name: Install APT Dependencies |
| run: sudo apt-get install -y --no-install-recommends ninja-build pipx && pipx install meson==1.3.2 |
| - name: Install ICC |
| run: | |
| # download the key to system keyring |
| wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ |
| | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null |
| # add signed entry to apt sources and configure the APT client to use Intel repository: |
| echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list |
| sudo apt-get update |
| sudo apt-get install -y --no-install-recommends intel-oneapi-compiler-dpcpp-cpp |
| mkdir -p ~/.local/bin/ || true |
| for exe in icx icpx; do |
| # shellcheck disable=SC2016 |
| printf '#!/bin/bash\nARGS="$@"\nsource /opt/intel/oneapi/compiler/latest/env/vars.sh >/dev/null\n%s ${ARGS}\n' "${exe}" > ~/.local/bin/"${exe}" |
| chmod 0755 ~/.local/bin/"${exe}"; |
| done |
| - name: Configure |
| run: meson setup build |
| - name: Build |
| run: ninja -C build -v |
| - name: Test |
| run: | |
| # shellcheck disable=SC2046 |
| meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul) |