From bc88e89caf9abb158e9f71cb6f9afbdae1997e07 Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Tue, 28 May 2024 08:27:53 +0200 Subject: [PATCH] github-actions: replace autotools by cmake --- .github/workflows/autotools.yml | 19 ----------- .github/workflows/compile.yml | 59 +++++++++++++++++++++++++++++++++ CMakeLists.txt | 7 ++++ 3 files changed, 66 insertions(+), 19 deletions(-) delete mode 100644 .github/workflows/autotools.yml create mode 100644 .github/workflows/compile.yml diff --git a/.github/workflows/autotools.yml b/.github/workflows/autotools.yml deleted file mode 100644 index 5311030..0000000 --- a/.github/workflows/autotools.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: C with autotools - -on: [push, pull_request] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - name: autogen - run: ./autogen.sh - - name: configure - run: ./configure - - name: make - run: make - - name: make distcheck - run: make distcheck diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml new file mode 100644 index 0000000..8235c70 --- /dev/null +++ b/.github/workflows/compile.yml @@ -0,0 +1,59 @@ +name: native and cross + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + release: + - "ubuntu:20.04" + - "ubuntu:22.04" + - "ubuntu:24.04" + - "ubuntu:rolling" + - "debian:oldstable-slim" + - "debian:stable-slim" + - "debian:testing-slim" + - "debian:unstable-slim" + + steps: + - uses: actions/checkout@v4 + + - name: Prepare ${{ matrix.release }} container + run: | + podman version + podman run --name stable -di --userns=keep-id:uid=1000,gid=1000 -v "$PWD":/home -w /home ${{ matrix.release }} bash + podman exec -i stable uname -a + podman exec -i stable id + podman exec -i -u root stable apt update + podman exec -e DEBIAN_FRONTEND='noninteractive' -i -u root stable apt install -o APT::Install-Suggests=false -qy \ + clang \ + cmake \ + gcc \ + make + + - name: Configure & Build with gcc + env: + cc: gcc + run: | + podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=${cc} -DENABLE_WERROR=ON -B build-${cc} + podman exec -i stable cmake --build build-${cc} + + - name: Configure & Build with clang + env: + cc: clang + run: | + podman exec -i stable cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=${cc} -DENABLE_WERROR=ON -B build-${cc} + podman exec -i stable cmake --build build-${cc} + + - name: Show logs + if: ${{ failure() }} + run: | + for log in build-*/CMakeFiles/{CMakeOutput.log,CMakeConfigureLog.yaml}; do \ + if [ -e ${log} ]; then \ + echo "---------------- ${log} ----------------"; \ + cat ${log}; \ + fi; \ + done diff --git a/CMakeLists.txt b/CMakeLists.txt index 19288a6..c7991ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,13 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() +# Add an option to enable treating warnings as errors +option(ENABLE_WERROR "Treat all compiler warnings as errors" OFF) + +if(ENABLE_WERROR) + add_compile_options(-Werror) +endif() + add_definitions(-D_GNU_SOURCE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-parentheses")