CMake: set_and_warn_incompatible now warns if arguments are undefined

Previously this caused an error which can happen on other platforms that
don't define the features being checked.
This commit is contained in:
Campbell Barton 2023-10-07 21:22:13 +11:00
parent f3f494fd63
commit f482e5979d
2 changed files with 12 additions and 4 deletions

View File

@ -1142,10 +1142,13 @@ if(UNIX AND NOT (APPLE OR HAIKU))
set_and_warn_incompatible(WITH_HEADLESS WITH_GHOST_X11 OFF)
endif()
set_and_warn_incompatible(WITH_HEADLESS WITH_GHOST_SDL OFF)
set_and_warn_incompatible(WITH_HEADLESS WITH_INPUT_IME OFF)
set_and_warn_incompatible(WITH_HEADLESS WITH_XR_OPENXR OFF)
set_and_warn_incompatible(WITH_GHOST_SDL WITH_INPUT_IME OFF)
if(WIN32 OR APPLE)
set_and_warn_incompatible(WITH_HEADLESS WITH_INPUT_IME OFF)
set_and_warn_incompatible(WITH_GHOST_SDL WITH_INPUT_IME OFF)
endif()
set_and_warn_incompatible(WITH_HEADLESS WITH_XR_OPENXR OFF)
set_and_warn_incompatible(WITH_GHOST_SDL WITH_XR_OPENXR OFF)
if(WITH_BUILDINFO)

View File

@ -1458,7 +1458,12 @@ endmacro()
macro(set_and_warn_incompatible
_dependency _setting _val)
# when $_dependency is enabled, forces $_setting = $_val
if(${${_dependency}} AND ${${_setting}})
# Both should be defined, warn if they're not.
if(NOT DEFINED ${_dependency})
message(STATUS "${_dependency} not defined!")
elseif(NOT DEFINED ${_setting})
message(STATUS "${_setting} not defined!")
elseif(${${_dependency}} AND ${${_setting}})
if(WITH_STRICT_BUILD_OPTIONS)
message(SEND_ERROR "${_dependency} enabled but incompatible with ${_setting}")
else()