conky/cmake/DependentOption.cmake

37 lines
1.2 KiB
CMake

# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
DependentOption
--------------------
Roughly based on CMakeDependentOption:
https://github.com/Kitware/CMake/blob/master/Modules/CMakeDependentOption.cmake
Modified to so it produces warnings instead of hiding an option completely and
sets a default value.
Argument meaning and order are the same, and there's an additional (warn)
argument which is the message printed if the end-user enabled a feature which
isn't "possible".
#]=======================================================================]
macro(DEPENDENT_OPTION option doc default depends else warn)
set(${option}_POSSIBLE 1)
foreach(d ${depends})
cmake_language(EVAL CODE "
if (${d})
else()
set(${option}_POSSIBLE 0)
endif()"
)
endforeach()
option(${option} "${doc}" "${default}")
if(NOT ${option}_POSSIBLE)
if(NOT ${option} MATCHES ${else})
message(NOTICE "${warn}; setting to '${else}'.")
endif()
set(${option} ${else} CACHE BOOL "${doc}" FORCE)
endif()
unset(${option}_POSSIBLE)
endmacro()