From b944efa1f33770fe88c1fb54295a84f3db4b4d26 Mon Sep 17 00:00:00 2001 From: Vitaly Zaitsev Date: Fri, 24 Jan 2020 14:01:40 +0100 Subject: [PATCH] Added support of IPO optimizations. Signed-off-by: Vitaly Zaitsev --- init_target.cmake | 2 +- variables.cmake | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/init_target.cmake b/init_target.cmake index 62f599e..bce754d 100644 --- a/init_target.cmake +++ b/init_target.cmake @@ -41,7 +41,7 @@ function(init_target target_name) # init_target(my_target folder_name) XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL $,0,fast> XCODE_ATTRIBUTE_LLVM_LTO $,NO,YES> ) - if (WIN32) + if (WIN32 OR DESKTOP_APP_ENABLE_IPO_OPTIMIZATIONS) set_target_properties(${target_name} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE True INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO True diff --git a/variables.cmake b/variables.cmake index 60e794e..9d3b075 100644 --- a/variables.cmake +++ b/variables.cmake @@ -25,6 +25,12 @@ option(DESKTOP_APP_DISABLE_CRASH_REPORTS "Disable crash report generation." ${DE option(DESKTOP_APP_USE_PACKAGED_RLOTTIE "Find rlottie using CMake instead of bundled one." ${DESKTOP_APP_USE_PACKAGED}) option(DESKTOP_APP_USE_PACKAGED_FONTS "Use preinstalled fonts instead of bundled one." ${DESKTOP_APP_USE_PACKAGED}) +option(DESKTOP_APP_ENABLE_IPO_OPTIMIZATIONS "Enable IPO build optimizations." OFF) +if (DESKTOP_APP_ENABLE_IPO_OPTIMIZATIONS AND CMAKE_CXX_COMPILER_ID MATCHES "Clang") + message(WARNING "Clang cannot build Qt applications with IPO enabled due to upstream bug: https://bugreports.qt.io/browse/QTBUG-61710.") + set(DESKTOP_APP_ENABLE_IPO_OPTIMIZATIONS OFF) +endif() + if (DESKTOP_APP_SPECIAL_TARGET STREQUAL "" OR DESKTOP_APP_SPECIAL_TARGET STREQUAL "uwp" OR DESKTOP_APP_SPECIAL_TARGET STREQUAL "macstore") @@ -59,10 +65,10 @@ else() report_bad_special_target() endif() endif() - if (NOT DESKTOP_APP_USE_PACKAGED) - set(CMAKE_AR /usr/bin/gcc-ar) - set(CMAKE_RANLIB /usr/bin/gcc-ranlib) - set(CMAKE_NM /usr/bin/gcc-nm) + if (NOT DESKTOP_APP_USE_PACKAGED OR DESKTOP_APP_ENABLE_IPO_OPTIMIZATIONS) + set(CMAKE_AR "gcc-ar") + set(CMAKE_RANLIB "gcc-ranlib") + set(CMAKE_NM "gcc-nm") endif() endif()