Browse Source

FPHSA: fix when requested or found version is exactly 0

Until now it was checked with "if(VAR)", which will be false in case "0" is the
content of the variable.
Rolf Eike Beer 11 years ago
parent
commit
ba907f7dc2

+ 4 - 3
Modules/FindPackageHandleStandardArgs.cmake

@@ -284,10 +284,11 @@ function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
   # version handling:
   set(VERSION_MSG "")
   set(VERSION_OK TRUE)
-  set(VERSION ${${FPHSA_VERSION_VAR}} )
-  if (${_NAME}_FIND_VERSION)
+  set(VERSION ${${FPHSA_VERSION_VAR}})
 
-    if(VERSION)
+  # check with DEFINED here as the requested or found version may be "0"
+  if (DEFINED ${_NAME}_FIND_VERSION)
+    if(DEFINED ${FPHSA_VERSION_VAR})
 
       if(${_NAME}_FIND_VERSION_EXACT)       # exact version required
         # count the dots in the version string

+ 5 - 0
Tests/RunCMake/FPHSA/RunCMakeTest.cmake

@@ -14,6 +14,7 @@ run_cmake(exact_1.2.3)
 run_cmake(exact_1.2.3.4)
 
 # now test every component with an invalid version
+run_cmake(exact_0)
 run_cmake(exact_2)
 run_cmake(exact_1.1)
 run_cmake(exact_1.3)
@@ -21,3 +22,7 @@ run_cmake(exact_1.2.2)
 run_cmake(exact_1.2.4)
 run_cmake(exact_1.2.3.3)
 run_cmake(exact_1.2.3.5)
+
+# check if searching for a version 0 works
+list(APPEND RunCMake_TEST_OPTIONS "-DCMAKE_MODULE_PATH=${CMAKE_CURRENT_LIST_DIR}" "-DPseudo_VERSION=0")
+run_cmake(exact_0_matching)

+ 1 - 0
Tests/RunCMake/FPHSA/exact_0-result.txt

@@ -0,0 +1 @@
+1

+ 1 - 0
Tests/RunCMake/FPHSA/exact_0.cmake

@@ -0,0 +1 @@
+find_package(Pseudo 0 EXACT REQUIRED)

+ 1 - 0
Tests/RunCMake/FPHSA/exact_0_matching.cmake

@@ -0,0 +1 @@
+find_package(Pseudo 0 EXACT REQUIRED)