[lldb/CMake] Only auto-enable Python when SWIG is found

As correctly pointed out by Martin on the mailing list, Python should
only be auto-enabled if SWIG is found as well. This moves the logic of
finding SWIG into FindPythonInterpAndLibs to make that possible.

To make diagnosing easier I've included a status message to convey why
Python support is disabled.
This commit is contained in:
Jonas Devlieghere 2020-01-07 21:53:33 -08:00
parent adee6454b7
commit fc6f15d4d2
2 changed files with 37 additions and 36 deletions

View File

@ -4,40 +4,47 @@
#
# Find the python interpreter and libraries as a whole.
if(PYTHON_LIBRARIES AND PYTHON_INCLUDE_DIRS AND PYTHON_EXECUTABLE)
if(PYTHON_LIBRARIES AND PYTHON_INCLUDE_DIRS AND PYTHON_EXECUTABLE AND SWIG_EXECUTABLE)
set(PYTHONINTERPANDLIBS_FOUND TRUE)
else()
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
find_package(Python3 COMPONENTS Interpreter Development QUIET)
if (Python3_FOUND AND Python3_Interpreter_FOUND)
set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
set(PYTHON_INCLUDE_DIRS ${Python3_INCLUDE_DIRS})
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
mark_as_advanced(
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE)
endif()
else()
find_package(PythonInterp QUIET)
find_package(PythonLibs QUIET)
if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND)
if (NOT CMAKE_CROSSCOMPILING)
string(REPLACE "." ";" pythonlibs_version_list ${PYTHONLIBS_VERSION_STRING})
list(GET pythonlibs_version_list 0 pythonlibs_major)
list(GET pythonlibs_version_list 1 pythonlibs_minor)
find_package(SWIG 2.0 QUIET)
if (SWIG_FOUND)
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
find_package(Python3 COMPONENTS Interpreter Development QUIET)
if (Python3_FOUND AND Python3_Interpreter_FOUND)
set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
set(PYTHON_INCLUDE_DIRS ${Python3_INCLUDE_DIRS})
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
mark_as_advanced(
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE
SWIG_EXECUTABLE)
endif()
else()
find_package(PythonInterp QUIET)
find_package(PythonLibs QUIET)
if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND AND SWIG_FOUND)
if (NOT CMAKE_CROSSCOMPILING)
string(REPLACE "." ";" pythonlibs_version_list ${PYTHONLIBS_VERSION_STRING})
list(GET pythonlibs_version_list 0 pythonlibs_major)
list(GET pythonlibs_version_list 1 pythonlibs_minor)
# Ignore the patch version. Some versions of macOS report a different
# patch version for the system provided interpreter and libraries.
if (CMAKE_CROSSCOMPILING OR (PYTHON_VERSION_MAJOR VERSION_EQUAL pythonlibs_major AND
PYTHON_VERSION_MINOR VERSION_EQUAL pythonlibs_minor))
mark_as_advanced(
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE)
# Ignore the patch version. Some versions of macOS report a different
# patch version for the system provided interpreter and libraries.
if (CMAKE_CROSSCOMPILING OR (PYTHON_VERSION_MAJOR VERSION_EQUAL pythonlibs_major AND
PYTHON_VERSION_MINOR VERSION_EQUAL pythonlibs_minor))
mark_as_advanced(
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE
SWIG_EXECUTABLE)
endif()
endif()
endif()
endif()
else()
message(STATUS "SWIG 2 or later is required for Python support in LLDB but could not be found")
endif()
include(FindPackageHandleStandardArgs)
@ -47,5 +54,6 @@ else()
REQUIRED_VARS
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE)
PYTHON_EXECUTABLE
SWIG_EXECUTABLE)
endif()

View File

@ -15,12 +15,6 @@ if(LLDB_BUILD_FRAMEWORK)
set(framework_arg --framework --target-platform Darwin)
endif()
find_package(SWIG REQUIRED)
set(SWIG_MIN_VERSION "2.0.0")
if (${SWIG_VERSION} VERSION_LESS ${SWIG_MIN_VERSION})
message(FATAL_ERROR "LLDB requires swig ${SWIG_MIN_VERSION}, your version is ${SWIG_VERSION}.")
endif()
if(APPLE)
set(DARWIN_EXTRAS "-D__APPLE__")
else()
@ -38,7 +32,6 @@ set(SWIG_COMMON_FLAGS
-outdir ${CMAKE_CURRENT_BINARY_DIR}
)
if (LLDB_ENABLE_PYTHON)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp