Skip to content

mk: remove compiler header generator, use a shipped header #48

mk: remove compiler header generator, use a shipped header

mk: remove compiler header generator, use a shipped header #48

Workflow file for this run

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