From 1ce48f2ac26ab183a681b1b27aae3d2ac9015d3e Mon Sep 17 00:00:00 2001 From: Julien Schueller Date: Thu, 26 Sep 2024 11:10:28 +0200 Subject: [PATCH] CMake: Disable -fassume-unique-vtables --- CMakeLists.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 43eeac514..d9243a4cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,6 +148,21 @@ if(YACMA_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8") unset(_PAGMO_GCC_SUPPORTS_NO_OVERRIDE) endif() +if (YACMA_COMPILER_IS_CLANGXX MATCHES Clang AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17) + # xref https://releases.llvm.org/17.0.1/tools/clang/docs/ReleaseNotes.html#c-language-changes + # tldr; The new -fassume-unique-vtables optimization breaks serialization + include(CheckCXXCompilerFlag) + set(CMAKE_REQUIRED_QUIET TRUE) + check_cxx_compiler_flag("-fno-assume-unique-vtables" _PAGMO_CLANG_SUPPORTS_UNIQUE_VTABLES) + unset(CMAKE_REQUIRED_QUIET) + if (_PAGMO_CLANG_SUPPORTS_UNIQUE_VTABLES) + message(STATUS "The '-fno-assume-unique-vtables' flag is supported, enabling it.") + list(APPEND PAGMO_CXX_FLAGS_DEBUG "-fno-assume-unique-vtables") + list(APPEND PAGMO_CXX_FLAGS_RELEASE "-fno-assume-unique-vtables") + endif () + unset (_PAGMO_CLANG_SUPPORTS_UNIQUE_VTABLES) +endif () + # TBB. Try to find it first in config mode (supported # since version 2021 after the oneTBB rename), and, if this # fails, fall back to our own FindTBB.cmake. This is of course