@@ -90,19 +90,24 @@ endif()
90
90
# - https://gcc.gnu.org/onlinedocs/gccint/LTO-Overview.html
91
91
# - https://llvm.org/docs/FatLTO.html
92
92
93
- if (SOURCEMETA_COMPILER_GCC AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS )
94
- message (STATUS "Enabling Fat LTO" )
95
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -ffat-lto-objects" )
96
- set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto" )
97
- set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto" )
98
- endif ()
93
+ # Note we don't enable LTO on RelWithDebInfo, as it breaks debugging symbols
94
+ # on at least AppleClang, making stepping through source code impossible.
95
+
96
+ if (CMAKE_BUILD_TYPE STREQUAL "Release" )
97
+ if (SOURCEMETA_COMPILER_GCC AND NOT BUILD_SHARED_LIBS )
98
+ message (STATUS "Enabling Fat LTO" )
99
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -ffat-lto-objects" )
100
+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto" )
101
+ set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto" )
102
+ endif ()
99
103
100
- # TODO: Make this work on Linux on LLVM
101
- if (SOURCEMETA_COMPILER_LLVM AND CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT BUILD_SHARED_LIBS AND APPLE )
102
- message (STATUS "Enabling Fat LTO" )
103
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=full" )
104
- set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto=full" )
105
- set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto=full" )
104
+ # TODO: Make this work on Linux on LLVM
105
+ if (SOURCEMETA_COMPILER_LLVM AND NOT BUILD_SHARED_LIBS AND APPLE )
106
+ message (STATUS "Enabling Fat LTO" )
107
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=full" )
108
+ set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto=full" )
109
+ set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto=full" )
110
+ endif ()
106
111
endif ()
107
112
108
113
# Attempt to enable SIMD (SSE/AVX/NEON)
0 commit comments