name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install dependencies run: | apt-get update -qq # Clang needs libc++ for on Ubuntu 22.04 (libstdc++ is pre-GCC-13) if apt-cache show clang-18 >/dev/null 2>&1; then apt-get install -y -qq clang-18 libc++-18-dev libc++abi-18-dev ninja-build curl elif apt-cache show clang-17 >/dev/null 2>&1; then apt-get install -y -qq clang-17 libc++-17-dev libc++abi-17-dev ninja-build curl elif apt-cache show clang-16 >/dev/null 2>&1; then apt-get install -y -qq clang-16 libc++-16-dev libc++abi-16-dev ninja-build curl elif apt-cache show clang-15 >/dev/null 2>&1; then apt-get install -y -qq clang-15 libc++-15-dev libc++abi-15-dev ninja-build curl else # Ubuntu 20.04: install from LLVM repo apt-get install -y -qq wget lsb-release wget -qO- https://apt.llvm.org/llvm.sh | bash -s -- 18 apt-get install -y -qq libc++-18-dev libc++abi-18-dev ninja-build curl fi - name: Install CMake 3.28 run: | curl -sL https://github.com/Kitware/CMake/releases/download/v3.28.6/cmake-3.28.6-linux-x86_64.tar.gz | tar xz -C /usr/local --strip-components=1 cmake --version - name: Build kappa run: | CC=$(find /usr/bin -maxdepth 1 \( -name 'clang-1[5-9]' -o -name 'clang-2[0-9]' \) 2>/dev/null | head -1) if [ -z "$CC" ]; then CC=/usr/bin/clang-18; fi CXX=$(echo "$CC" | sed 's/clang-/clang++-/') echo "CC=$CC CXX=$CXX" cmake -B build -G Ninja \ -DCMAKE_C_COMPILER="$CC" \ -DCMAKE_CXX_COMPILER="$CXX" \ -DCMAKE_CXX_FLAGS="-stdlib=libc++" cmake --build build - name: DSL and CLI tests run: ./test.sh - name: Init-switching tests run: ./test-init-switch.sh - name: Comprehensive tests run: ./test-full.sh