summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2021-07-20 12:11:47 -0400
committerBrad King <brad.king@kitware.com>2021-07-20 12:18:53 -0400
commitd777ca12f60f5da31b59f34605c5eb9f1608756e (patch)
tree36626ec8760f19d61fe025aab2cdb76eb49a1105
parent31ecd3718047874b5eeb939e9608fa1bd386c1a7 (diff)
downloadcmake-d777ca12f60f5da31b59f34605c5eb9f1608756e.tar.gz
CMakeDependentOption: Revert "Allow parentheses in the depends string"
Revert commit 0665d9092e (CMakeDependentOption: Allow parentheses in the depends string, 2021-06-13, v3.21.0-rc1~32^2). It broke existing use cases with parentheses in regular expressions. Also add a test for this. Fixes: #22447
-rw-r--r--Modules/CMakeDependentOption.cmake5
-rw-r--r--Tests/RunCMake/CMakeDependentOption/Parentheses.cmake7
-rw-r--r--Tests/RunCMake/CMakeDependentOption/Regex-stdout.txt (renamed from Tests/RunCMake/CMakeDependentOption/Parentheses-stdout.txt)0
-rw-r--r--Tests/RunCMake/CMakeDependentOption/Regex.cmake5
-rw-r--r--Tests/RunCMake/CMakeDependentOption/RunCMakeTest.cmake2
5 files changed, 7 insertions, 12 deletions
diff --git a/Modules/CMakeDependentOption.cmake b/Modules/CMakeDependentOption.cmake
index 0a291f24fb..96855d28f1 100644
--- a/Modules/CMakeDependentOption.cmake
+++ b/Modules/CMakeDependentOption.cmake
@@ -42,10 +42,7 @@ macro(CMAKE_DEPENDENT_OPTION option doc default depends force)
if(${option}_ISSET MATCHES "^${option}_ISSET$")
set(${option}_AVAILABLE 1)
foreach(d ${depends})
- string(REPLACE "(" " ( " _CMAKE_CDO_DEP "${d}")
- string(REPLACE ")" " ) " _CMAKE_CDO_DEP "${_CMAKE_CDO_DEP}")
- string(REGEX REPLACE " +" ";" CMAKE_DEPENDENT_OPTION_DEP "${_CMAKE_CDO_DEP}")
- unset(_CMAKE_CDO_DEP)
+ string(REGEX REPLACE " +" ";" CMAKE_DEPENDENT_OPTION_DEP "${d}")
if(${CMAKE_DEPENDENT_OPTION_DEP})
else()
set(${option}_AVAILABLE 0)
diff --git a/Tests/RunCMake/CMakeDependentOption/Parentheses.cmake b/Tests/RunCMake/CMakeDependentOption/Parentheses.cmake
deleted file mode 100644
index c2951f1dcb..0000000000
--- a/Tests/RunCMake/CMakeDependentOption/Parentheses.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-include(CMakeDependentOption)
-
-set(A 1)
-set(B 1)
-set(C 0)
-cmake_dependent_option(USE_FOO "Use Foo" ON "A AND (B OR C)" OFF)
-message(STATUS "USE_FOO='${USE_FOO}'")
diff --git a/Tests/RunCMake/CMakeDependentOption/Parentheses-stdout.txt b/Tests/RunCMake/CMakeDependentOption/Regex-stdout.txt
index 15b56a10d4..15b56a10d4 100644
--- a/Tests/RunCMake/CMakeDependentOption/Parentheses-stdout.txt
+++ b/Tests/RunCMake/CMakeDependentOption/Regex-stdout.txt
diff --git a/Tests/RunCMake/CMakeDependentOption/Regex.cmake b/Tests/RunCMake/CMakeDependentOption/Regex.cmake
new file mode 100644
index 0000000000..8342a01b7d
--- /dev/null
+++ b/Tests/RunCMake/CMakeDependentOption/Regex.cmake
@@ -0,0 +1,5 @@
+include(CMakeDependentOption)
+
+set(FOO "lower")
+cmake_dependent_option(USE_FOO "Use Foo" ON "FOO MATCHES (UPPER|lower)" OFF)
+message(STATUS "USE_FOO='${USE_FOO}'")
diff --git a/Tests/RunCMake/CMakeDependentOption/RunCMakeTest.cmake b/Tests/RunCMake/CMakeDependentOption/RunCMakeTest.cmake
index bbdd3e5886..e1045f2317 100644
--- a/Tests/RunCMake/CMakeDependentOption/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CMakeDependentOption/RunCMakeTest.cmake
@@ -1,3 +1,3 @@
include(RunCMake)
-run_cmake_script(Parentheses)
+run_cmake_script(Regex)