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