diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f509f464f621c5fe2fcf10f5496e05f823ff58e..fba2a28df2e7df36332c526dc23d569acd371e97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,9 @@ set (CMAKE_CXX_EXTENSIONS OFF) # FYI: optimizer flags: -O2 would not trade speed for size, neither O2/3 use fast-math # debug: O0, relwithdebinfo: 02, release: O3, minsizerel: Os (all defaults) set (CMAKE_CXX_FLAGS "-Wall -pedantic -Wextra -Wno-ignored-qualifiers") +if (CORSIKA_SCL_CXX) + add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) +endif() set (DEFAULT_BUILD_TYPE "Release") # clang produces a lot of unecessary warnings without this: @@ -126,6 +129,7 @@ endif (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) #+++++++++++++++++++++++++++++ # Setup external dependencies. # +### include (conan) # self-provided in 'cmake' directory # # download and build all dependencies diff --git a/cmake/CorsikaDefines.cmake b/cmake/CorsikaDefines.cmake index 30b8fe33cf83982d8769696af86092f371ad3747..2019ce2f906f9025e2181a0c9eb624e99f9ca44e 100644 --- a/cmake/CorsikaDefines.cmake +++ b/cmake/CorsikaDefines.cmake @@ -14,10 +14,15 @@ endif () # if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") set (CORSIKA_OS_WINDOWS TRUE) - set (CORSIKA_OS "Windows") + set (CORSIKA_OS "Windows") elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set (CORSIKA_OS_LINUX TRUE) - set (CORSIKA_OS "Linux") + set (CORSIKA_OS "Linux") + # check for RedHat/CentOS compiler from the software collections (scl) + string (FIND ${CMAKE_CXX_COMPILER} "/opt/rh/devtoolset-" index) + if (${index} EQUAL 0) + set (CORSIKA_SCL_CXX TRUE) + endif () elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set (CORSIKA_OS_MAC TRUE) set (CORSIKA_OS "Mac") diff --git a/corsika/detail/framework/core/Logging.inl b/corsika/detail/framework/core/Logging.inl index e99e788b8de6a6eaf2e3965fb10c51049e720058..9abaa163683b4b1a70ce6a22d3cb3070e67d7516 100644 --- a/corsika/detail/framework/core/Logging.inl +++ b/corsika/detail/framework/core/Logging.inl @@ -47,7 +47,13 @@ namespace corsika { auto logger = spdlog::stdout_color_mt(name); // set the default C8 format +#if (!defined(_GLIBCXX_USE_CXX11_ABI) || _GLIBCXX_USE_CXX11_ABI == 1) logger->set_pattern(logging::default_pattern); +#else + // special case: gcc from the software collections devtoolset + std::string dp(default_pattern); + logger->set_pattern(dp); +#endif // if defaultlog is True, we set this as the default spdlog logger. if (defaultlog) { spdlog::set_default_logger(logger); }