diff --git a/CMakeLists.txt b/CMakeLists.txt index 89343ad653d..8f19455b6b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1134,17 +1134,16 @@ if(WITH_INSTALL_PORTABLE) set(CMAKE_SKIP_BUILD_RPATH TRUE) endif() -if(WITH_GHOST_SDL OR WITH_HEADLESS) - message(STATUS "Disabling Ghost Wayland, X11, Input IME, and OpenXR") - set(WITH_GHOST_WAYLAND OFF) - set(WITH_GHOST_X11 OFF) - set(WITH_X11_XINPUT OFF) - set(WITH_X11_XF86VMODE OFF) - set(WITH_X11_XFIXES OFF) - set(WITH_GHOST_XDND OFF) - set(WITH_INPUT_IME OFF) - set(WITH_XR_OPENXR OFF) -endif() +set_and_warn_incompatible(WITH_HEADLESS WITH_GHOST_WAYLAND OFF) +set_and_warn_incompatible(WITH_HEADLESS WITH_GHOST_SDL OFF) +set_and_warn_incompatible(WITH_HEADLESS WITH_GHOST_X11 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_GHOST_WAYLAND OFF) +set_and_warn_incompatible(WITH_GHOST_SDL WITH_GHOST_X11 OFF) +set_and_warn_incompatible(WITH_GHOST_SDL WITH_INPUT_IME OFF) +set_and_warn_incompatible(WITH_GHOST_SDL WITH_XR_OPENXR OFF) if(WITH_BUILDINFO) find_package(Git) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 43e5cf946d1..fdd8a0ed6d8 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -1455,6 +1455,19 @@ macro(set_and_warn_dependency endif() endmacro() +macro(set_and_warn_incompatible + _dependency _setting _val) + # when $_dependency is enabled, forces $_setting = $_val + if(${${_dependency}} AND ${${_setting}}) + if(WITH_STRICT_BUILD_OPTIONS) + message(SEND_ERROR "${_dependency} enabled but incompatible with ${_setting}") + else() + message(STATUS "${_dependency} is enabled but incompatible, setting ${_setting}=${_val}") + endif() + set(${_setting} ${_val}) + endif() +endmacro() + macro(set_and_warn_library_found _library_name _library_found _setting) if(((NOT ${_library_found}) OR (NOT ${${_library_found}})) AND ${${_setting}})