[Lldb-commits] [lldb] 2c0afac - [lldb/CMake] Add LLDB_PYTHON_VERSION to use Python 2 with CMake > 3.12
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Tue Jun 9 14:12:45 PDT 2020
Author: Jonas Devlieghere
Date: 2020-06-09T14:11:11-07:00
New Revision: 2c0afacada0d1488bc88b1211203ea4fdb0a23e8
URL: https://github.com/llvm/llvm-project/commit/2c0afacada0d1488bc88b1211203ea4fdb0a23e8
DIFF: https://github.com/llvm/llvm-project/commit/2c0afacada0d1488bc88b1211203ea4fdb0a23e8.diff
LOG: [lldb/CMake] Add LLDB_PYTHON_VERSION to use Python 2 with CMake > 3.12
In addition to having the default fallback from Python 3 to Python 2, it
should also be possible to build against Python 2 explicitly. This patch
makes that possible by setting LLDB_PYTHON_VERSION. The variable only
has effect with CMake 3.12 or later.
Differential revision: https://reviews.llvm.org/D81501
Added:
Modified:
lldb/cmake/modules/FindPythonInterpAndLibs.cmake
Removed:
################################################################################
diff --git a/lldb/cmake/modules/FindPythonInterpAndLibs.cmake b/lldb/cmake/modules/FindPythonInterpAndLibs.cmake
index aae82a68bcfd..243e0463f48b 100644
--- a/lldb/cmake/modules/FindPythonInterpAndLibs.cmake
+++ b/lldb/cmake/modules/FindPythonInterpAndLibs.cmake
@@ -4,54 +4,74 @@
#
# Find the python interpreter and libraries as a whole.
+macro(FindPython3)
+ # Use PYTHON_HOME as a hint to find Python 3.
+ set(Python3_ROOT_DIR "${PYTHON_HOME}")
+ find_package(Python3 COMPONENTS Interpreter Development)
+ if(Python3_FOUND AND Python3_Interpreter_FOUND)
+ set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
+ set(PYTHON_INCLUDE_DIRS ${Python3_INCLUDE_DIRS})
+ set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
+
+ # The install name for the Python 3 framework in Xcode is relative to
+ # the framework's location and not the dylib itself.
+ #
+ # @rpath/Python3.framework/Versions/3.x/Python3
+ #
+ # This means that we need to compute the path to the Python3.framework
+ # and use that as the RPATH instead of the usual dylib's directory.
+ #
+ # The check below shouldn't match Homebrew's Python framework as it is
+ # called Python.framework instead of Python3.framework.
+ if (APPLE AND Python3_LIBRARIES MATCHES "Python3.framework")
+ string(FIND "${Python3_LIBRARIES}" "Python3.framework" python_framework_pos)
+ string(SUBSTRING "${Python3_LIBRARIES}" "0" ${python_framework_pos} PYTHON_RPATH)
+ endif()
+
+ set(PYTHON3_FOUND TRUE)
+ mark_as_advanced(
+ PYTHON_LIBRARIES
+ PYTHON_INCLUDE_DIRS
+ PYTHON_EXECUTABLE
+ PYTHON_RPATH
+ SWIG_EXECUTABLE)
+ endif()
+endmacro()
+
+macro(FindPython2)
+ # Use PYTHON_HOME as a hint to find Python 2.
+ set(Python2_ROOT_DIR "${PYTHON_HOME}")
+ find_package(Python2 COMPONENTS Interpreter Development)
+ if(Python2_FOUND AND Python2_Interpreter_FOUND)
+ set(PYTHON_LIBRARIES ${Python2_LIBRARIES})
+ set(PYTHON_INCLUDE_DIRS ${Python2_INCLUDE_DIRS})
+ set(PYTHON_EXECUTABLE ${Python2_EXECUTABLE})
+
+ set(PYTHON2_FOUND TRUE)
+ mark_as_advanced(
+ PYTHON_LIBRARIES
+ PYTHON_INCLUDE_DIRS
+ PYTHON_EXECUTABLE
+ SWIG_EXECUTABLE)
+ endif()
+endmacro()
+
if(PYTHON_LIBRARIES AND PYTHON_INCLUDE_DIRS AND PYTHON_EXECUTABLE AND SWIG_EXECUTABLE)
set(PYTHONINTERPANDLIBS_FOUND TRUE)
else()
find_package(SWIG 2.0)
if (SWIG_FOUND)
if(NOT CMAKE_VERSION VERSION_LESS 3.12)
- # Use PYTHON_HOME as a hint to find Python 3.
- set(Python3_ROOT_DIR "${PYTHON_HOME}")
- find_package(Python3 COMPONENTS Interpreter Development)
- if(Python3_FOUND AND Python3_Interpreter_FOUND)
- set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
- set(PYTHON_INCLUDE_DIRS ${Python3_INCLUDE_DIRS})
- set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
-
- # The install name for the Python 3 framework in Xcode is relative to
- # the framework's location and not the dylib itself.
- #
- # @rpath/Python3.framework/Versions/3.x/Python3
- #
- # This means that we need to compute the path to the Python3.framework
- # and use that as the RPATH instead of the usual dylib's directory.
- #
- # The check below shouldn't match Homebrew's Python framework as it is
- # called Python.framework instead of Python3.framework.
- if (APPLE AND Python3_LIBRARIES MATCHES "Python3.framework")
- string(FIND "${Python3_LIBRARIES}" "Python3.framework" python_framework_pos)
- string(SUBSTRING "${Python3_LIBRARIES}" "0" ${python_framework_pos} PYTHON_RPATH)
+ if (LLDB_PYTHON_VERSION)
+ if (LLDB_PYTHON_VERSION VERSION_EQUAL "2")
+ FindPython2()
+ elseif(LLDB_PYTHON_VERSION VERSION_EQUAL "3")
+ FindPython3()
endif()
-
- mark_as_advanced(
- PYTHON_LIBRARIES
- PYTHON_INCLUDE_DIRS
- PYTHON_EXECUTABLE
- PYTHON_RPATH
- SWIG_EXECUTABLE)
- elseif(NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
- # Use PYTHON_HOME as a hint to find Python 2.
- set(Python2_ROOT_DIR "${PYTHON_HOME}")
- find_package(Python2 COMPONENTS Interpreter Development)
- if(Python2_FOUND AND Python2_Interpreter_FOUND)
- set(PYTHON_LIBRARIES ${Python2_LIBRARIES})
- set(PYTHON_INCLUDE_DIRS ${Python2_INCLUDE_DIRS})
- set(PYTHON_EXECUTABLE ${Python2_EXECUTABLE})
- mark_as_advanced(
- PYTHON_LIBRARIES
- PYTHON_INCLUDE_DIRS
- PYTHON_EXECUTABLE
- SWIG_EXECUTABLE)
+ else()
+ FindPython3()
+ if (NOT PYTHON3_FOUND AND NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
+ FindPython2()
endif()
endif()
else()
More information about the lldb-commits
mailing list