############################################################################### set(_LINK_FLAG_LIST_DIR ${CMAKE_CURRENT_LIST_DIR}) macro(check_link_flag _variable _flag) string (MAKE_C_IDENTIFIER ${_flag} _name) if (NOT DEFINED __check_link_flag_${_name}) message (STATUS "checking linker flag ${_flag}") set (__check_linker_flag_old "${CMAKE_EXE_LINKER_FLAGS}") set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${_flag}") try_compile ( __check_link_flag_${_name} "${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp" SOURCES "${_LINK_FLAG_LIST_DIR}/test_link_flag.cpp") if (__check_link_flag_${_name}) message (STATUS "checking linker flag ${_flag} - found") else() message (STATUS "checking linker flag ${_flag} - not found") endif() set (CMAKE_EXE_LINKER_FLAGS "${__check_linker_flag_old}") endif () set (${_variable} ${__check_link_flag_${_name}}) endmacro() ##----------------------------------------------------------------------------- macro(append_link_flag _flag) check_link_flag (__test_link_flag_${_flag} ${_flag}) if (__test_link_flag_${_flag}) set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${_flag}") endif() endmacro() ##----------------------------------------------------------------------------- macro(append_first_link_flag) message(CHECK_START "First LDFLAG ${ARGV}") foreach(__append_first_link_flag__flag ${ARGV}) set(__append_first_link_flag__test 0) check_link_flag( __append_first_link_flag__test ${__append_first_link_flag__flag} ) if (${append_first_link_flag__test}) set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${__append_first_link_flag__flag}" ) message(CHECK_PASS "Found ${__append_first_link_flag__flag}") break() endif() endforeach() if (NOT ${_append_first_link_flag__test}) message(CHECK_FAIL "No valid flags") endif () endmacro()