diff options
Diffstat (limited to 'scripts/Python/modules')
| -rw-r--r-- | scripts/Python/modules/Makefile | 20 | ||||
| -rw-r--r-- | scripts/Python/modules/readline/Makefile | 100 | ||||
| -rw-r--r-- | scripts/Python/modules/readline/readline.cpp | 34 | 
3 files changed, 29 insertions, 125 deletions
| diff --git a/scripts/Python/modules/Makefile b/scripts/Python/modules/Makefile deleted file mode 100644 index b6989889858d..000000000000 --- a/scripts/Python/modules/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -##===- scripts/Python/modules/Makefile ---------------------*- Makefile -*-===## -# -#                     The LLVM Compiler Infrastructure -# -# This file is distributed under the University of Illinois Open Source -# License. See LICENSE.TXT for details. -# -##===----------------------------------------------------------------------===## - -LLDB_LEVEL := ../../.. -include $(LLDB_LEVEL)/../../Makefile.config - -DIRS:= - -# only build the readline suppression module on Linux, Kfreebsd & Hurd -ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux GNU GNU/kFreeBSD)) -DIRS += readline -endif - -include $(LLDB_LEVEL)/Makefile 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  } | 
