|
|
@@ -175,11 +175,12 @@ endmacro()
|
|
|
|
|
|
function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
|
|
|
|
|
|
-# set up the arguments for CMAKE_PARSE_ARGUMENTS and check whether we are in
|
|
|
-# new extended or in the "old" mode:
|
|
|
+# Set up the arguments for `cmake_parse_arguments`.
|
|
|
set(options CONFIG_MODE HANDLE_COMPONENTS)
|
|
|
set(oneValueArgs FAIL_MESSAGE VERSION_VAR FOUND_VAR)
|
|
|
set(multiValueArgs REQUIRED_VARS)
|
|
|
+
|
|
|
+# Check whether we are in 'simple' or 'extended' mode:
|
|
|
set(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} )
|
|
|
list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX)
|
|
|
|
|
|
@@ -188,8 +189,7 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
|
|
|
set(FPHSA_REQUIRED_VARS ${ARGN})
|
|
|
set(FPHSA_VERSION_VAR)
|
|
|
else()
|
|
|
-
|
|
|
- CMAKE_PARSE_ARGUMENTS(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN})
|
|
|
+ cmake_parse_arguments(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN})
|
|
|
|
|
|
if(FPHSA_UNPARSED_ARGUMENTS)
|
|
|
message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"")
|
|
|
@@ -198,6 +198,18 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
|
|
|
if(NOT FPHSA_FAIL_MESSAGE)
|
|
|
set(FPHSA_FAIL_MESSAGE "DEFAULT_MSG")
|
|
|
endif()
|
|
|
+
|
|
|
+ # In config-mode, we rely on the variable <package>_CONFIG, which is set by find_package()
|
|
|
+ # when it successfully found the config-file, including version checking:
|
|
|
+ if(FPHSA_CONFIG_MODE)
|
|
|
+ list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG)
|
|
|
+ list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS)
|
|
|
+ set(FPHSA_VERSION_VAR ${_NAME}_VERSION)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(NOT FPHSA_REQUIRED_VARS)
|
|
|
+ message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()")
|
|
|
+ endif()
|
|
|
endif()
|
|
|
|
|
|
# now that we collected all arguments, process them
|
|
|
@@ -206,18 +218,6 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
|
|
|
set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}")
|
|
|
endif()
|
|
|
|
|
|
- # In config-mode, we rely on the variable <package>_CONFIG, which is set by find_package()
|
|
|
- # when it successfully found the config-file, including version checking:
|
|
|
- if(FPHSA_CONFIG_MODE)
|
|
|
- list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG)
|
|
|
- list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS)
|
|
|
- set(FPHSA_VERSION_VAR ${_NAME}_VERSION)
|
|
|
- endif()
|
|
|
-
|
|
|
- if(NOT FPHSA_REQUIRED_VARS)
|
|
|
- message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()")
|
|
|
- endif()
|
|
|
-
|
|
|
list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR)
|
|
|
|
|
|
string(TOUPPER ${_NAME} _NAME_UPPER)
|
|
|
@@ -289,15 +289,15 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
|
|
|
# version handling:
|
|
|
set(VERSION_MSG "")
|
|
|
set(VERSION_OK TRUE)
|
|
|
- set(VERSION ${${FPHSA_VERSION_VAR}})
|
|
|
|
|
|
# check with DEFINED here as the requested or found version may be "0"
|
|
|
if (DEFINED ${_NAME}_FIND_VERSION)
|
|
|
if(DEFINED ${FPHSA_VERSION_VAR})
|
|
|
+ set(_FOUND_VERSION ${${FPHSA_VERSION_VAR}})
|
|
|
|
|
|
if(${_NAME}_FIND_VERSION_EXACT) # exact version required
|
|
|
# count the dots in the version string
|
|
|
- string(REGEX REPLACE "[^.]" "" _VERSION_DOTS "${VERSION}")
|
|
|
+ string(REGEX REPLACE "[^.]" "" _VERSION_DOTS "${_FOUND_VERSION}")
|
|
|
# add one dot because there is one dot more than there are components
|
|
|
string(LENGTH "${_VERSION_DOTS}." _VERSION_DOTS)
|
|
|
if (_VERSION_DOTS GREATER ${_NAME}_FIND_VERSION_COUNT)
|
|
|
@@ -312,31 +312,31 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
|
|
|
else ()
|
|
|
set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*\\.[^.]*")
|
|
|
endif ()
|
|
|
- string(REGEX REPLACE "^(${_VERSION_REGEX})\\..*" "\\1" _VERSION_HEAD "${VERSION}")
|
|
|
+ string(REGEX REPLACE "^(${_VERSION_REGEX})\\..*" "\\1" _VERSION_HEAD "${_FOUND_VERSION}")
|
|
|
unset(_VERSION_REGEX)
|
|
|
if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _VERSION_HEAD)
|
|
|
- set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
|
|
|
+ set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
|
|
|
set(VERSION_OK FALSE)
|
|
|
else ()
|
|
|
- set(VERSION_MSG "(found suitable exact version \"${VERSION}\")")
|
|
|
+ set(VERSION_MSG "(found suitable exact version \"${_FOUND_VERSION}\")")
|
|
|
endif ()
|
|
|
unset(_VERSION_HEAD)
|
|
|
else ()
|
|
|
if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL VERSION)
|
|
|
- set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
|
|
|
+ set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
|
|
|
set(VERSION_OK FALSE)
|
|
|
else ()
|
|
|
- set(VERSION_MSG "(found suitable exact version \"${VERSION}\")")
|
|
|
+ set(VERSION_MSG "(found suitable exact version \"${_FOUND_VERSION}\")")
|
|
|
endif ()
|
|
|
endif ()
|
|
|
unset(_VERSION_DOTS)
|
|
|
|
|
|
else() # minimum version specified:
|
|
|
- if (${_NAME}_FIND_VERSION VERSION_GREATER VERSION)
|
|
|
- set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"")
|
|
|
+ if (${_NAME}_FIND_VERSION VERSION_GREATER _FOUND_VERSION)
|
|
|
+ set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"")
|
|
|
set(VERSION_OK FALSE)
|
|
|
else ()
|
|
|
- set(VERSION_MSG "(found suitable version \"${VERSION}\", minimum required is \"${${_NAME}_FIND_VERSION}\")")
|
|
|
+ set(VERSION_MSG "(found suitable version \"${_FOUND_VERSION}\", minimum required is \"${${_NAME}_FIND_VERSION}\")")
|
|
|
endif ()
|
|
|
endif()
|
|
|
|
|
|
@@ -351,13 +351,14 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
|
|
|
|
|
|
endif()
|
|
|
else ()
|
|
|
- if(VERSION)
|
|
|
- set(VERSION_MSG "(found version \"${VERSION}\")")
|
|
|
+ # Check with DEFINED as the found version may be 0.
|
|
|
+ if(DEFINED ${FPHSA_VERSION_VAR})
|
|
|
+ set(VERSION_MSG "(found version \"${${FPHSA_VERSION_VAR}}\")")
|
|
|
endif()
|
|
|
endif ()
|
|
|
|
|
|
if(VERSION_OK)
|
|
|
- string(APPEND DETAILS "[v${VERSION}(${${_NAME}_FIND_VERSION})]")
|
|
|
+ string(APPEND DETAILS "[v${${FPHSA_VERSION_VAR}}(${${_NAME}_FIND_VERSION})]")
|
|
|
else()
|
|
|
set(${_NAME}_FOUND FALSE)
|
|
|
endif()
|