Browse Source

CMake: Improve reporting of enabled-but-not-found packages

Fixes #1072 (together with 3786dc2aeaaf09479e12a590ab426a770f18fdb5)
rdb 5 years ago
parent
commit
dfc5b47ec9
2 changed files with 15 additions and 3 deletions
  1. 12 2
      cmake/macros/PackageConfig.cmake
  2. 3 1
      dtool/LocalSetup.cmake

+ 12 - 2
cmake/macros/PackageConfig.cmake

@@ -167,6 +167,12 @@ function(package_option name)
 
   set(PANDA_PACKAGE_DEFAULT_${name} "${default}" PARENT_SCOPE)
 
+  if(${found_as}_FOUND OR ${FOUND_AS}_FOUND)
+    set(PANDA_PACKAGE_FOUND_${name} ON PARENT_SCOPE)
+  else()
+    set(PANDA_PACKAGE_FOUND_${name} OFF PARENT_SCOPE)
+  endif()
+
   # Create the INTERFACE library used to depend on this package.
   add_library(PKG::${name} INTERFACE IMPORTED GLOBAL)
 
@@ -279,15 +285,19 @@ function(show_packages)
   foreach(package ${_ALL_CONFIG_PACKAGES})
     set(desc "${PANDA_PACKAGE_DESC_${package}}")
     set(note "${PANDA_PACKAGE_NOTE_${package}}")
-    if(HAVE_${package})
+
+    if(HAVE_${package} AND PANDA_PACKAGE_FOUND_${package})
       if(NOT note STREQUAL "")
         message("+ ${desc} (${note})")
       else()
         message("+ ${desc}")
       endif()
 
+    elseif(HAVE_${package})
+      message("! ${desc} (enabled but not found)")
+
     else()
-      if(NOT ${package}_FOUND)
+      if(NOT PANDA_PACKAGE_FOUND_${package})
         set(reason "not found")
       elseif(NOT PANDA_PACKAGE_DEFAULT_${package})
         set(reason "not requested")

+ 3 - 1
dtool/LocalSetup.cmake

@@ -169,7 +169,9 @@ endif()
 show_packages()
 
 message("")
-if(INTERROGATE_PYTHON_INTERFACE)
+if(HAVE_PYTHON AND NOT PYTHON_FOUND)
+  message(SEND_ERROR "Configured Panda with Python bindings, but no Python library found.  Disable HAVE_PYTHON to continue.")
+elseif(INTERROGATE_PYTHON_INTERFACE)
   message("Compilation will generate Python interfaces for Python ${PYTHON_VERSION_STRING}.")
 else()
   message("Configuring Panda WITHOUT Python interfaces.")