FPHSA: don't succeed if only checking for XX_FOUND (#13755)

This fixes issue #13755.
FPHSA(XX DEFAULT_MSG XX_FOUND)
always succeeded due to the way how the XX_FOUND variable was set.
It was preset to TRUE, and then reset to FALSE if something was missing
(...which had the effect that XX_FOUND itself was already preset when FPHSA
checked whether XX_FOUND is set)

Now XX_FOUND is unset first, and only later on set to TRUE.

Alex
This commit is contained in:
Alex Neundorf 2012-11-29 09:21:18 +01:00
parent d5ac791366
commit 4809cadfe8
1 changed files with 4 additions and 1 deletions

View File

@ -187,8 +187,8 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
# user knows better what went wrong (#6375)
set(MISSING_VARS "")
set(DETAILS "")
set(${_NAME_UPPER}_FOUND TRUE)
# check if all passed variables are valid
unset(${_NAME_UPPER}_FOUND)
foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS})
if(NOT ${_CURRENT_VAR})
set(${_NAME_UPPER}_FOUND FALSE)
@ -197,6 +197,9 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
set(DETAILS "${DETAILS}[${${_CURRENT_VAR}}]")
endif()
endforeach()
if(NOT "${${_NAME_UPPER}_FOUND}" STREQUAL "FALSE")
set(${_NAME_UPPER}_FOUND TRUE)
endif()
# component handling
unset(FOUND_COMPONENTS_MSG)