sfizz/cmake/CheckIPO.cmake

38 lines
1,000 B
CMake
Raw Normal View History

2019-11-26 13:43:07 +01:00
# Added in CMake 3.9
2020-01-31 23:24:22 +01:00
2020-12-14 07:49:02 +01:00
if(CMAKE_VERSION VERSION_LESS 3.9)
message(WARNING "\nIPO checks are only available on CMake 3.9 and later.")
2020-01-31 23:24:22 +01:00
set(ENABLE_LTO OFF CACHE BOOL "" FORCE)
2020-12-14 07:49:02 +01:00
function(SFIZZ_ENABLE_LTO_IF_NEEDED TARGET)
2020-01-31 23:24:22 +01:00
endfunction()
return()
endif()
2020-12-14 07:49:02 +01:00
include(CheckIPOSupported)
check_ipo_supported(RESULT result OUTPUT output)
2019-11-26 13:43:07 +01:00
2020-12-14 07:49:02 +01:00
if(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l)
2020-01-31 23:24:22 +01:00
set(ENABLE_LTO OFF CACHE BOOL "" FORCE)
2020-01-18 10:05:54 +01:00
endif()
2020-12-14 07:49:02 +01:00
if(result AND ENABLE_LTO AND CMAKE_BUILD_TYPE STREQUAL "Release")
message(STATUS "\nLTO enabled.")
2019-11-26 13:43:07 +01:00
else()
2020-12-14 07:49:02 +01:00
if(${output})
message(WARNING "\nIPO disabled: ${output}")
2019-11-26 13:43:07 +01:00
else()
2020-12-14 07:49:02 +01:00
message(WARNING "\nIPO was disabled or not in a Release build.")
2019-11-26 13:43:07 +01:00
endif()
2020-01-31 23:24:22 +01:00
set(ENABLE_LTO OFF CACHE BOOL "" FORCE)
2019-11-26 13:43:07 +01:00
endif()
2020-12-14 07:49:02 +01:00
function(SFIZZ_ENABLE_LTO_IF_NEEDED TARGET)
if(${ENABLE_LTO})
message(STATUS "Enabling LTO on ${TARGET}")
2020-12-14 07:49:02 +01:00
set_property(TARGET ${TARGET} PROPERTY INTERPROCEDURAL_OPTIMIZATION True)
endif()
endfunction()