1048 lines
40 KiB
YAML
Vendored
1048 lines
40 KiB
YAML
Vendored
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==0.55.1
|
|
- 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==0.55.1
|
|
- 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==0.55.1
|
|
- 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==0.55.1
|
|
- 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==0.55.1
|
|
- 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==0.55.1
|
|
- 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: 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
|
|
runs-on: ${{ matrix.distro }}
|
|
env:
|
|
CFLAGS: ${{ matrix.arch_flags }} -march=native -Wall -Wextra -Werror
|
|
CXXFLAGS: ${{ matrix.arch_flags }} -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: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 gcovr pipx ninja-build \
|
|
gcc-${{ matrix.version }} g++-${{ matrix.version }} ccache
|
|
sudo apt-get -y purge g++ gcc
|
|
pipx install meson==0.55.1
|
|
- 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/gcc-${{ matrix.version }} /usr/bin/gcc
|
|
sudo ln -s /usr/bin/g++-${{ matrix.version }} /usr/bin/g++
|
|
sudo ln -s /usr/bin/gcov-${{ matrix.version }} /usr/bin/gcov
|
|
- name: Configure
|
|
run: meson setup build
|
|
- name: Build
|
|
run: meson compile -C build --verbose
|
|
- name: Test
|
|
run: |
|
|
# shellcheck disable=SC2046
|
|
meson test -C build --print-errorlogs $(meson test -C build --list | grep -v emul)
|
|
|
|
gcc-qemu:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- version: 11
|
|
cross: aarch64
|
|
arch_gnu: aarch64
|
|
arch_deb: arm64
|
|
distro: ubuntu-22.04
|
|
- version: 14
|
|
cross: armel
|
|
arch_gnu_abi: eabi
|
|
arch_deb: armel
|
|
arch_gnu: arm
|
|
distro: ubuntu-24.04
|
|
- version: 15
|
|
cross: armv7
|
|
arch_gnu: arm
|
|
arch_gnu_abi: eabihf
|
|
arch_deb: armhf
|
|
distro: ubuntu-24.04
|
|
- version: 15
|
|
extra: -no-extras
|
|
cross: aarch64
|
|
arch_gnu: aarch64
|
|
arch_deb: arm64
|
|
distro: ubuntu-24.04
|
|
- version: 15
|
|
cross: aarch64
|
|
arch_gnu: aarch64
|
|
arch_deb: arm64
|
|
distro: ubuntu-24.04
|
|
- extra: -32bit
|
|
version: 15
|
|
cross: armv8
|
|
arch_gnu: arm
|
|
arch_gnu_abi: eabihf
|
|
arch_deb: armhf
|
|
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' }}
|
|
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==0.55.1
|
|
- 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 --print-errorlogs $(meson test -C build --list | grep -v emul)
|
|
|
|
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 --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 --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: 22
|
|
cross: armv7
|
|
arch_deb: armhf
|
|
arch_gnu_abi: eabihf
|
|
arch_gnu: arm
|
|
distro: ubuntu-24.04
|
|
- version: 22
|
|
cross: aarch64
|
|
arch_gnu: aarch64
|
|
arch_deb: arm64
|
|
distro: ubuntu-24.04
|
|
- version: 22
|
|
extra: -no-extras
|
|
cross: aarch64
|
|
arch_gnu: aarch64
|
|
arch_deb: arm64
|
|
distro: ubuntu-24.04
|
|
- version: 22
|
|
cross: armel
|
|
arch_gnu_abi: eabi
|
|
arch_deb: armel
|
|
arch_gnu: arm
|
|
distro: ubuntu-24.04
|
|
- version: 22
|
|
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: 22
|
|
cross: ppc64el
|
|
arch_deb: ppc64el
|
|
arch_gnu: powerpc64le
|
|
distro: ubuntu-24.04
|
|
- version: 22
|
|
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.extra }}-${{ 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 }}${{ matrix.extra }}-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 --print-errorlogs $(meson test -C build --list | grep -v emul)
|
|
|
|
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
|
|
# 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
|
|
- 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
|
|
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
|
|
runs-on: ${{ matrix.distro }}
|
|
env:
|
|
CFLAGS: -march=native ${{ matrix.arch_flags }} -Wall -Weverything -Werror -fno-lax-vector-conversions
|
|
CXXFLAGS: -march=native ${{ matrix.arch_flags }} -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: 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: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 gcovr ninja-build pipx \
|
|
clang-${{ matrix.version }} ccache
|
|
pipx install meson==0.55.1
|
|
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 }}
|
|
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 $(meson test -C build --list | grep -v emul)
|
|
|
|
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==0.64
|
|
- 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)
|