summaryrefslogtreecommitdiff
path: root/scripts/Python/modules/readline
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/Python/modules/readline')
-rw-r--r--scripts/Python/modules/readline/Makefile100
-rw-r--r--scripts/Python/modules/readline/readline.cpp34
2 files changed, 29 insertions, 105 deletions
diff --git a/scripts/Python/modules/readline/Makefile b/scripts/Python/modules/readline/Makefile
deleted file mode 100644
index dc0d757bc175..000000000000
--- a/scripts/Python/modules/readline/Makefile
+++ /dev/null
@@ -1,100 +0,0 @@
-##===- scripts/Python/modules/readline/Makefile ------------*- Makefile -*-===##
-#
-# The LLVM Compiler Infrastructure
-#
-# This file is distributed under the University of Illinois Open Source
-# License. See LICENSE.TXT for details.
-#
-##===----------------------------------------------------------------------===##
-
-# Skip this entire Makefile if python is disabled.
-ifeq (,$(findstring -DLLDB_DISABLE_PYTHON,$(CXXFLAGS)))
-
-LEVEL := ../../../../../..
-LLDB_LEVEL := ../../../..
-
-LIBRARYNAME = readline
-
-NO_BUILD_ARCHIVE = 1
-LINK_LIBS_IN_SHARED = 1
-SHARED_LIBRARY = 1
-LOADABLE_MODULE = 1
-
-PYTHON_CONFIG?= python-config
-PYTHON_INC_DIR = $(shell $(PYTHON_CONFIG) --includes)
-
-# Include all archives in the shared lib
-USEDLIBS :=
-
-include $(LLDB_LEVEL)/../../Makefile.config
-
-LINK_COMPONENTS :=
-
-include $(LEVEL)/Makefile.common
-
-# include python headers
-CPP.Flags += $(PYTHON_INC_DIR)
-
-ifeq ($(HOST_OS),Darwin)
- LLVMLibsOptions += -Wl,-all_load
- # set dylib internal version number to llvmCore submission number
- ifdef LLDB_SUBMIT_VERSION
- LLVMLibsOptions += -Wl,-current_version \
- -Wl,$(LLDB_SUBMIT_VERSION).$(LLDB_SUBMIT_SUBVERSION) \
- -Wl,-compatibility_version -Wl,1
- endif
- # extra options to override libtool defaults
- LVMLibsOptions += -F/System/Library/Frameworks -F/System/Library/PrivateFrameworks
- LLVMLibsOptions += -framework Foundation -framework CoreFoundation
- LLVMLibsOptions += -framework CoreServices -framework Carbon -framework Security
- LLVMLibsOptions += -framework DebugSymbols $(PYTHON_BUILD_FLAGS) -lobjc
- # Mac OS X 10.4 and earlier tools do not allow a second -install_name on command line
- DARWIN_VERS := $(shell echo $(TARGET_TRIPLE) | sed 's/.*darwin\([0-9]*\).*/\1/')
- ifneq ($(DARWIN_VERS),8)
- LLVMLibsOptions += -Wl,-install_name \
- -Wl,"@executable_path/../lib/$(LIBRARYNAME)$(SHLIBEXT)"
- endif
-endif
-
-ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux GNU GNU/kFreeBSD))
- # Include everything from the .a's into the shared library.
- ProjLibsOptions := -Wl,--whole-archive $(ProjLibsOptions) \
- -Wl,--no-whole-archive
- # Link in libedit
- # LLVMLibsOptions += -ledit
- LLVMLibsOptions += -Wl,--soname,$(LIBRARYNAME)$(SHLIBEXT)
-endif
-
-ifeq ($(HOST_OS),FreeBSD)
- # Include everything from the .a's into the shared library.
- ProjLibsOptions := -Wl,--whole-archive $(ProjLibsOptions) \
- -Wl,--no-whole-archive
- # Allow unresolved symbols.
- LLVMLibsOptions += -Wl,--allow-shlib-undefined
- # Link in libedit
- # LLVMLibsOptions += -L/usr/local/lib -ledit
-endif
-
-# FIXME: dynamically construct the version from `python -V`
-PYTHON_VERSION:=2.7
-LLDB_PYTHON_MODULE_REL_DIR:=python$(PYTHON_VERSION)/site-packages
-LLDB_PYTHON_MODULE_DIR:=$(LibDir)/$(LLDB_PYTHON_MODULE_REL_DIR)
-
-# Target to move readline module from shared lib build location to
-# local python module directory.
-all-local:: $(LLDB_PYTHON_MODULE_DIR)/$(LIBRARYNAME)$(SHLIBEXT)
-
-$(LLDB_PYTHON_MODULE_DIR)/$(LIBRARYNAME)$(SHLIBEXT): $(SharedLibDir)/$(LIBRARYNAME)$(SHLIBEXT)
- $(Echo) Staging $(BuildMode) $(LIBRARYNAME)$(SHLIBEXT) to $(LLDB_PYTHON_MODULE_DIR)
- $(Verb) $(MKDIR) "$(LLDB_PYTHON_MODULE_DIR)"
- $(Verb) $(ProgInstall) $(SharedLibDir)/$(LIBRARYNAME)$(SHLIBEXT) $(LLDB_PYTHON_MODULE_DIR)
-
-# Target to move the shared library from the build python lib dir to
-# the install python lib dir.
-install-local:: $(LLDB_PYTHON_MODULE_DIR)/$(LIBRARYNAME)$(SHLIBEXT)
- $(Echo) Installing $(BuildMode) $(LLDB_PYTHON_MODULE_DIR)/$(LIBRARYNAME)$(SHLIBEXT) to $(DESTDIR)$(prefix)/lib/$(LLDB_PYTHON_MODULE_REL_DIR)
- $(Verb) $(MKDIR) "$(DESTDIR)$(prefix)/lib/$(LLDB_PYTHON_MODULE_REL_DIR)"
- $(Verb) $(ProgInstall) "$(LLDB_PYTHON_MODULE_DIR)/$(LIBRARYNAME)$(SHLIBEXT)" "$(DESTDIR)$(prefix)/lib/$(LLDB_PYTHON_MODULE_REL_DIR)"
- $(Verb) $(RM) "$(DESTDIR)$(prefix)/lib/$(LIBRARYNAME)$(SHLIBEXT)"
-
-endif # if !defined(LLDB_DISABLE_PYTHON)
diff --git a/scripts/Python/modules/readline/readline.cpp b/scripts/Python/modules/readline/readline.cpp
index d66ccf4b6b7d..d4b4962cc313 100644
--- a/scripts/Python/modules/readline/readline.cpp
+++ b/scripts/Python/modules/readline/readline.cpp
@@ -20,11 +20,6 @@
// work around LLVM pr18841 to avoid seg faults in the stock Python
// readline.so linked against GNU readline.
-static struct PyMethodDef moduleMethods[] =
-{
- {nullptr, nullptr, 0, nullptr}
-};
-
#ifndef LLDB_DISABLE_LIBEDIT
PyDoc_STRVAR(
moduleDocumentation,
@@ -35,9 +30,33 @@ PyDoc_STRVAR(
"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;
@@ -67,10 +86,15 @@ 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<PyObject *>(NULL),
PYTHON_API_VERSION);
+#endif
}