[Lldb-commits] [PATCH] D64881: [Cmake] Use the modern way to find Python when possible

Jonas Devlieghere via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Jul 17 13:40:25 PDT 2019


JDevlieghere created this revision.
JDevlieghere added reviewers: sgraenitz, labath, xiaobai, amccarth, stella.stamenova, compnerd.
JDevlieghere added a project: LLDB.
Herald added subscribers: abidh, mgorny.

CMake has a much improved way to find the Python interpreter and libraries which guarantees that the interpreter and libraries are the same. However, this functionality is only available in CMake 3.12 and later. This patch changes the CMake logic to use that without bumping the minimum CMake version.

Question for people familiar with CMake on Windows: do you think that FindPython could replace the current logic in find_python_libs_windows? So we could do something like:

  if(NOT CMAKE_VERSION VERSION_LESS "3.12")
    # Use FindPython
  else()
    if (Windows) 
     # use find_python_libs_windows
    else()
     # use PythonInterp / PythonLibs
    endif()
  endif()


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D64881

Files:
  lldb/cmake/modules/LLDBConfig.cmake


Index: lldb/cmake/modules/LLDBConfig.cmake
===================================================================
--- lldb/cmake/modules/LLDBConfig.cmake
+++ lldb/cmake/modules/LLDBConfig.cmake
@@ -185,6 +185,28 @@
   message(STATUS "LLDB Found PythonIncludeDirs: ${PYTHON_INCLUDE_DIR}")
 endfunction(find_python_libs_windows)
 
+function(find_python_libs)
+  if(NOT CMAKE_VERSION VERSION_LESS "3.12")
+    find_package(Python COMPONENTS Interpreter Development)
+    if(Python_FOUND)
+      set(PYTHON_EXECUTABLE          ${Python_EXECUTABLE})
+      set(PYTHON_LIBRARY             ${Python_LIBRARIES})
+      set(PYTHON_INCLUDE_DIR         ${Python_INCLUDE_DIRS})
+      set(PYTHON_VERSION_STRING      ${Python_VERSION})
+      set(PYTHONLIBS_VERSION_STRING  ${Python_VERSION})
+
+      set(PYTHON_EXECUTABLE          ${PYTHON_EXECUTABLE} PARENT_SCOPE)
+      set(PYTHON_LIBRARY             ${PYTHON_LIBRARY} PARENT_SCOPE)
+      set(PYTHON_INCLUDE_DIR         ${PYTHON_INCLUDE_DIR} PARENT_SCOPE)
+      set(PYTHON_VERSION_STRING      ${PYTHON_VERSION_STRING} PARENT_SCOPE)
+      set(PYTHONLIBS_VERSION_STRING  ${PYTHONLIBS_VERSION_STRING} PARENT_SCOPE)
+    endif()
+  else()
+    find_package(PythonInterp REQUIRED)
+    find_package(PythonLibs REQUIRED)
+  endif()
+endfunction(find_python_libs)
+
 if (NOT LLDB_DISABLE_PYTHON)
   if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
     find_python_libs_windows()
@@ -194,8 +216,7 @@
       add_definitions( -DLLDB_PYTHON_HOME="${LLDB_PYTHON_HOME}" )
     endif()
   else()
-    find_package(PythonInterp REQUIRED)
-    find_package(PythonLibs REQUIRED)
+    find_python_libs()
   endif()
 
   if (NOT PYTHON_VERSION_STRING VERSION_EQUAL PYTHONLIBS_VERSION_STRING AND


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64881.210402.patch
Type: text/x-patch
Size: 1717 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20190717/35ccad1c/attachment.bin>


More information about the lldb-commits mailing list