Author: tfiala Date: Wed Nov 18 02:52:33 2015 New Revision: 253448 URL: http://llvm.org/viewvc/llvm-project?rev=253448&view=rev Log: prepare_bindings.py: enable static bindings
Added a new flag, --allow-static-binding. When specified, if (and only if) the swig binary cannot be found, then the LLDBWrapPython.cpp and lldb.py from the scripts/Python/{static-binding-dir} are copied into the place where swig would have generated them. {static-binding-dir} defaults to static-binding, and can be overridden with the --static-binding-dir command line argument. The static bindings checked in are from r253424. Added: lldb/trunk/scripts/Python/static-binding/ lldb/trunk/scripts/Python/static-binding/LLDBWrapPython.cpp lldb/trunk/scripts/Python/static-binding/lldb.py Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj lldb/trunk/scripts/Python/prepare_binding_Python.py lldb/trunk/scripts/prepare_bindings.py Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=253448&r1=253447&r2=253448&view=diff ============================================================================== --- lldb/trunk/lldb.xcodeproj/project.pbxproj (original) +++ lldb/trunk/lldb.xcodeproj/project.pbxproj Wed Nov 18 02:52:33 2015 @@ -6226,7 +6226,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/bash; - shellScript = "/usr/bin/python $SRCROOT/scripts/prepare_bindings.py --find-swig --framework --src-root $SRCROOT --target-dir $TARGET_BUILD_DIR --config-build-dir $CONFIGURATION_BUILD_DIR"; + shellScript = "/usr/bin/python $SRCROOT/scripts/prepare_bindings.py --find-swig --framework --src-root $SRCROOT --target-dir $TARGET_BUILD_DIR --config-build-dir $CONFIGURATION_BUILD_DIR --allow-static-binding"; }; 4959511A1A1ACE9500F6F8FC /* Install Clang compiler headers */ = { isa = PBXShellScriptBuildPhase; Modified: lldb/trunk/scripts/Python/prepare_binding_Python.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/Python/prepare_binding_Python.py?rev=253448&r1=253447&r2=253448&view=diff ============================================================================== --- lldb/trunk/scripts/Python/prepare_binding_Python.py (original) +++ lldb/trunk/scripts/Python/prepare_binding_Python.py Wed Nov 18 02:52:33 2015 @@ -251,6 +251,42 @@ def do_swig_rebuild(options, dependency_ sys.exit(-10) +def copy_static_bindings(options, config_build_dir, settings): + """Copies the static Python bindings over to the build dir. + """ + + # Copy the LLDBWrapPython.cpp C++ binding file impl over. + lldb_wrap_python_src_path = os.path.join( + options.src_root, + "scripts", + "Python", + options.static_binding_dir, + "LLDBWrapPython.cpp") + if not os.path.exists(lldb_wrap_python_src_path): + logging.error( + "failed to find static Python binding .cpp file at '%s'", + lldb_wrap_python_src_path) + sys.exit(-12) + shutil.copyfile(lldb_wrap_python_src_path, settings.output_file) + + # Copy the lldb.py impl over. + lldb_py_src_path = os.path.join( + options.src_root, + "scripts", + "Python", + options.static_binding_dir, + "lldb.py") + if not os.path.exists(lldb_py_src_path): + logging.error( + "failed to find static Python binding .py file at '%s'", + lldb_py_src_path) + sys.exit(-13) + lldb_py_dest_path = os.path.join( + os.path.dirname(settings.output_file), + "lldb.py") + shutil.copyfile(lldb_py_src_path, lldb_py_dest_path) + + def run_python_script(script_and_args): """Runs a python script, logging appropriately. @@ -418,14 +454,21 @@ def main(options): "Skipping Python binding generation: everything is up to date") return - # Generate the Python binding with swig. - logging.info("Python binding is out of date, regenerating") - do_swig_rebuild(options, dependency_file, config_build_dir, settings) - if options.generate_dependency_file: - return + # Generate the Python binding with swig, or use the static bindings if no swig. + if not options.swig_executable or not os.path.exists(options.swig_executable): + # Copy over the static bindings. We capture the the modified (i.e. post-processed) + # binding, so we don't do the modify step here - the modifications have + # already been applied. + copy_static_bindings(options, config_build_dir, settings) + else: + # Generate the bindings with swig. + logging.info("Python binding is out of date, regenerating") + do_swig_rebuild(options, dependency_file, config_build_dir, settings) + if options.generate_dependency_file: + return - # Post process the swig-generated file. - do_modify_python_lldb(options, config_build_dir) + # Post process the swig-generated file. + do_modify_python_lldb(options, config_build_dir) # This script can be called by another Python script by calling the main() _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits