diff --git a/Modules/Compiler/LLVMFlang-Fortran.cmake b/Modules/Compiler/LLVMFlang-Fortran.cmake index 7f43c18f31..914e40da7b 100644 --- a/Modules/Compiler/LLVMFlang-Fortran.cmake +++ b/Modules/Compiler/LLVMFlang-Fortran.cmake @@ -35,3 +35,16 @@ endif() set(CMAKE_SHARED_LIBRARY_Fortran_FLAGS -fPIC) set(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "-shared") + +# Determine LTO support +set(_CMAKE_Fortran_IPO_SUPPORTED_BY_CMAKE NO) +set(_CMAKE_Fortran_IPO_MAY_BE_SUPPORTED_BY_COMPILER NO) +if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 18.0) + set(_CMAKE_Fortran_IPO_SUPPORTED_BY_CMAKE YES) + set(_CMAKE_Fortran_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES) + if(CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 23.0) + set(CMAKE_Fortran_COMPILE_OPTIONS_IPO "-flto") + else() + set(CMAKE_Fortran_COMPILE_OPTIONS_IPO "-flto=thin") + endif() +endif()