- set(optCFLAGS "${optCFLAGS} -flto ")
- # See https://gcc.gnu.org/wiki/LinkTimeOptimizationFAQ#ar.2C_nm_and_ranlib:
+ set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
+ if(LTO_EXTRA_FLAG AND CMAKE_COMPILER_IS_GNUCC)
+ list(APPEND CMAKE_C_COMPILE_OPTIONS_IPO "-flto=${LTO_EXTRA_FLAG}")
+ list(APPEND CMAKE_CXX_COMPILE_OPTIONS_IPO "-flto=${LTO_EXTRA_FLAG}")
+ endif()
+
+ # Activate fat-lto-objects in case LD and gfortran differ too much.
+ # Only test with GNU as it's the only case I know (clang+gfortran+lld)
+ execute_process(COMMAND ${CMAKE_LINKER} -v OUTPUT_VARIABLE LINKER_ID ERROR_VARIABLE LINKER_ID)
+ string(REGEX MATCH "GNU" LINKER_ID "${LINKER_ID}")
+ if(${CMAKE_Fortran_COMPILER_ID} MATCHES "GNU"
+ AND NOT "${LINKER_ID}" MATCHES "GNU")
+ list(APPEND CMAKE_Fortran_COMPILE_OPTIONS_IPO "-ffat-lto-objects")
+ endif()
+