diff options
Diffstat (limited to 'share/cmake-3.10/Modules/CMakeDependentOption.cmake')
-rw-r--r-- | share/cmake-3.10/Modules/CMakeDependentOption.cmake | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/share/cmake-3.10/Modules/CMakeDependentOption.cmake b/share/cmake-3.10/Modules/CMakeDependentOption.cmake new file mode 100644 index 0000000..21d3c96 --- /dev/null +++ b/share/cmake-3.10/Modules/CMakeDependentOption.cmake @@ -0,0 +1,49 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#.rst: +# CMakeDependentOption +# -------------------- +# +# Macro to provide an option dependent on other options. +# +# This macro presents an option to the user only if a set of other +# conditions are true. When the option is not presented a default value +# is used, but any value set by the user is preserved for when the +# option is presented again. Example invocation: +# +# :: +# +# CMAKE_DEPENDENT_OPTION(USE_FOO "Use Foo" ON +# "USE_BAR;NOT USE_ZOT" OFF) +# +# If USE_BAR is true and USE_ZOT is false, this provides an option +# called USE_FOO that defaults to ON. Otherwise, it sets USE_FOO to +# OFF. If the status of USE_BAR or USE_ZOT ever changes, any value for +# the USE_FOO option is saved so that when the option is re-enabled it +# retains its old value. + +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}") + if(${CMAKE_DEPENDENT_OPTION_DEP}) + else() + set(${option}_AVAILABLE 0) + endif() + endforeach() + if(${option}_AVAILABLE) + option(${option} "${doc}" "${default}") + set(${option} "${${option}}" CACHE BOOL "${doc}" FORCE) + else() + if(${option} MATCHES "^${option}$") + else() + set(${option} "${${option}}" CACHE INTERNAL "${doc}") + endif() + set(${option} ${force}) + endif() + else() + set(${option} "${${option}_ISSET}") + endif() +endmacro() |