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