Skip to content

Commit

Permalink
[lldb/CMake] Only auto-enable Python when SWIG is found
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
JDevlieghere committed Jan 8, 2020
1 parent adee645 commit fc6f15d
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 36 deletions.
66 changes: 37 additions & 29 deletions lldb/cmake/modules/FindPythonInterpAndLibs.cmake
Expand Up @@ -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)
Expand All @@ -47,5 +54,6 @@ else()
REQUIRED_VARS
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE)
PYTHON_EXECUTABLE
SWIG_EXECUTABLE)
endif()
7 changes: 0 additions & 7 deletions lldb/scripts/CMakeLists.txt
Expand Up @@ -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()
Expand All @@ -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
Expand Down

0 comments on commit fc6f15d

Please sign in to comment.