From 8b0c8fd52e5c404a2fef132495d0a6ffd3174323 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 9 Feb 2021 16:26:54 +0000 Subject: [PATCH] [Minor] Toolset: Use libc++ as libstdc++ is broken on old compilers --- cmake/Toolset.cmake | 6 ++++-- src/libserver/css/css_tokeniser.hxx | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cmake/Toolset.cmake b/cmake/Toolset.cmake index d54abb795..5a4faebf2 100644 --- a/cmake/Toolset.cmake +++ b/cmake/Toolset.cmake @@ -27,17 +27,19 @@ endif () if (COMPILER_GCC) # Require minimum version of gcc - set (GCC_MINIMUM_VERSION 4) + set (GCC_MINIMUM_VERSION 8) if (CMAKE_C_COMPILER_VERSION VERSION_LESS ${GCC_MINIMUM_VERSION} AND NOT CMAKE_VERSION VERSION_LESS 2.8.9) message (FATAL_ERROR "GCC version must be at least ${GCC_MINIMUM_VERSION}.") endif () elseif (COMPILER_CLANG) # Require minimum version of clang - set (CLANG_MINIMUM_VERSION 4) + set (CLANG_MINIMUM_VERSION 7) if (CMAKE_C_COMPILER_VERSION VERSION_LESS ${CLANG_MINIMUM_VERSION}) message (FATAL_ERROR "Clang version must be at least ${CLANG_MINIMUM_VERSION}.") endif () ADD_COMPILE_OPTIONS(-Wno-unused-command-line-argument) + # Use libc++ as libstdc++ is buggy in many cases + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") else () message (WARNING "You are using an unsupported compiler ${CMAKE_C_COMPILER_ID}. Compilation has only been tested with Clang 4+ and GCC 4+.") endif () diff --git a/src/libserver/css/css_tokeniser.hxx b/src/libserver/css/css_tokeniser.hxx index afe888a80..f1e9d05fc 100644 --- a/src/libserver/css/css_tokeniser.hxx +++ b/src/libserver/css/css_tokeniser.hxx @@ -102,6 +102,10 @@ struct css_parser_token { }; /* Ensure that parser tokens are simple enough */ +/* + * compiler must implement P0602 "variant and optional should propagate copy/move triviality" + * This is broken on gcc < 8! + */ static_assert(std::is_trivially_copyable_v); class css_tokeniser { -- 2.39.5