OSDN Git Service

[CMake] Detecting python modules should be cached
authorChris Bieneman <chris.bieneman@me.com>
Tue, 7 May 2019 21:46:55 +0000 (21:46 +0000)
committerChris Bieneman <chris.bieneman@me.com>
Tue, 7 May 2019 21:46:55 +0000 (21:46 +0000)
Summary: This requres exec-ing python, which in a trace I ran of the CMake re-configure time took ~2% of the reconfigure time.

Reviewers: phosek, smeenai, compnerd

Subscribers: mgorny, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D61402

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@360196 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/config-ix.cmake

index 5bf301f..66c7382 100644 (file)
@@ -606,16 +606,19 @@ function(find_python_module module)
   string(REPLACE "." "_" module_name ${module})
   string(TOUPPER ${module_name} module_upper)
   set(FOUND_VAR PY_${module_upper}_FOUND)
+  if (DEFINED ${FOUND_VAR})
+    return()
+  endif()
 
   execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" "import ${module}"
     RESULT_VARIABLE status
     ERROR_QUIET)
 
   if(status)
-    set(${FOUND_VAR} 0 PARENT_SCOPE)
+    set(${FOUND_VAR} OFF CACHE BOOL "Failed to find python module '${module}'")
     message(STATUS "Could NOT find Python module ${module}")
   else()
-    set(${FOUND_VAR} 1 PARENT_SCOPE)
+  set(${FOUND_VAR} ON CACHE BOOL "Found python module '${module}'")
     message(STATUS "Found Python module ${module}")
   endif()
 endfunction()