Tristan Matthews | 0461646 | 2013-11-14 16:09:34 -0500 | [diff] [blame] | 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 | |
| 20 | MACRO(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) |
| 58 | ENDMACRO(FIND_PACKAGE_HANDLE_STANDARD_ARGS) |