43 lines
1.3 KiB
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
|