diff --git a/CMakeLists.txt b/CMakeLists.txt index 62b4829f..1cb77ffd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -141,14 +141,6 @@ elseif (ARCH_ARM32 OR ARCH_AARCH64) include (${CMAKE_MODULE_PATH}/cflags-arm.cmake) elseif (ARCH_PPC64EL) include (${CMAKE_MODULE_PATH}/cflags-ppc64le.cmake) - - # fix unit-internal seg fault for freebsd and gcc13 - if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD" AND CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -static-libgcc -static-libstdc++") - endif() - else () message(FATAL_ERROR "Unsupported platform") endif () diff --git a/cmake/cflags-ppc64le.cmake b/cmake/cflags-ppc64le.cmake index 2ea9f1ba..a5b8d93b 100644 --- a/cmake/cflags-ppc64le.cmake +++ b/cmake/cflags-ppc64le.cmake @@ -16,3 +16,12 @@ int main() { if (NOT HAVE_VSX) message(FATAL_ERROR "VSX support required for Power support") endif () + +# fix unit-internal seg fault for freebsd and gcc13 +if (FREEBSD AND CMAKE_COMPILER_IS_GNUCXX) + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "13") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -static-libgcc -static-libstdc++") + endif () +endif ()