diff --git a/CMakeLists.txt b/CMakeLists.txt index c9e1a8e3fa7..a75bf1692fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -377,15 +377,13 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin") endif() if(ENABLE_LTO) - if(CMAKE_C_COMPILER_ID MATCHES "MSVC") - add_compile_options(/GL) - string(APPEND CMAKE_EXE_LINKER_FLAGS " /LTCG") + include(CheckIPOSupported) + check_ipo_supported(RESULT supported OUTPUT error) + + if(supported) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) else() - check_and_add_flag(LTO -flto) - if(CMAKE_CXX_COMPILER_ID STREQUAL GNU) - set(CMAKE_AR gcc-ar) - set(CMAKE_RANLIB gcc-ranlib) - endif() + message(STATUS "IPO / LTO not supported: <${error}>") endif() endif()