From 7724a89d79cb3cce63ec512617d2f16cf2ada542 Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Wed, 17 Jan 2024 15:38:40 -0600 Subject: [PATCH] CMake: fix compilation with bundled boost and modern clang std::unary_function has been removed in C++17. Fix compilation with clang and other compiles that enforce strict standard compliance by exporting BOOST_NO_CXX98_FUNCTION_BASE, https://github.com/boostorg/config/pull/430 --- bundled/setup_bundled.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bundled/setup_bundled.cmake b/bundled/setup_bundled.cmake index d6594379c5..e33eea70bd 100644 --- a/bundled/setup_bundled.cmake +++ b/bundled/setup_bundled.cmake @@ -57,6 +57,16 @@ macro(feature_boost_configure_bundled) list(APPEND DEAL_II_DEFINITIONS "BOOST_ALL_NO_LIB") endif() + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + # + # std::unary_function has been removed in C++17. Fix compilation with + # clang (that enforces strict standard compliance) by exporting + # BOOST_NO_CXX98_FUNCTION_BASE, + # https://github.com/boostorg/config/pull/430 + # + list(APPEND DEAL_II_DEFINITIONS "BOOST_NO_CXX98_FUNCTION_BASE") + endif() + enable_if_supported(DEAL_II_WARNING_FLAGS "-Wno-unused-local-typedefs") list(APPEND DEAL_II_BUNDLED_INCLUDE_DIRS ${BOOST_FOLDER}/include) -- 2.39.5