2017-12-22 16:48:31 -05:00
|
|
|
include(CheckCCompilerFlag)
|
|
|
|
|
|
|
|
macro(CHECK_LINKER_FLAG flag VARIABLE)
|
|
|
|
if(NOT DEFINED "${VARIABLE}")
|
|
|
|
if(NOT CMAKE_REQUIRED_QUIET)
|
|
|
|
message(STATUS "Looking for ${flag} linker flag")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(_cle_source ${CMAKE_SOURCE_DIR}/cmake/CheckLinkerFlag.c)
|
|
|
|
|
|
|
|
set(saved_CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
|
|
|
|
set(CMAKE_C_FLAGS "${flag}")
|
|
|
|
try_compile(${VARIABLE}
|
|
|
|
${CMAKE_BINARY_DIR}
|
|
|
|
${_cle_source}
|
|
|
|
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} ${flag}
|
|
|
|
CMAKE_FLAGS
|
|
|
|
OUTPUT_VARIABLE OUTPUT)
|
|
|
|
unset(_cle_source)
|
|
|
|
set(CMAKE_C_FLAGS ${saved_CMAKE_C_FLAGS})
|
|
|
|
unset(saved_CMAKE_C_FLAGS)
|
|
|
|
|
|
|
|
if ("${OUTPUT}" MATCHES "warning.*ignored")
|
|
|
|
set(${VARIABLE} 0)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(${VARIABLE})
|
|
|
|
if(NOT CMAKE_REQUIRED_QUIET)
|
|
|
|
message(STATUS "Looking for ${flag} linker flag - found")
|
|
|
|
endif()
|
|
|
|
set(${VARIABLE} 1 CACHE INTERNAL "Have linker flag ${flag}")
|
|
|
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
|
|
|
"Determining if the ${flag} linker flag is supported "
|
|
|
|
"passed with the following output:\n"
|
|
|
|
"${OUTPUT}\n\n")
|
|
|
|
else()
|
|
|
|
if(NOT CMAKE_REQUIRED_QUIET)
|
|
|
|
message(STATUS "Looking for ${flag} linker flag - not found")
|
|
|
|
endif()
|
|
|
|
set(${VARIABLE} "" CACHE INTERNAL "Have linker flag ${flag}")
|
|
|
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
2018-09-29 16:12:14 -04:00
|
|
|
"Determining if the ${flag} linker flag is supported "
|
2017-12-22 16:48:31 -05:00
|
|
|
"failed with the following output:\n"
|
|
|
|
"${OUTPUT}\n\n")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endmacro()
|