Skip to content

Commit 5789cc0

Browse files
committed
feat: enable ThinLTO for mac & linux
1 parent dc6c820 commit 5789cc0

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

cmake/config.cmake

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,27 @@ if(MSVC)
2323
add_compile_definitions("_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR")
2424

2525
set(release_link_options "/OPT:REF;/OPT:ICF")
26-
add_link_options("$<$<CONFIG:Release>:${release_link_options}>")
27-
SET(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO "RelWithDebInfo;Release;")
28-
SET(CMAKE_MAP_IMPORTED_CONFIG_MINSIZEREL "MinSizeRel;Release;")
26+
add_link_options("$<$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>:${release_link_options}>")
27+
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO "RelWithDebInfo;Release;")
28+
set(CMAKE_MAP_IMPORTED_CONFIG_MINSIZEREL "MinSizeRel;Release;")
2929
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
3030
else()
3131
add_compile_options("-Wall;-Werror;-Wextra;-Wpedantic;-Wno-missing-field-initializers")
3232

3333
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13)
3434
add_compile_options("-Wno-restrict")
3535
endif()
36+
add_compile_options("$<$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>:-flto=thin>")
37+
add_link_options("$<$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>:-flto=thin>")
3638
endif()
3739

3840
if(LINUX AND WITH_RPATH_LIBRARY)
3941
function(copy_and_add_rpath_library LIBNAME)
4042
execute_process(
41-
COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=${LIBNAME}.so.1 -target ${CMAKE_CXX_COMPILER_TARGET} --sysroot=${CMAKE_SYSROOT}
43+
COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=${LIBNAME}.so.1 -target ${CMAKE_CXX_COMPILER_TARGET}
44+
--sysroot=${CMAKE_SYSROOT}
4245
OUTPUT_VARIABLE LIB_PATH
43-
OUTPUT_STRIP_TRAILING_WHITESPACE
44-
)
46+
OUTPUT_STRIP_TRAILING_WHITESPACE)
4547

4648
if("${LIB_PATH}" STREQUAL "${LIBNAME}.so.1")
4749
message(FATAL_ERROR "Could not locate ${LIBNAME}.so.1 using compiler")
@@ -63,11 +65,16 @@ if(LINUX AND WITH_RPATH_LIBRARY)
6365

6466
message(STATUS "${LIBNAME}.so.1 path: ${LIB_PATH_REAL}")
6567

66-
install(FILES "${LIB_PATH_REAL}" DESTINATION ${RPATH_LIBRARY_INSTALL_DIR} RENAME "${LIBNAME}.so.1")
68+
install(
69+
FILES "${LIB_PATH_REAL}"
70+
DESTINATION ${RPATH_LIBRARY_INSTALL_DIR}
71+
RENAME "${LIBNAME}.so.1")
6772

6873
get_filename_component(LIB_PATH_DIR "${LIB_PATH_REAL}" DIRECTORY)
6974
list(APPEND CMAKE_BUILD_RPATH "${LIB_PATH_DIR}")
70-
set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" PARENT_SCOPE)
75+
set(CMAKE_BUILD_RPATH
76+
"${CMAKE_BUILD_RPATH}"
77+
PARENT_SCOPE)
7178
endfunction()
7279

7380
copy_and_add_rpath_library(libc++)

0 commit comments

Comments
 (0)