diff --git a/CMakeLists.txt b/CMakeLists.txt index 9568ae52..1e38a1a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,6 +99,17 @@ if(WITH_CJSON) endif() endif() +option(WITH_LTO "Build with link time optimizations (IPO) / interprocedural optimization (IPO) enabled." ON) +if(WITH_LTO) + include(CheckIPOSupported) + check_ipo_supported(RESULT is_ipo_supported OUTPUT output) + if(is_ipo_supported) + set_property(TARGET common-options PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) + else() + message(WARNING "LTO/IPO is not supported: ${output}") + endif() +endif() + # ======================================== # Include projects # ======================================== diff --git a/ChangeLog.txt b/ChangeLog.txt index bea8562f..a69645ae 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -158,6 +158,7 @@ Clients: Build: - Increased CMake minimal required version to 3.14, which is required for the preinstalled SQLite3 find module. +- Add an CMake option `WITH_LTO` to enable/disable link time optimization. 2.0.14 - 2021-11-17