1# FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME (DEFAULT_MSG|"Custom failure message") VAR1 ... ) 2# 3# This macro is intended to be used in FindXXX.cmake modules files. 4# It handles the REQUIRED and QUIET argument to find_package() and 5# it also sets the <UPPERCASED_NAME>_FOUND variable. 6# The package is found if all variables listed are TRUE. 7# Example: 8# 9# FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2 DEFAULT_MSG LIBXML2_LIBRARIES LIBXML2_INCLUDE_DIR) 10# 11# LibXml2 is considered to be found, if both LIBXML2_LIBRARIES and 12# LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to TRUE. 13# If it is not found and REQUIRED was used, it fails with FATAL_ERROR, 14# independent whether QUIET was used or not. 15# 16# If it is found, the location is reported using the VAR1 argument, so 17# here a message "Found LibXml2: /usr/lib/libxml2.so" will be printed out. 18# If the second argument is DEFAULT_MSG, the message in the failure case will 19# be "Could NOT find LibXml2", if you don't like this message you can specify 20# your own custom failure message there. 21 22macro(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FAIL_MSG _VAR1 ) 23 24 if("${_FAIL_MSG}" STREQUAL "DEFAULT_MSG") 25 if (${_NAME}_FIND_REQUIRED) 26 set(_FAIL_MESSAGE "Could not find REQUIRED package ${_NAME}") 27 else (${_NAME}_FIND_REQUIRED) 28 set(_FAIL_MESSAGE "Could not find OPTIONAL package ${_NAME}") 29 endif (${_NAME}_FIND_REQUIRED) 30 else("${_FAIL_MSG}" STREQUAL "DEFAULT_MSG") 31 set(_FAIL_MESSAGE "${_FAIL_MSG}") 32 endif("${_FAIL_MSG}" STREQUAL "DEFAULT_MSG") 33 34 string(TOUPPER ${_NAME} _NAME_UPPER) 35 36 set(${_NAME_UPPER}_FOUND TRUE) 37 if(NOT ${_VAR1}) 38 set(${_NAME_UPPER}_FOUND FALSE) 39 endif(NOT ${_VAR1}) 40 41 foreach(_CURRENT_VAR ${ARGN}) 42 if(NOT ${_CURRENT_VAR}) 43 set(${_NAME_UPPER}_FOUND FALSE) 44 endif(NOT ${_CURRENT_VAR}) 45 endforeach(_CURRENT_VAR) 46 47 if (${_NAME_UPPER}_FOUND) 48 if (NOT ${_NAME}_FIND_QUIETLY) 49 message(STATUS "Found ${_NAME}: ${${_VAR1}}") 50 endif (NOT ${_NAME}_FIND_QUIETLY) 51 else (${_NAME_UPPER}_FOUND) 52 if (${_NAME}_FIND_REQUIRED) 53 message(FATAL_ERROR "${_FAIL_MESSAGE}") 54 else (${_NAME}_FIND_REQUIRED) 55 if (NOT ${_NAME}_FIND_QUIETLY) 56 message(STATUS "${_FAIL_MESSAGE}") 57 endif (NOT ${_NAME}_FIND_QUIETLY) 58 endif (${_NAME}_FIND_REQUIRED) 59 endif (${_NAME_UPPER}_FOUND) 60endmacro(FIND_PACKAGE_HANDLE_STANDARD_ARGS) 61