diff --git a/CMakeLists.txt b/CMakeLists.txt index b7940fab0..ec99fca20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -124,16 +124,21 @@ endif() if(CMAKE_BUILD_TYPE MATCHES Release) message(STATUS "Configuring OSRM in release mode") # Check if LTO is available - include(ProcessorCount) - ProcessorCount(NPROC) - set(LTO_FLAGS "") - check_cxx_compiler_flag("-flto=${NPROC}" LTO_AVAILABLE) + check_cxx_compiler_flag("-flto" LTO_AVAILABLE) if(LTO_AVAILABLE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=${NPROC}") + set(OLD_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + # GCC in addition allows parallelizing LTO + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + include(ProcessorCount) + ProcessorCount(NPROC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=${NPROC}") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") + endif() set(CHECK_LTO_SRC "int main(){return 0;}") check_cxx_source_compiles("${CHECK_LTO_SRC}" LTO_WORKS) if(LTO_WORKS) - message(STATUS "LTO working") + message(STATUS "LTO working") else() message(STATUS "LTO broken") set(CMAKE_CXX_FLAGS "${OLD_CXX_FLAGS}")