Index: lldb/trunk/CMakeLists.txt =================================================================== --- lldb/trunk/CMakeLists.txt +++ lldb/trunk/CMakeLists.txt @@ -39,15 +39,19 @@ add_subdirectory(lit) if (NOT LLDB_DISABLE_PYTHON) - # 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_target( finish_swig ALL - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/finishSwigWrapperClasses.py - "--srcRoot=${LLDB_SOURCE_DIR}" - "--targetDir=${LLDB_PYTHON_TARGET_DIR}" - "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}/scripts" - "--prefix=${CMAKE_BINARY_DIR}" - "--cmakeBuildConfiguration=${CMAKE_CFG_INTDIR}" - "--lldbLibDir=lib${LLVM_LIBDIR_SUFFIX}" ${FINISH_EXTRA_ARGS} + # 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_target(finish_swig ALL + COMMAND + ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/finishSwigWrapperClasses.py + --srcRoot=${LLDB_SOURCE_DIR} + --targetDir=${LLDB_PYTHON_TARGET_DIR} + --cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}/scripts + --prefix=${CMAKE_BINARY_DIR} + --cmakeBuildConfiguration=${CMAKE_CFG_INTDIR} + --lldbLibDir=lib${LLVM_LIBDIR_SUFFIX} + ${FINISH_EXTRA_ARGS} + VERBATIM DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/finishSwigWrapperClasses.py DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/scripts/lldb.py COMMENT "Python script sym-linking LLDB Python API") @@ -78,7 +82,7 @@ add_custom_command( TARGET finish_swig POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy ${PYTHON_DLL_NATIVE_PATH} ${LLDB_BIN_DIR} + COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_DLL_NATIVE_PATH} ${LLDB_BIN_DIR} VERBATIM COMMENT "Copying Python DLL to LLDB binaries directory.") endif () endif () Index: lldb/trunk/scripts/CMakeLists.txt =================================================================== --- lldb/trunk/scripts/CMakeLists.txt +++ lldb/trunk/scripts/CMakeLists.txt @@ -35,12 +35,13 @@ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Python/prepare_binding_Python.py DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Python/modify-python-lldb.py COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/prepare_bindings.py - ${framework_arg} - "--srcRoot=${LLDB_SOURCE_DIR}" - "--targetDir=${LLDB_PYTHON_TARGET_DIR}" - "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}" - "--prefix=${CMAKE_BINARY_DIR}" - "--swigExecutable=${SWIG_EXECUTABLE}" + ${framework_arg} + --srcRoot=${LLDB_SOURCE_DIR} + --targetDir=${LLDB_PYTHON_TARGET_DIR} + --cfgBldDir=${CMAKE_CURRENT_BINARY_DIR} + --prefix=${CMAKE_BINARY_DIR} + --swigExecutable=${SWIG_EXECUTABLE} + VERBATIM COMMENT "Python script building LLDB Python wrapper") set_source_files_properties(${LLDB_WRAP_PYTHON} PROPERTIES GENERATED 1) set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/lldb.py PROPERTIES GENERATED 1) Index: lldb/trunk/scripts/Python/prepare_binding_Python.py =================================================================== --- lldb/trunk/scripts/Python/prepare_binding_Python.py +++ lldb/trunk/scripts/Python/prepare_binding_Python.py @@ -196,34 +196,37 @@ temp_dep_file_path = dependency_file + ".tmp" # Build the SWIG args list - command = [ - options.swig_executable, - "-c++", - "-shadow", - "-python", - "-threads", - "-I\"%s\"" % os.path.normcase( - os.path.join(options.src_root, "include")), - "-I\"%s\"" % os.path.normcase("./."), - "-D__STDC_LIMIT_MACROS", - "-D__STDC_CONSTANT_MACROS"] - if options.target_platform == "Darwin": - command.append("-D__APPLE__") - if options.generate_dependency_file: - command.append("-MMD -MF \"%s\"" % temp_dep_file_path) - command.extend([ - "-outdir", "\"%s\"" % config_build_dir, - "-o", "\"%s\"" % settings.output_file, - "\"%s\"" % settings.input_file - ]) - logging.info("running swig with: %s", command) + is_darwin = options.target_platform == "Darwin" + gen_deps = options.generate_dependency_file + darwin_extras = ["-D__APPLE__"] if is_darwin else [] + deps_args = ["-MMD", "-MF", temp_dep_file_path] if gen_deps else [] + command = ([ + options.swig_executable, + "-c++", + "-shadow", + "-python", + "-threads", + "-I" + os.path.normpath(os.path.join(options.src_root, "include")), + "-I" + os.path.curdir, + "-D__STDC_LIMIT_MACROS", + "-D__STDC_CONSTANT_MACROS" + ] + + darwin_extras + + deps_args + + [ + "-outdir", config_build_dir, + "-o", settings.output_file, + settings.input_file + ] + ) + logging.info("running swig with: %r", command) # Execute swig process = subprocess.Popen( - ' '.join(command), + command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, - shell=True) + ) # Wait for SWIG process to terminate swig_stdout, swig_stderr = process.communicate() return_code = process.returncode @@ -265,15 +268,14 @@ the command line arguments to pass to it. """ command = [sys.executable] + script_and_args - command_line = " ".join(command) - process = subprocess.Popen(command, shell=False) + process = subprocess.Popen(command) script_stdout, script_stderr = process.communicate() return_code = process.returncode if return_code != 0: - logging.error("failed to run '%s': %s", command_line, script_stderr) + logging.error("failed to run %r: %r", command, script_stderr) sys.exit(return_code) else: - logging.info("ran script '%s'", command_line) + logging.info("ran script %r'", command) if script_stdout is not None: logging.info("output: %s", script_stdout)