awesome/AutoOption.cmake

43 lines
1.3 KiB
CMake

# Add a new option with default value "auto":
# autoOption(FOOBAR "Support foobar")
#
# To check if FOOBAR support should be enabled, use:
# if(FOOBAR)
#
# If necessary dependencies for FOOBAR are missing, use:
# autoDisable(FOOBAR "Did not find baz")
#
# Example:
# autoOption(FOOBAR "Support foobar")
# if(FOOBAR)
# Check for FOOBAR here.
# if(NOT BAZ_FOUND)
# autoDisable(FOOBAR "Did not find baz")
# endif()
# endif()
function(autoOption name description)
set(${name} AUTO CACHE STRING "${description}")
set_property(CACHE ${name} PROPERTY STRINGS AUTO ON OFF)
if((NOT ${name} STREQUAL ON) AND
(NOT ${name} STREQUAL OFF) AND
(NOT ${name} STREQUAL AUTO))
message(FATAL_ERROR "Value of ${name} must be one of ON/OFF/AUTO, but is ${${name}}")
endif()
endfunction()
function(autoDisable name reason)
message(STATUS "${reason}")
if(${name} STREQUAL AUTO)
message(STATUS "Disabled.")
SET(${name} OFF PARENT_SCOPE)
elseif(${name} STREQUAL ON)
message(SEND_ERROR "Aborting because ${name} was set to ON.")
else()
message(AUTHOR_WARNING "Unexpected value for ${name}: ${${name}}.")
endif()
endfunction()
# vim: filetype=cmake:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80:foldmethod=marker