Index: lldb/trunk/scripts/CMakeLists.txt =================================================================== --- lldb/trunk/scripts/CMakeLists.txt +++ lldb/trunk/scripts/CMakeLists.txt @@ -52,6 +52,3 @@ # Install the LLDB python module install(DIRECTORY ${SWIG_PYTHON_DIR} DESTINATION ${SWIG_INSTALL_DIR}) endif() - -# build Python modules -add_subdirectory(Python/modules) Index: lldb/trunk/scripts/Python/modules/CMakeLists.txt =================================================================== --- lldb/trunk/scripts/Python/modules/CMakeLists.txt +++ lldb/trunk/scripts/Python/modules/CMakeLists.txt @@ -1,11 +0,0 @@ -# Disable some warnings triggered by Python's headers. -check_cxx_compiler_flag("-Wno-macro-redefined" - CXX_SUPPORTS_NO_MACRO_REDEFINED) -if (CXX_SUPPORTS_NO_MACRO_REDEFINED) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-macro-redefined") -endif () - -# build the Python readline suppression module only on Linux -if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "GNU" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "kFreeBSD") - add_subdirectory(readline) -endif() Index: lldb/trunk/scripts/Python/modules/readline/CMakeLists.txt =================================================================== --- lldb/trunk/scripts/Python/modules/readline/CMakeLists.txt +++ lldb/trunk/scripts/Python/modules/readline/CMakeLists.txt @@ -1,27 +0,0 @@ -# FIXME: if a non-standard version of python is requested, the cmake macro -# below will need Python_ADDITIONAL_VERSIONS set in order to find it. -include(FindPythonInterp) -SET(PYTHON_DIRECTORY python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages) - -# Build the readline python module -include_directories(${PYTHON_INCLUDE_DIR}) -add_library(readline SHARED readline.cpp) -target_link_libraries(readline ${PYTHON_LIBRARY}) - -if (NOT LLDB_DISABLE_LIBEDIT) - target_include_directories(readline - PRIVATE - ${libedit_INCLUDE_DIRS}) - target_link_libraries(readline ${libedit_LIBRARIES}) -endif() - -# FIXME: the LIBRARY_OUTPUT_PATH seems to be ignored - this is not a -# functional issue for the build dir, though, since the shared lib dir -# for the build is in the python shared library load path, and thus -# python finds it when loading the python readline module. -set_target_properties(readline PROPERTIES - PREFIX "" - LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/${PYTHON_DIRECTORY}) - -# Install the readline module. -install(TARGETS readline LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}/${PYTHON_DIRECTORY}) Index: lldb/trunk/scripts/Python/modules/readline/readline.cpp =================================================================== --- lldb/trunk/scripts/Python/modules/readline/readline.cpp +++ lldb/trunk/scripts/Python/modules/readline/readline.cpp @@ -1,87 +0,0 @@ -// NOTE: Since Python may define some pre-processor definitions which affect the -// standard headers on some systems, you must include Python.h before any -// standard headers are included. -#include "Python.h" - -#include - -#ifndef LLDB_DISABLE_LIBEDIT -#include -#endif - -// Simple implementation of the Python readline module using libedit. -// In the event that libedit is excluded from the build, this turns -// back into a null implementation that blocks the module from pulling -// in the GNU readline shared lib, which causes linkage confusion when -// both readline and libedit's readline compatibility symbols collide. -// -// Currently it only installs a PyOS_ReadlineFunctionPointer, without -// implementing any of the readline module methods. This is meant to -// work around LLVM pr18841 to avoid seg faults in the stock Python -// readline.so linked against GNU readline. - -#ifndef LLDB_DISABLE_LIBEDIT -PyDoc_STRVAR(moduleDocumentation, - "Simple readline module implementation based on libedit."); -#else -PyDoc_STRVAR(moduleDocumentation, - "Stub module meant to avoid linking GNU readline."); -#endif - -#if PY_MAJOR_VERSION >= 3 -static struct PyModuleDef readline_module = { - PyModuleDef_HEAD_INIT, // m_base - "readline", // m_name - moduleDocumentation, // m_doc - -1, // m_size - nullptr, // m_methods - nullptr, // m_reload - nullptr, // m_traverse - nullptr, // m_clear - nullptr, // m_free -}; -#else -static struct PyMethodDef moduleMethods[] = {{nullptr, nullptr, 0, nullptr}}; -#endif - -#ifndef LLDB_DISABLE_LIBEDIT -static char * -#if PY_MAJOR_VERSION >= 3 -simple_readline(FILE *stdin, FILE *stdout, const char *prompt) -#else -simple_readline(FILE *stdin, FILE *stdout, char *prompt) -#endif -{ - rl_instream = stdin; - rl_outstream = stdout; - char *line = readline(prompt); - if (!line) { - char *ret = (char *)PyMem_Malloc(1); - if (ret != NULL) - *ret = '\0'; - return ret; - } - if (*line) - add_history(line); - int n = strlen(line); - char *ret = (char *)PyMem_Malloc(n + 2); - strncpy(ret, line, n); - free(line); - ret[n] = '\n'; - ret[n + 1] = '\0'; - return ret; -} -#endif - -PyMODINIT_FUNC initreadline(void) { -#ifndef LLDB_DISABLE_LIBEDIT - PyOS_ReadlineFunctionPointer = simple_readline; -#endif - -#if PY_MAJOR_VERSION >= 3 - return PyModule_Create(&readline_module); -#else - Py_InitModule4("readline", moduleMethods, moduleDocumentation, - static_cast(NULL), PYTHON_API_VERSION); -#endif -}