diff --git a/cmake/ConfigRelease.cmake b/cmake/ConfigRelease.cmake index fa96c8191..60f86e5af 100644 --- a/cmake/ConfigRelease.cmake +++ b/cmake/ConfigRelease.cmake @@ -14,10 +14,6 @@ function(enable_ipo) endif () endfunction() -if (NOT APPLE) - set(STATIC_FLAG "-static ") -endif () - if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") # ref: https://stackoverflow.com/a/3801032 set(CMAKE_CXX_FLAGS_RELEASE "-O3 -flto -mtune=native") @@ -31,14 +27,21 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") SET(CMAKE_CXX_ARCHIVE_FINISH true) enable_ipo() elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + if (APPLE) + # For nix, ref: https://github.com/NixOS/nixpkgs/issues/166205 + set(STATIC_FLAG "-lc++abi") + else () + set(STATIC_FLAG "-static") + endif () + set(CMAKE_CXX_FLAGS_RELEASE "-O3") if (${CMAKE_CXX_COMPILER} MATCHES "-[0-9]+$") string(REGEX REPLACE [[.*clang\+\+(-[0-9]+)$]] [[lld\1]] LINKER ${CMAKE_CXX_COMPILER}) - set(STATIC_LINK_FLAG "${STATIC_FLAG}-fuse-ld=${LINKER}") + set(STATIC_LINK_FLAG "${STATIC_FLAG} -fuse-ld=${LINKER}") else () find_program(lld_EXECUTABLE lld) if (lld_EXECUTABLE) - set(STATIC_LINK_FLAG "${STATIC_FLAG}-fuse-ld=lld") + set(STATIC_LINK_FLAG "${STATIC_FLAG} -fuse-ld=lld") else () set(STATIC_LINK_FLAG "${STATIC_FLAG}") # use `ld` endif () @@ -46,7 +49,9 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") enable_ipo() else () set(CMAKE_CXX_FLAGS_RELEASE "-O3") - set(STATIC_LINK_FLAG "${STATIC_FLAG}") + if (NOT APPLE) + set(STATIC_LINK_FLAG "-static") + endif () enable_ipo() endif ()