Skip to content
Snippets Groups Projects
Commit 0665d909 authored by Daniel Schürmann's avatar Daniel Schürmann Committed by Brad King
Browse files

CMakeDependentOption: Allow parentheses in the depends string

`if()` takes the condition as a list of arguments.
Parentheses need to be separated as well.

Fixes: #22303
parent 0d3ddb17
No related branches found
No related tags found
1 merge request!6225CMakeDependentOption: Allow parentheses in the depends string
Pipeline #233115 waiting for manual action
......@@ -42,7 +42,10 @@ macro(CMAKE_DEPENDENT_OPTION option doc default depends force)
if(${option}_ISSET MATCHES "^${option}_ISSET$")
set(${option}_AVAILABLE 1)
foreach(d ${depends})
string(REGEX REPLACE " +" ";" CMAKE_DEPENDENT_OPTION_DEP "${d}")
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)
if(${CMAKE_DEPENDENT_OPTION_DEP})
else()
set(${option}_AVAILABLE 0)
......
-- USE_FOO='ON'
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}'")
include(RunCMake)
run_cmake_script(Parentheses)
......@@ -233,6 +233,7 @@ add_RunCMake_test(BuildDepends
if(UNIX AND "${CMAKE_GENERATOR}" MATCHES "Unix Makefiles|Ninja")
add_RunCMake_test(Byproducts)
endif()
add_RunCMake_test(CMakeDependentOption)
add_RunCMake_test(CMakeRoleGlobalProperty)
add_RunCMake_test(CMakeRelease -DCMake_TEST_JQ=${CMake_TEST_JQ})
if(UNIX AND "${CMAKE_GENERATOR}" MATCHES "Unix Makefiles|Ninja")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment