This is an automated email from the ASF dual-hosted git repository.
twice pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/kvrocks.git
The following commit(s) were added to refs/heads/unstable by this push:
new 61f4dc232 build: disable LTO by default (#3440)
61f4dc232 is described below
commit 61f4dc232704c589b28c9fd1b4374b31fffe7d7b
Author: Twice <[email protected]>
AuthorDate: Fri Apr 10 13:46:20 2026 +0800
build: disable LTO by default (#3440)
Disabled link-time optimization (LTO) by default and removed related
conditions to simplify CMake configuration.
Users need to manually enable LTO by `-DENABLE_LTO=ON` if they want LTO.
---
CMakeLists.txt | 19 +------------------
1 file changed, 1 insertion(+), 18 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a378db524..b074b52a8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,16 +30,11 @@ option(ASAN_WITH_LSAN "enable leak sanitizer while address
sanitizer is enabled"
option(ENABLE_STATIC_LIBSTDCXX "link kvrocks with static library of libstd++
instead of shared library" ON)
option(ENABLE_LUAJIT "enable use of luaJIT instead of lua" ON)
option(ENABLE_OPENSSL "enable openssl to support tls connection" OFF)
-option(ENABLE_LTO "enable link-time optimization" ON)
+option(ENABLE_LTO "enable link-time optimization" OFF)
set(SYMBOLIZE_BACKEND "" CACHE STRING "symbolization backend library for
cpptrace (libbacktrace, libdwarf, or empty)")
set(PORTABLE 0 CACHE STRING "build a portable binary (disable arch-specific
optimizations)")
option(ENABLE_NEW_ENCODING "enable new encoding (#1033) for storing 64bit size
and expire time in milliseconds" ON)
-# to save build time in debug mode
-if (CMAKE_BUILD_TYPE STREQUAL "Debug")
- set(ENABLE_LTO OFF)
-endif()
-
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0135 NEW)
endif()
@@ -144,7 +139,6 @@ endif()
if (CMAKE_HOST_APPLE)
set(DISABLE_JEMALLOC ON)
- set(ENABLE_LTO OFF)
endif ()
if(NOT DISABLE_JEMALLOC)
@@ -298,17 +292,6 @@ else()
target_compile_definitions(kvrocks_objs PUBLIC METADATA_ENCODING_VERSION=0)
endif()
-# disable LTO on ARM due to toolchain stability issues
-string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR_LOWER)
-if(CMAKE_SYSTEM_PROCESSOR_LOWER MATCHES "^(aarch64|arm64|arm)")
- set(ENABLE_LTO OFF)
-endif()
-
-# disable LTO on GCC <= 9 due to an ICE
-if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION
VERSION_LESS 10))
- set(ENABLE_LTO OFF)
-endif()
-
if(ENABLE_LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_result OUTPUT ipo_output LANGUAGES CXX)