diff options
author | Todd Fiala <todd.fiala@gmail.com> | 2015-11-18 08:52:33 +0000 |
---|---|---|
committer | Todd Fiala <todd.fiala@gmail.com> | 2015-11-18 08:52:33 +0000 |
commit | d434a1d3e05eeda059ae82ad80fa6eb938bbff1a (patch) | |
tree | 47af6efc05b40577e1e9f3eceec539fc0305a4c2 /lldb/scripts/prepare_bindings.py | |
parent | 5574730454e82f0e866e633a301f1a86fd6a7b86 (diff) | |
download | bcm5719-llvm-d434a1d3e05eeda059ae82ad80fa6eb938bbff1a.tar.gz bcm5719-llvm-d434a1d3e05eeda059ae82ad80fa6eb938bbff1a.zip |
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.
llvm-svn: 253448
Diffstat (limited to 'lldb/scripts/prepare_bindings.py')
-rwxr-xr-x | lldb/scripts/prepare_bindings.py | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/lldb/scripts/prepare_bindings.py b/lldb/scripts/prepare_bindings.py index 287f2007e7f..e9142348245 100755 --- a/lldb/scripts/prepare_bindings.py +++ b/lldb/scripts/prepare_bindings.py @@ -158,6 +158,19 @@ def process_args(args): "Specifies the build dir where the language binding " "should be placed")) + group = parser.add_argument_group("static binding usage") + group.add_argument( + "--allow-static-binding", + action="store_true", + help=( + "Specify the pre-baked binding can be used if " + "swig cannot be found.")) + group.add_argument( + "--static-binding-dir", + default="static-binding", + help="script-relative directory for appropriate static bindings" + ) + # Process args. options = parser.parse_args(args) @@ -196,9 +209,14 @@ def find_file_in_paths(paths, exe_basename): return None -def find_swig_executable(options): +def find_swig_executable(options, must_exist): """Finds the swig executable in the PATH or known good locations. + :param options the command line options returned by argparse. + + :param must_exist if True, this method exits the program if + swig is not found; otherwise, always returns whether swig is found. + Replaces options.swig_executable with the full swig executable path. """ # Figure out what we're looking for. @@ -219,20 +237,28 @@ def find_swig_executable(options): # Add in the extra dirs paths_to_check.extend(extra_dirs) if len(paths_to_check) < 1: - logging.error( - "swig executable was not specified, PATH has no " - "contents, and there are no extra directories to search") - sys.exit(-6) + if must_exist: + logging.error( + "swig executable was not specified, PATH has no " + "contents, and there are no extra directories to search") + sys.exit(-6) + else: + logging.info("failed to find swig: no paths available") + return # Find the swig executable options.swig_executable = find_file_in_paths(paths_to_check, exe_basename) if not options.swig_executable or len(options.swig_executable) < 1: - logging.error( - "failed to find exe='%s' in paths='%s'", - exe_basename, - paths_to_check) - sys.exit(-6) - logging.info("found swig executable: %s", options.swig_executable) + if must_exist: + logging.error( + "failed to find exe='%s' in paths='%s'", + exe_basename, + paths_to_check) + sys.exit(-6) + else: + logging.info("%s not found in paths %s", exe_basename, paths_to_check) + else: + logging.info("found swig executable: %s", options.swig_executable) def main(args): @@ -247,7 +273,8 @@ def main(args): # Ensure we have a swig executable. if not options.swig_executable or len(options.swig_executable) == 0: if options.find_swig: - find_swig_executable(options) + must_exist = not options.allow_static_binding + find_swig_executable(options, must_exist) else: logging.error( "The --find-swig option must be specified " |