From 07c6c86874fef1e4aeccd37dc62cc009ba7212b8 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 19 Sep 2016 14:38:16 +0300 Subject: Fix LTO detection Catch gcc-ar and gcc-ranlib versions compiled without plugin support and disable LTO in that case. Also do the LTO check only once by checking if HAS_LTO_FLAG has been set. Signed-off-by: Laurent Pinchart Signed-off-by: Tomi Valkeinen --- CMakeLists.txt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 190119f..9214bfd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,12 +35,27 @@ set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) # static link libc # set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") -if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG) +if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG AND NOT DEFINED HAS_LTO_FLAG) CHECK_CXX_COMPILER_FLAG("-flto" HAS_LTO_FLAG) if (HAS_LTO_FLAG) find_program(LTO_AR NAMES "${CMAKE_C_COMPILER}-ar" gcc-ar) find_program(LTO_RANLIB NAMES "${CMAKE_C_COMPILER}-ranlib" gcc-ranlib) + + if (LTO_AR) + EXECUTE_PROCESS(COMMAND "${LTO_AR}" --version RESULT_VARIABLE ret OUTPUT_QUIET ERROR_QUIET) + if (ret) + unset(LTO_AR CACHE) + endif() + endif() + + if (LTO_RANLIB) + EXECUTE_PROCESS(COMMAND "${LTO_RANLIB}" --version RESULT_VARIABLE ret OUTPUT_QUIET ERROR_QUIET) + if (ret) + unset(LTO_RANLIB CACHE) + endif() + endif() + if (LTO_AR AND LTO_RANLIB) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") set(CMAKE_AR "${LTO_AR}") -- cgit v1.2.3