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")
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 ()
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)
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
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)