From 7d2037630abad09ee7b8857710aa7a0efd0c5672 Mon Sep 17 00:00:00 2001 From: RadRussianRus Date: Thu, 30 Dec 2021 08:03:01 +0300 Subject: [PATCH] Add an option to enable LTO --- init_target.cmake | 4 ++-- variables.cmake | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/init_target.cmake b/init_target.cmake index 21570d9..1788fc7 100644 --- a/init_target.cmake +++ b/init_target.cmake @@ -36,13 +36,13 @@ function(init_target target_name) # init_target(my_target folder_name) XCODE_ATTRIBUTE_GCC_INLINES_ARE_PRIVATE_EXTERN YES XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES ) - if (DESKTOP_APP_SPECIAL_TARGET) + if (DESKTOP_APP_SPECIAL_TARGET OR DESKTOP_APP_WITH_LTO) set_target_properties(${target_name} PROPERTIES XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL $,0,fast> XCODE_ATTRIBUTE_LLVM_LTO $,NO,YES> ) endif() - if (DESKTOP_APP_SPECIAL_TARGET AND WIN32 AND NOT build_win64) + if (DESKTOP_APP_WITH_LTO OR (DESKTOP_APP_SPECIAL_TARGET AND WIN32 AND NOT build_win64)) set_target_properties(${target_name} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE True INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO True diff --git a/variables.cmake b/variables.cmake index f03e885..a8ce960 100644 --- a/variables.cmake +++ b/variables.cmake @@ -30,6 +30,7 @@ option(DESKTOP_APP_DISABLE_AUTOUPDATE "Disable autoupdate." ${disable_autoupdate option(DESKTOP_APP_USE_HUNSPELL_ONLY "Disable system spellchecker and use bundled Hunspell only. (For debugging purposes)" OFF) option(DESKTOP_APP_USE_ENCHANT "Use Enchant instead of bundled Hunspell. (Linux only)" OFF) option(DESKTOP_APP_NO_PDB "Disable PDB file generation. (Windows only)" OFF) +option(DESKTOP_APP_WITH_LTO "Forcibly enable link-time optimization." OFF) if (DESKTOP_APP_USE_PACKAGED AND DEFINED CMAKE_OSX_ARCHITECTURES) set(DESKTOP_APP_MAC_ARCH "${CMAKE_OSX_ARCHITECTURES}" CACHE STRING "Target macOS arch. (macOS only)")