summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2023-12-16 17:12:52 +0100
committerJay Berkenbilt <ejb@ql.org>2023-12-16 17:38:00 +0100
commit762f232146f3edc234c898b48e9daacf72ee9577 (patch)
tree60a6f31f14b9b125561c5fa3c15a5171c9afeece
parentdb4ec7a9db7a0d87d459d7dc80f9a2afb4cbeadb (diff)
downloadqpdf-762f232146f3edc234c898b48e9daacf72ee9577.tar.zst
Add CI build for next C++ version
-rw-r--r--.github/workflows/main.yml8
-rw-r--r--CMakeLists.txt7
-rwxr-xr-xbuild-scripts/test-c++-next14
3 files changed, 28 insertions, 1 deletions
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