mirror of
https://github.com/neovim/neovim.git
synced 2025-12-17 03:45:42 +00:00
build: Enable LTO (Link Time Optimization) #8654
This commit is contained in:
@@ -85,6 +85,14 @@ endif()
|
|||||||
|
|
||||||
option(ENABLE_LIBINTL "enable libintl" ON)
|
option(ENABLE_LIBINTL "enable libintl" ON)
|
||||||
option(ENABLE_LIBICONV "enable libiconv" ON)
|
option(ENABLE_LIBICONV "enable libiconv" ON)
|
||||||
|
if (MINGW)
|
||||||
|
# Disable LTO by default as it may not compile
|
||||||
|
# See https://github.com/Alexpux/MINGW-packages/issues/3516
|
||||||
|
# and https://github.com/neovim/neovim/pull/8654#issuecomment-402316672
|
||||||
|
option(ENABLE_LTO "enable link time optimization" OFF)
|
||||||
|
else()
|
||||||
|
option(ENABLE_LTO "enable link time optimization" ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Set default build type.
|
# Set default build type.
|
||||||
if(NOT CMAKE_BUILD_TYPE)
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
|
|||||||
@@ -399,6 +399,10 @@ if(JEMALLOC_FOUND)
|
|||||||
list(APPEND NVIM_EXEC_LINK_LIBRARIES ${JEMALLOC_LIBRARIES})
|
list(APPEND NVIM_EXEC_LINK_LIBRARIES ${JEMALLOC_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(POLICY CMP0069)
|
||||||
|
cmake_policy(SET CMP0069 NEW)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_executable(nvim ${NVIM_GENERATED_FOR_SOURCES} ${NVIM_GENERATED_FOR_HEADERS}
|
add_executable(nvim ${NVIM_GENERATED_FOR_SOURCES} ${NVIM_GENERATED_FOR_HEADERS}
|
||||||
${NVIM_GENERATED_SOURCES} ${NVIM_SOURCES} ${NVIM_HEADERS})
|
${NVIM_GENERATED_SOURCES} ${NVIM_SOURCES} ${NVIM_HEADERS})
|
||||||
target_link_libraries(nvim ${NVIM_EXEC_LINK_LIBRARIES})
|
target_link_libraries(nvim ${NVIM_EXEC_LINK_LIBRARIES})
|
||||||
@@ -407,6 +411,14 @@ install_helper(TARGETS nvim)
|
|||||||
set_property(TARGET nvim APPEND PROPERTY
|
set_property(TARGET nvim APPEND PROPERTY
|
||||||
INCLUDE_DIRECTORIES ${LUA_PREFERRED_INCLUDE_DIRS})
|
INCLUDE_DIRECTORIES ${LUA_PREFERRED_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
if(ENABLE_LTO AND (POLICY CMP0069))
|
||||||
|
include(CheckIPOSupported)
|
||||||
|
check_ipo_supported(RESULT IPO_SUPPORTED)
|
||||||
|
if(IPO_SUPPORTED AND (NOT CMAKE_BUILD_TYPE MATCHES Debug))
|
||||||
|
set_property(TARGET nvim PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
# Copy DLLs and third-party tools to bin/ and install them along with nvim
|
# Copy DLLs and third-party tools to bin/ and install them along with nvim
|
||||||
add_custom_target(nvim_runtime_deps ALL
|
add_custom_target(nvim_runtime_deps ALL
|
||||||
|
|||||||
Reference in New Issue
Block a user