From 762f232146f3edc234c898b48e9daacf72ee9577 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sat, 16 Dec 2023 11:12:52 -0500 Subject: [PATCH] Add CI build for next C++ version --- .github/workflows/main.yml | 8 ++++++++ CMakeLists.txt | 7 ++++++- build-scripts/test-c++-next | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100755 build-scripts/test-c++-next diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7646a3d2..44f6b142 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -147,3 +147,11 @@ jobs: - uses: actions/checkout@v3 - name: 'Unsigned Char Tests' run: build-scripts/test-unsigned-char + CxxNext: + runs-on: ubuntu-latest + # Build after Fuzzers to save concurrent runners + needs: Fuzzers + steps: + - uses: actions/checkout@v3 + - name: 'Build with Next C++ standard' + run: build-scripts/test-c++-next diff --git a/CMakeLists.txt b/CMakeLists.txt index aafca4f8..707db439 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -106,6 +106,7 @@ option(INSTALL_CMAKE_PACKAGE "Install cmake package files" ON) option(INSTALL_EXAMPLES "Install example files" ON) option(FUTURE "Include ABI-breaking changes CONSIDERED for the next major release" OFF) +option(CXX_NEXT "Build with next C++ standard version" OFF) # *** END OPTIONS *** @@ -166,7 +167,11 @@ Please build with cmake in a subdirectory, e.g. Please remove CMakeCache.txt and the CMakeFiles directories.") endif() -set(CMAKE_CXX_STANDARD 17) +if(CXX_NEXT) + set(CMAKE_CXX_STANDARD 20) +else() + set(CMAKE_CXX_STANDARD 17) +endif() set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_C_VISIBILITY_PRESET hidden) diff --git a/build-scripts/test-c++-next b/build-scripts/test-c++-next new file mode 100755 index 00000000..343a5a4d --- /dev/null +++ b/build-scripts/test-c++-next @@ -0,0 +1,14 @@ +#!/bin/bash +set -e +sudo apt-get update +sudo apt-get -y install \ + build-essential cmake \ + zlib1g-dev libjpeg-dev libgnutls28-dev libssl-dev +cmake -S . -B build \ + -DCXX_NEXT=ON \ + -DCI_MODE=1 -DBUILD_STATIC_LIBS=0 -DCMAKE_BUILD_TYPE=Release \ + -DREQUIRE_CRYPTO_OPENSSL=1 -DREQUIRE_CRYPTO_GNUTLS=1 \ + -DENABLE_QTC=1 +cmake --build build --verbose -j$(nproc) -- -k +cd build +ctest --verbose