From f482e5979d441ff26015c8741c6a2c4b5ef21ea7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 7 Oct 2023 21:22:13 +1100 Subject: [PATCH] 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. --- CMakeLists.txt | 9 ++++++--- build_files/cmake/macros.cmake | 7 ++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c349db873ee..e791a63d47a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 148b1de9d58..cd576796ac5 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -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()