xref: /aosp_15_r20/external/eigen/bench/btl/cmake/FindPackageHandleStandardArgs.cmake (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
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