Merge pull request #2671 from psychon/auto_option

CMake: Add "AUTO" state for WITH_DBUS and GENERATE_MANPAGES
This commit is contained in:
mergify[bot] 2019-02-19 18:50:43 +00:00 committed by GitHub
commit 799650d887
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 6 deletions

42
AutoOption.cmake Normal file
View File

@ -0,0 +1,42 @@
# 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

View File

@ -6,8 +6,10 @@ set(VERSION devel)
set(CODENAME "Too long") set(CODENAME "Too long")
option(WITH_DBUS "build with D-BUS" ON) include(AutoOption.cmake)
option(GENERATE_MANPAGES "generate manpages" ON)
autoOption(WITH_DBUS "build with D-BUS")
autoOption(GENERATE_MANPAGES "generate manpages")
option(COMPRESS_MANPAGES "compress manpages" ON) option(COMPRESS_MANPAGES "compress manpages" ON)
option(GENERATE_DOC "generate API documentation" ON) option(GENERATE_DOC "generate API documentation" ON)
option(DO_COVERAGE "build with coverage" OFF) option(DO_COVERAGE "build with coverage" OFF)
@ -79,8 +81,7 @@ if(GENERATE_MANPAGES)
SET(missing ${missing} " gzip") SET(missing ${missing} " gzip")
endif() endif()
message(STATUS "Not generating manpages. Missing: " ${missing}) autoDisable(GENERATE_MANPAGES "Not generating manpages. Missing: " ${missing})
set(GENERATE_MANPAGES OFF)
endif() endif()
endif() endif()
# }}} # }}}
@ -209,8 +210,7 @@ if(WITH_DBUS)
set(AWESOME_OPTIONAL_LDFLAGS ${AWESOME_OPTIONAL_LDFLAGS} ${DBUS_LDFLAGS}) set(AWESOME_OPTIONAL_LDFLAGS ${AWESOME_OPTIONAL_LDFLAGS} ${DBUS_LDFLAGS})
set(AWESOME_OPTIONAL_INCLUDE_DIRS ${AWESOME_OPTIONAL_INCLUDE_DIRS} ${DBUS_INCLUDE_DIRS}) set(AWESOME_OPTIONAL_INCLUDE_DIRS ${AWESOME_OPTIONAL_INCLUDE_DIRS} ${DBUS_INCLUDE_DIRS})
else() else()
set(WITH_DBUS OFF) autoDisable(WITH_DBUS "DBus not found.")
message(STATUS "DBUS not found. Disabled.")
endif() endif()
endif() endif()
# }}} # }}}