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