diff --git a/CMakeLists.txt b/CMakeLists.txt index 4cf1ec966..cf5a801fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,7 +86,21 @@ if(CMAKE_BUILD_TYPE MATCHES Debug) endif() endif() if(CMAKE_BUILD_TYPE MATCHES Release) - message(STATUS "Configuring OSRM in release mode") + message(STATUS "Configuring OSRM in release mode") + # Check if LTO is available + set(LTO_FLAGS "") + CHECK_CXX_COMPILER_FLAG("-flto" HAS_LTO_FLAG) + if (HAS_LTO_FLAG) + set(LTO_FLAGS "${LTO_FLAGS} -flto") + + # Since gcc 4.9 the LTO format is non-standart ('slim'), so we need to use the build-in tools + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND + NOT "${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS "4.9.0") + message(STATUS "Using gcc specific binutils for LTO.") + set(CMAKE_AR "/usr/bin/gcc-ar") + set(CMAKE_RANLIB "/usr/bin/gcc-ranlib") + endif() + endif (HAS_LTO_FLAG) endif() # Configuring compilers @@ -104,21 +118,6 @@ elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # using Visual Studio C++ endif() -# Check if LTO is available -set(LTO_FLAGS "") -CHECK_CXX_COMPILER_FLAG("-flto" HAS_LTO_FLAG) -if (HAS_LTO_FLAG) - set(LTO_FLAGS "${LTO_FLAGS} -flto") - - # Since gcc 4.9 the LTO format is non-standart ('slim'), so we need to use the build-in tools - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND - NOT "${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS "4.9.0") - message(STATUS "Using gcc specific binutils for LTO.") - set(CMAKE_AR "/usr/bin/gcc-ar") - set(CMAKE_RANLIB "/usr/bin/gcc-ranlib") - endif() -endif (HAS_LTO_FLAG) - # disable partitioning of LTO process when possible (fixes Debian issues) set(LTO_PARTITION_FLAGS "") CHECK_CXX_COMPILER_FLAG("-flto-partition=none" HAS_LTO_PARTITION_FLAG)