]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
build: Require C++17 compiler and CMake 3.15
authorJoel Rosdahl <joel@rosdahl.net>
Mon, 16 May 2022 19:55:41 +0000 (21:55 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Mon, 23 May 2022 17:15:58 +0000 (19:15 +0200)
A C++17-compatible compiler is now readily available on all systems we
target primarily, so it's time to bump to C++17.

Also, we want to use features in CMake 3.15 (see #1069), so bump that
too.

14 files changed:
.github/workflows/build.yaml
CMakeLists.txt
cmake/CodeAnalysis.cmake
doc/INSTALL.md
dockerfiles/alpine-3.11/Dockerfile [moved from dockerfiles/alpine-3.14/Dockerfile with 95% similarity]
dockerfiles/alpine-3.15/Dockerfile [moved from dockerfiles/alpine-3.8/Dockerfile with 95% similarity]
dockerfiles/centos-7/Dockerfile
dockerfiles/centos-8/Dockerfile [deleted file]
dockerfiles/debian-10/Dockerfile [deleted file]
dockerfiles/fedora-36/Dockerfile [moved from dockerfiles/fedora-32/Dockerfile with 95% similarity]
dockerfiles/ubuntu-18.04/Dockerfile
misc/test-all-systems
src/.clang-tidy
src/UmaskScope.hpp

index f2e30f94f59591fe6cb6aa3920a489cf86257dbe..db8283524defe0200a7340f3e01c69a0df1bdc41 100644 (file)
@@ -22,10 +22,6 @@ jobs:
       fail-fast: false
       matrix:
         config:
-          - os: ubuntu-18.04
-            compiler: gcc
-            version: "6"
-
           - os: ubuntu-18.04
             compiler: gcc
             version: "7"
index 4cb1aa532bccda9b10f0ce6b207ecee4237c51c6..aef9de4df291e3f7161df8bde004e733f5797fd4 100644 (file)
@@ -1,8 +1,6 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.15)
 
-if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.15)
-  cmake_policy(SET CMP0091 NEW) # Needed by CMAKE_MSVC_RUNTIME_LIBRARY
-endif()
+cmake_policy(SET CMP0091 NEW) # Needed by CMAKE_MSVC_RUNTIME_LIBRARY
 
 project(ccache LANGUAGES C CXX ASM ASM_MASM)
 if(MSVC)
@@ -12,11 +10,7 @@ else()
 endif()
 set(CMAKE_PROJECT_DESCRIPTION "a fast C/C++ compiler cache")
 
-if(MSVC)
-  set(CMAKE_CXX_STANDARD 17) # Need support for std::filesystem
-else()
-  set(CMAKE_CXX_STANDARD 14)
-endif()
+set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED YES)
 set(CMAKE_CXX_EXTENSIONS NO)
 
index 0d3cf024a6fb3465d5f703a18f1acf093daf84da..7bba40d2353c2446b85c8ec7ccef217a765e1e18 100644 (file)
@@ -10,7 +10,7 @@ if(ENABLE_CPPCHECK)
         -q
         --enable=all
         --force
-        --std=c++14
+        --std=c++17
         -I ${CMAKE_SOURCE_DIR}
         --template="cppcheck: warning: {id}:{file}:{line}: {message}"
         -i src/third_party)
index e028e4d25d0ee357ad0db376e2b7f364d7d92f6b..5ce8c2afe3f0cf59e32d7cd92b4a3b85c3f4897a 100644 (file)
@@ -6,8 +6,8 @@ Prerequisites
 
 To build ccache you need:
 
-- CMake 3.10 or newer.
-- A C++14 compiler. See [Supported platforms, compilers and
+- CMake 3.15 or newer.
+- A C++17 compiler. See [Supported platforms, compilers and
   languages](https://ccache.dev/platform-compiler-language-support.html) for
   details.
 - A C99 compiler.
similarity index 95%
rename from dockerfiles/alpine-3.14/Dockerfile
rename to dockerfiles/alpine-3.11/Dockerfile
index 7b795124dbcf756c9e6532ba1466e5b07801df8b..7bc1d29f337796f64eaf40bbc6f2e5e8ae4c638b 100644 (file)
@@ -1,4 +1,4 @@
-FROM alpine:3.14
+FROM alpine:3.11
 
 RUN apk add --no-cache \
         bash \
similarity index 95%
rename from dockerfiles/alpine-3.8/Dockerfile
rename to dockerfiles/alpine-3.15/Dockerfile
index 2aab3547f7a4256a33413f0360d21a9f291a6071..b97b38c622a532698b5e5fb25f5bcb81d691f35b 100644 (file)
@@ -1,4 +1,4 @@
-FROM alpine:3.8
+FROM alpine:3.15
 
 RUN apk add --no-cache \
         bash \
index d5c4e4897cf05811f89b2f2e04529a884c183f06..29c3cd8bef01246d84e18ef533308ebb271dc520 100644 (file)
@@ -3,13 +3,12 @@ FROM centos:7
 RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
  && yum install -y centos-release-scl \
  && yum install -y \
-        asciidoctor \
         autoconf \
         bash \
         ccache \
         clang \
         cmake3 \
-        devtoolset-8 \
+        devtoolset-11 \
         elfutils \
         gcc \
         gcc-c++ \
@@ -21,4 +20,4 @@ RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.n
  && cp /usr/bin/cmake3 /usr/bin/cmake \
  && cp /usr/bin/ctest3 /usr/bin/ctest
 
-ENTRYPOINT ["scl", "enable", "devtoolset-8", "--"]
+ENTRYPOINT ["scl", "enable", "devtoolset-11", "--"]
diff --git a/dockerfiles/centos-8/Dockerfile b/dockerfiles/centos-8/Dockerfile
deleted file mode 100644 (file)
index 28e65df..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-FROM centos:8
-
-# also run update due to https://bugs.centos.org/view.php?id=18212
-RUN dnf install -y epel-release \
- && dnf update -y \
- && dnf install -y \
-        autoconf \
-        bash \
-        ccache \
-        clang \
-        cmake \
-        diffutils \
-        elfutils \
-        gcc \
-        gcc-c++ \
-        hiredis-devel \
-        libzstd-devel \
-        make \
-        python3 \
-        redis \
- && dnf clean all
diff --git a/dockerfiles/debian-10/Dockerfile b/dockerfiles/debian-10/Dockerfile
deleted file mode 100644 (file)
index 54bd443..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-FROM debian:10
-
-RUN apt-get update \
- && apt-get install -y --no-install-recommends \
-        bash \
-        build-essential \
-        ccache \
-        clang \
-        cmake \
-        elfutils \
-        gcc-multilib \
-        libhiredis-dev \
-        libzstd-dev \
-        python3 \
-        redis-server \
-        redis-tools \
- && rm -rf /var/lib/apt/lists/*
-
-# Redirect all compilers to ccache.
-RUN for t in gcc g++ cc c++ clang clang++; do ln -vs /usr/bin/ccache /usr/local/bin/$t; done
similarity index 95%
rename from dockerfiles/fedora-32/Dockerfile
rename to dockerfiles/fedora-36/Dockerfile
index c4431a7dcca284f06afc1154e86f2311c9ee2d59..5817fca7e5d8fecdb6d7a2f2fd5658b0680870a4 100644 (file)
@@ -1,4 +1,4 @@
-FROM fedora:32
+FROM fedora:36
 
 RUN dnf install -y \
         autoconf \
index 409f6dc3c2c6caa5aa33c9ee532781001ad92283..02df590d5eed763d24a39793ab0b1f746924b805 100644 (file)
@@ -7,16 +7,21 @@ RUN apt-get update \
         build-essential \
         ccache \
         clang \
-        cmake \
         docbook-xml \
         docbook-xsl \
         elfutils \
         gcc-multilib \
+        gpg \
         libhiredis-dev \
         libzstd-dev \
         python3 \
         redis-server \
         redis-tools \
+        wget \
+ && wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | gpg --dearmor - >/usr/share/keyrings/kitware-archive-keyring.gpg \
+ && echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' >/etc/apt/sources.list.d/kitware.list \
+ && apt-get update \
+ && apt-get install -y --no-install-recommends cmake \
  && rm -rf /var/lib/apt/lists/*
 
 # Redirect all compilers to ccache.
index 3ab7d855ecb31d8fa1ea41114453d85f20735065..e55123460dc1a8658e6a47016c650d7336dd7744 100755 (executable)
@@ -20,9 +20,6 @@ build() {
 
 #     NAME         CC    CXX     TEST_CC CMAKE_PARAMS
 
-build debian-10    gcc   g++     gcc
-build debian-10    clang clang++ clang
-
 build debian-11    gcc   g++     gcc
 build debian-11    clang clang++ clang
 
@@ -32,17 +29,14 @@ build ubuntu-18.04 clang clang++ clang
 build ubuntu-20.04 gcc   g++     gcc
 build ubuntu-20.04 clang clang++ clang
 
-build centos-7     gcc   g++     gcc     -DWARNINGS_AS_ERRORS=false -DREDIS_STORAGE_BACKEND=OFF
-build centos-7     gcc   g++     clang   -DWARNINGS_AS_ERRORS=false -DREDIS_STORAGE_BACKEND=OFF
-
-build centos-8     gcc   g++     gcc
-build centos-8     clang clang++ clang
+build centos-7     gcc   g++     gcc     -DHIREDIS_FROM_INTERNET=ON
+build centos-7     gcc   g++     clang   -DHIREDIS_FROM_INTERNET=ON
 
-build fedora-32    gcc   g++     gcc
-build fedora-32    clang clang++ clang
+build fedora-36    gcc   g++     gcc
+build fedora-36    clang clang++ clang
 
-build alpine-3.8   gcc   g++     gcc
-build alpine-3.8   gcc   g++     clang
+build alpine-3.11   gcc   g++     gcc
+build alpine-3.11   gcc   g++     clang
 
-build alpine-3.14  gcc   g++     gcc
-build alpine-3.14  clang clang++ clang
+build alpine-3.15  gcc   g++     gcc
+build alpine-3.15  clang clang++ clang
index 3781fd60182622f092ae2eeb83ef7a89afaaedcb..803b4f5632a34d374c795b8bb49edc1b6968a833 100644 (file)
@@ -17,13 +17,16 @@ Checks:          '-*,
                   -readability-qualified-auto,
                   -readability-redundant-declaration,
                   performance-*,
+                  -performance-no-automatic-move,
                   -performance-unnecessary-value-param,
                   modernize-*,
                   -modernize-avoid-c-arrays,
+                  -modernize-concat-nested-namespaces,
                   -modernize-pass-by-value,
                   -modernize-return-braced-init-list,
                   -modernize-use-auto,
                   -modernize-use-default-member-init,
+                  -modernize-use-nodiscard,
                   -modernize-use-trailing-return-type,
                   cppcoreguidelines-*,
                   -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
index 2a2f85a74425591a339d5c4412663dc4bd8b9a5b..67338e5a758afa79171a9d37c6a9b80f0c549da7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2021 Joel Rosdahl and other contributors
+// Copyright (C) 2020-2022 Joel Rosdahl and other contributors
 //
 // See doc/AUTHORS.adoc for a complete list of contributors.
 //
@@ -50,7 +50,15 @@ inline UmaskScope::~UmaskScope()
 {
 #ifndef _WIN32
   if (m_saved_umask) {
+    // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80635
+#  if defined(__GNUC__) && !defined(__clang__)
+#    pragma GCC diagnostic push
+#    pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#  endif
     umask(*m_saved_umask);
+#  if defined(__GNUC__) && !defined(__clang__)
+#    pragma GCC diagnostic pop
+#  endif
   }
 #endif
 }