diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2016-09-28 10:42:03 +0300 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2016-09-29 11:21:16 +0300 |
commit | 8170f7a37747c3a414b8ad45bb587adcdac6e0da (patch) | |
tree | 5e75a6728184d79e4146f875a2e747f252e2708e /LTO.cmake | |
parent | 07c6c86874fef1e4aeccd37dc62cc009ba7212b8 (diff) |
Improve LTO detection code
Split LTO detection into separate func and file, and create a cached
LTO_WORKS variable.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'LTO.cmake')
-rw-r--r-- | LTO.cmake | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/LTO.cmake b/LTO.cmake new file mode 100644 index 0000000..9a18d77 --- /dev/null +++ b/LTO.cmake @@ -0,0 +1,32 @@ +function(check_lto) + if (DEFINED LTO_WORKS) + return() + endif() + + set(LTO_WORKS FALSE CACHE INTERNAL "LTO works") + + CHECK_CXX_COMPILER_FLAG("-flto" HAS_LTO_FLAG) + + if (NOT HAS_LTO_FLAG) + return() + endif() + + find_program(LTO_AR NAMES "${CMAKE_C_COMPILER}-ar" gcc-ar) + find_program(LTO_RANLIB NAMES "${CMAKE_C_COMPILER}-ranlib" gcc-ranlib) + + if (NOT LTO_AR OR NOT LTO_RANLIB) + return() + endif() + + EXECUTE_PROCESS(COMMAND "${LTO_AR}" --version RESULT_VARIABLE ret OUTPUT_QUIET ERROR_QUIET) + if (ret) + return() + endif() + + EXECUTE_PROCESS(COMMAND "${LTO_RANLIB}" --version RESULT_VARIABLE ret OUTPUT_QUIET ERROR_QUIET) + if (ret) + return() + endif() + + set(LTO_WORKS TRUE CACHE INTERNAL "LTO works") +endfunction() |