[Lldb-commits] [PATCH] D13237: Add a Post-Build Event on Windows to copy the correct custom Python DLL to the LLDB binaries dir

Vadim Macagon via lldb-commits lldb-commits at lists.llvm.org
Tue Sep 29 03:00:54 PDT 2015


enlight created this revision.
enlight added reviewers: brucem, zturner.
enlight added a subscriber: lldb-commits.
enlight set the repository for this revision to rL LLVM.

After a developer builds LLDB from source on Windows (assuming they've built it with Python support enabled), they may be somewhat flustered when it fails to launch with a cryptic error.

{F890625}

This happens because Windows can't find python27.dll (or python27_d.dll in case LLDB was built in debug mode). Many developers may have previously installed a release build of Python 2.7 and will not notice anything is amiss when they run a release build of LLDB because Windows will load the python27.dll from one of the system directories or `PATH` (rather than the one that the LLDB build instructions tell them to build). The issue tends to be more pronounced with debug builds of LLDB, since fewer developers probably have python27_d.dll sitting in one of the Windows system directories.

To ensure Windows loads the correct custom built Python DLL when launching LLDB I've added a post-build event that copies the relevant DLL (based on the LLDB build configuration) from `PYTHON_HOME` to the directory in which the LLDB executable is generated.

Repository:
  rL LLVM

http://reviews.llvm.org/D13237

Files:
  CMakeLists.txt

Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -26,4 +26,17 @@
 
     # Ensure we do the python post-build step when building lldb.
     add_dependencies(lldb finish_swig)
+
+    # Add a Post-Build Event to copy the custom Python DLL to the lldb binaries dir so that Windows can find it when launching
+    # lldb.exe or any other executables that were linked with liblldb.
+    if (WIN32 AND NOT "${PYTHON_DLL}" STREQUAL "")
+        # When using the Visual Studio CMake generator the lldb binaries end up in Release/bin, Debug/bin etc.
+        file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin" LLDB_BIN_DIR)
+        file(TO_NATIVE_PATH "${PYTHON_DLL}" PYTHON_DLL_NATIVE_PATH)
+        add_custom_command(
+            TARGET finish_swig
+            POST_BUILD
+            COMMAND "${CMAKE_COMMAND}" -E copy ${PYTHON_DLL_NATIVE_PATH} ${LLDB_BIN_DIR}
+            COMMENT "Copying Python DLL to LLDB binaries directory.")
+    endif ()
 endif ()


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D13237.35948.patch
Type: text/x-patch
Size: 1050 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20150929/17a43059/attachment.bin>


More information about the lldb-commits mailing list