summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Chevrier <marc.chevrier@gmail.com>2020-10-02 14:17:36 (GMT)
committerMarc Chevrier <marc.chevrier@gmail.com>2020-10-02 14:17:36 (GMT)
commit127436192de589416e94cbb40190d906a7c57c0a (patch)
tree5557639d1a6145f53a2fe0c26db8270c630e5276
parent3ec0f9d6209117e768e3d5c02e5d3cc0dc001a16 (diff)
downloadCMake-127436192de589416e94cbb40190d906a7c57c0a.zip
CMake-127436192de589416e94cbb40190d906a7c57c0a.tar.gz
CMake-127436192de589416e94cbb40190d906a7c57c0a.tar.bz2
FindSWIG: Fix syntax error
Add some tests to cover all cases regarding version handling Fixes: #21264
-rw-r--r--Modules/FindSWIG.cmake7
-rw-r--r--Tests/RunCMake/FindSWIG/RunCMakeTest.cmake2
-rw-r--r--Tests/RunCMake/FindSWIG/version-exact.cmake17
-rw-r--r--Tests/RunCMake/FindSWIG/version.cmake6
4 files changed, 31 insertions, 1 deletions
diff --git a/Modules/FindSWIG.cmake b/Modules/FindSWIG.cmake
index f732289..87a3894 100644
--- a/Modules/FindSWIG.cmake
+++ b/Modules/FindSWIG.cmake
@@ -56,8 +56,8 @@ optional Fortran support:
#]=======================================================================]
# compute list of possible names
+unset (_SWIG_NAMES)
if (SWIG_FIND_VERSION_RANGE)
- set (_SWIG_NAMES)
foreach (_SWIG_MAJOR IN ITEMS 4 3 2)
if (_SWIG_MAJOR VERSION_GREATER_EQUAL SWIG_FIND_VERSION_MIN_MAJOR
AND ((SWIG_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND _SWIG_MAJOR VERSION_LESS_EQUAL SWIG_FIND_VERSION_MAX)
@@ -73,10 +73,15 @@ elseif(SWIG_FIND_VERSION)
if (_SWIG_MAJOR VERSION_GREATER_EQUAL SWIG_FIND_VERSION_MAJOR)
list (APPEND _SWIG_NAMES swig${_SWIG_MAJOR}.0)
endif()
+ endforeach()
endif()
else()
set (_SWIG_NAMES swig4.0 swig3.0 swig2.0)
endif()
+if (NOT _SWIG_NAMES)
+ # try to find any version
+ set (_SWIG_NAMES swig4.0 swig3.0 swig2.0)
+endif()
find_program(SWIG_EXECUTABLE NAMES ${_SWIG_NAMES} swig)
diff --git a/Tests/RunCMake/FindSWIG/RunCMakeTest.cmake b/Tests/RunCMake/FindSWIG/RunCMakeTest.cmake
index 6becc3c..2bdf913 100644
--- a/Tests/RunCMake/FindSWIG/RunCMakeTest.cmake
+++ b/Tests/RunCMake/FindSWIG/RunCMakeTest.cmake
@@ -2,4 +2,6 @@ include(RunCMake)
run_cmake(components)
run_cmake(missing-components)
+run_cmake(version)
+run_cmake(version-exact)
run_cmake(version-range)
diff --git a/Tests/RunCMake/FindSWIG/version-exact.cmake b/Tests/RunCMake/FindSWIG/version-exact.cmake
new file mode 100644
index 0000000..ec3651f
--- /dev/null
+++ b/Tests/RunCMake/FindSWIG/version-exact.cmake
@@ -0,0 +1,17 @@
+cmake_minimum_required (VERSION 3.18...3.19)
+
+find_package (SWIG)
+if (NOT SWIG_FOUND)
+ message (FATAL_ERROR "Failed to find SWIG")
+endif()
+
+# clean-up SWIG variables
+unset (SWIG_EXECUTABLE CACHE)
+unset (SWIG_DIR CACHE)
+
+set (version ${SWIG_VERSION})
+
+find_package (SWIG ${SWIG_VERSION} EXACT)
+if (NOT SWIG_FOUND)
+ message (FATAL_ERROR "Failed to find SWIG with version ${version} EXACT")
+endif()
diff --git a/Tests/RunCMake/FindSWIG/version.cmake b/Tests/RunCMake/FindSWIG/version.cmake
new file mode 100644
index 0000000..a4f1c39
--- /dev/null
+++ b/Tests/RunCMake/FindSWIG/version.cmake
@@ -0,0 +1,6 @@
+cmake_minimum_required (VERSION 3.18...3.19)
+
+find_package (SWIG 1.0)
+if (NOT SWIG_FOUND)
+ message (FATAL_ERROR "Failed to find SWIG with version 1.0")
+endif()