From: Gunnar Beutner Date: Sat, 27 Aug 2016 19:42:05 +0000 (+0200) Subject: Clean up detection of the -flto flag X-Git-Tag: v2.6.0~183 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4d503a3abbd96bbb027dd2d7123b727ecb1d01ae;p=icinga2 Clean up detection of the -flto flag refs #12564 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 5032229af..9240064ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -180,11 +180,19 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU") endif() endif() +include(CheckCXXCompilerFlag) + if(ICINGA2_LTO_BUILD) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto -fno-fat-lto-objects") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -fno-fat-lto-objects") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto") + check_cxx_compiler_flag("-flto" CXX_FLAG_LTO) + + if(NOT CXX_FLAG_LTO) + message(WARNING "Compiler does not support LTO, falling back to non-LTO build") + else() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto") + endif() endif() include(CheckCCompilerFlag) @@ -236,8 +244,6 @@ if(HAVE_LIBEXECINFO) set(HAVE_BACKTRACE_SYMBOLS TRUE) endif() -include(CheckCXXCompilerFlag) - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") exec_program(${CMAKE_CXX_COMPILER} ARGS -dumpversion @@ -259,16 +265,6 @@ if(NOT MSVC) endif() endif() -check_cxx_compiler_flag("-flto" CXX_FLAG_LTO) - -if(CXX_FLAG_LTO) - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_DEBUG} -flto") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_DEBUG} -flto") - - set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_DEBUG} -flto") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_DEBUG} -flto") -endif() - configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ESCAPE_QUOTES) install(