From fa59e620126114e35477299dbb726c4e85195276 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Thu, 17 Jul 2014 20:36:14 +0000 Subject: [PATCH] Create an _d suffixed symlink when doing a debug Windows build. _lldb is built as an extension module on Windows. Normally to load an extension module named 'foo', Python would look for the file 'foo.pyd'. However, when a debug interpreter is used, Python will look for the file 'foo_d.pyd'. This change checks the build configuration and creates the correct symlink name based on the build configuration. llvm-svn: 213306 --- lldb/scripts/CMakeLists.txt | 8 -------- lldb/scripts/Python/finishSwigPythonLLDB.py | 9 ++++++++- lldb/scripts/finishSwigWrapperClasses.py | 3 ++- lldb/source/CMakeLists.txt | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lldb/scripts/CMakeLists.txt b/lldb/scripts/CMakeLists.txt index b11f2fc..773a5b7 100644 --- a/lldb/scripts/CMakeLists.txt +++ b/lldb/scripts/CMakeLists.txt @@ -18,14 +18,6 @@ if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION ) # Install the LLDB python module on all operating systems install(SCRIPT lldb_python_module.cmake -DCMAKE_INSTALL_PREFIX=\"${CMAKE_INSTALL_PREFIX}\" -DCMAKE_BUILD_DIR=\"${CMAKE_BUILD_DIR}\") - - # Add a Post-Build Event to copy over Python files and create the symlink to liblldb.so for the Python API(hardlink on Windows) - add_custom_command( TARGET liblldb - POST_BUILD - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/finishSwigWrapperClasses.py - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Python/finishSwigPythonLLDB.py - COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/finishSwigWrapperClasses.py -d "--srcRoot=${LLDB_SOURCE_DIR}" "--targetDir=${CMAKE_CURRENT_BINARY_DIR}" "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}" "--prefix=${CMAKE_BINARY_DIR}" "--cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}" -m - COMMENT "Python script sym-linking LLDB Python API") else () add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp diff --git a/lldb/scripts/Python/finishSwigPythonLLDB.py b/lldb/scripts/Python/finishSwigPythonLLDB.py index a2e35c5..f17b915 100644 --- a/lldb/scripts/Python/finishSwigPythonLLDB.py +++ b/lldb/scripts/Python/finishSwigPythonLLDB.py @@ -235,7 +235,13 @@ def make_symlink_windows( vDictArgs, vstrFrameworkPythonDir, vstrDllName ): strMsg = ""; bDbg = vDictArgs.has_key( "-d" ); - strTarget = vstrDllName + ".pyd"; + strTarget = vstrDllName; + # When importing an extension module using a debug version of python, you + # write, for example, "import foo", but the interpreter searches for + # "foo_d.pyd" + if vDictArgs["--buildConfig"].lower() == "debug": + strTarget += "_d"; + strTarget += ".pyd"; strDLLPath = "%s\\%s" % (vstrFrameworkPythonDir, strTarget); strTarget = os.path.normcase( strDLLPath ); strSrc = ""; @@ -525,6 +531,7 @@ def get_framework_python_dir( vDictArgs ): -m (optional) Specify called from Makefile system. If given locate the LLDBWrapPython.cpp in --srcRoot/source folder else in the --targetDir folder. + --buildConfig The LLDB build configuration (e.g. debug/release). --srcRoot The root of the lldb source tree. --targetDir Where the lldb framework/shared library gets put. --cfgBlddir Where the buildSwigPythonLLDB.py program will diff --git a/lldb/scripts/finishSwigWrapperClasses.py b/lldb/scripts/finishSwigWrapperClasses.py index 8b9552b..0fe7dec 100644 --- a/lldb/scripts/finishSwigWrapperClasses.py +++ b/lldb/scripts/finishSwigWrapperClasses.py @@ -165,13 +165,14 @@ def validate_arguments( vArgv ): nResult = 0; strListArgs = "hdm"; # Format "hiox:" = -h -i -o -x listLongArgs = ["srcRoot=", "targetDir=", "cfgBldDir=", "prefix=", "cmakeBuildConfiguration=", - "argsFile"]; + "argsFile", "buildConfig="]; dictArgReq = { "-h": "o", # o = optional, m = mandatory "-d": "o", "-m": "o", "--srcRoot": "m", "--targetDir": "m", "--cfgBldDir": "o", + "--buildConfig": "m", "--prefix": "o", "--cmakeBuildConfiguration": "o", "--argsFile": "o" }; diff --git a/lldb/source/CMakeLists.txt b/lldb/source/CMakeLists.txt index 1b464a3..c83638f 100644 --- a/lldb/source/CMakeLists.txt +++ b/lldb/source/CMakeLists.txt @@ -335,7 +335,7 @@ if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION ) add_custom_command( TARGET liblldb POST_BUILD DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py - COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py "--srcRoot=${LLDB_SOURCE_DIR}" "--targetDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--prefix=${CMAKE_BINARY_DIR}" "--cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}" -m + COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/finishSwigWrapperClasses.py --buildConfig=${CMAKE_BUILD_TYPE} "--srcRoot=${LLDB_SOURCE_DIR}" "--targetDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}/../scripts" "--prefix=${CMAKE_BINARY_DIR}" "--cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}" -m COMMENT "Python script sym-linking LLDB Python API") endif () endif () -- 2.7.4