mk: remove compiler header generator, use a shipped header #48
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: C/C++ CI | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
jobs: | |
build-ubuntu-24_04: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Add apt.llvm.org | |
run: | | |
echo 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble main' | sudo tee /etc/apt/sources.list.d/apt.llvm.org.list | |
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc | |
- name: Upgrade packages | |
run: | | |
sudo apt-get update | |
sudo apt-get upgrade -y | |
- name: Upgrade Clang | |
run: | | |
sudo apt-get install clang-format clang-tidy clang-tools clang libc++-dev libc++abi-dev libclang-dev libomp-dev lld llvm-dev llvm-runtime llvm | |
- name: Install dependencies | |
run: | | |
sudo apt-get install libcjson-dev | |
- name: Describe host | |
run: | | |
uname -a | |
gcc --version | |
clang --version | |
- uses: actions/checkout@v4 | |
- name: Introspect compilers | |
run: | | |
set +e | |
{ compgen -c clang; compgen -c gcc; } | grep -E '^(clang|gcc)(-[1-9][0-9]*)?$' | sort -V -u -r > compilers | |
grep -Fxe clang -e gcc compilers > default-compilers | |
cat default-compilers | xargs -I§ bash -c 'realpath "$(command -v §)" 2>/dev/null' | paste - default-compilers | grep -Ev '^[[:blank:]]*$' > default-compilers2 | |
grep -Fvxf default-compilers compilers > versioned-compilers | |
cat versioned-compilers | xargs -I§ bash -c 'realpath "$(command -v §)" 2>/dev/null' | paste - versioned-compilers | grep -Ev '^[[:blank:]]*$' > versioned-compilers2 | |
sed 's/-[1-9][0-9]*$//' versioned-compilers2 | grep -Fxvf- default-compilers2 > compilers2 | |
cat versioned-compilers2 >> compilers2 | |
cut -f2 compilers2 > compilers | |
rm -f compilers2 default-compilers2 versioned-compilers2 | |
cat compilers | |
- name: GCC debug builds | |
run: | | |
for _cc in $(grep '^gcc' compilers); do | |
[[ -z "$_cxx" ]] || printf '\n\n========================================\n' | |
_cxx="${_cc/#gcc/g++}" | |
mkdir -p "build/dbg_$_cc" | |
make -j$(nproc) -C src O="../build/dbg_$_cc" debug=1 CC="$_cc" CXX="$_cxx" | |
done | |
- name: Clang debug builds | |
run: | | |
for _cc in $(grep '^clang' compilers); do | |
[[ -z "$_cxx" ]] || printf '\n\n========================================\n' | |
_cxx="${_cc/#clang/clang++}" | |
mkdir -p "build/dbg_$_cc" | |
make -j$(nproc) -C src O="../build/dbg_$_cc" debug=1 CC="$_cc" CXX="$_cxx" | |
done | |
- name: GCC release builds | |
run: | | |
for _cc in $(grep '^gcc' compilers); do | |
[[ -z "$_cxx" ]] || printf '\n\n========================================\n' | |
_cxx="${_cc/#gcc/g++}" | |
mkdir -p "build/rel_$_cc" | |
make -j$(nproc) -C src O="../build/rel_$_cc" CC="$_cc" CXX="$_cxx" | |
done | |
- name: Clang release builds | |
run: | | |
for _cc in $(grep '^clang' compilers); do | |
[[ -z "$_cxx" ]] || printf '\n\n========================================\n' | |
_cxx="${_cc/#clang/clang++}" | |
mkdir -p "build/rel_$_cc" | |
make -j$(nproc) -C src O="../build/rel_$_cc" CC="$_cc" CXX="$_cxx" | |
done |