summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/prepare_bindings.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/scripts/prepare_bindings.py')
-rwxr-xr-xlldb/scripts/prepare_bindings.py217
1 files changed, 0 insertions, 217 deletions
diff --git a/lldb/scripts/prepare_bindings.py b/lldb/scripts/prepare_bindings.py
deleted file mode 100755
index 447fc5dc8f6..00000000000
--- a/lldb/scripts/prepare_bindings.py
+++ /dev/null
@@ -1,217 +0,0 @@
-#!/usr/bin/env python
-"""
-Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-See https://llvm.org/LICENSE.txt for license information.
-SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-Prepares language bindings for LLDB build process. Run with --help
-to see a description of the supported command line arguments.
-"""
-
-# Python modules:
-import argparse
-import logging
-import os
-import platform
-import sys
-
-# LLDB modules:
-import use_lldb_suite
-from lldbsuite.support import fs
-
-
-def prepare_binding_for_language(scripts_dir, script_lang, options):
- """Prepares the binding for a specific language.
-
- @param scripts_dir the full path to the scripts source directory.
- @param script_lang the name of the script language. Should be a child
- directory within the scripts dir, and should contain a
- prepare_scripts_{script_lang}.py script file in it.
- @param options the dictionary of parsed command line options.
-
- There is no return value. If it returns, the process succeeded; otherwise,
- the process will exit where it fails.
- """
- # Ensure the language-specific prepare module exists.
- script_name = "prepare_binding_{}.py".format(script_lang)
- lang_path = os.path.join(scripts_dir, script_lang)
- script_path = os.path.join(lang_path, script_name)
- if not os.path.exists(script_path):
- logging.error(
- "failed to find prepare script for language '%s' at '%s'",
- script_lang,
- script_path)
- sys.exit(-9)
-
- # Include this language-specific directory in the Python search
- # path.
- sys.path.append(os.path.normcase(lang_path))
-
- # Execute the specific language script
- module_name = os.path.splitext(script_name)[0]
- module = __import__(module_name)
- module.main(options)
-
- # Remove the language-specific directory from the Python search path.
- sys.path.remove(os.path.normcase(lang_path))
-
-
-def prepare_all_bindings(options):
- """Prepares bindings for each of the languages supported.
-
- @param options the parsed arguments from the command line
-
- @return the exit value for the program. 0 is success, all othes
- indicate some kind of failure.
- """
- # Check for the existence of the SWIG scripts folder
- scripts_dir = os.path.join(options.src_root, "scripts")
- if not os.path.exists(scripts_dir):
- logging.error("failed to find scripts dir: '%s'", scripts_dir)
- sys.exit(-8)
-
- child_dirs = ["Python"]
-
- # Iterate script directory find any script language directories
- for script_lang in child_dirs:
- logging.info("executing language script for: '%s'", script_lang)
- prepare_binding_for_language(scripts_dir, script_lang, options)
-
-
-def process_args(args):
- """Returns options processed from the provided command line.
-
- @param args the command line to process.
- """
-
- # Setup the parser arguments that are accepted.
- parser = argparse.ArgumentParser(
- description="Prepare language bindings for LLDB build.")
-
- # Arguments to control logging verbosity.
- parser.add_argument(
- "--debug", "-d",
- action="store_true",
- help="Set program logging level to DEBUG.")
- parser.add_argument(
- "--verbose", "-v",
- action="count",
- default=0,
- help=(
- "Increase logging verbosity level. Default: only error and "
- "higher are displayed. Each -v increases level of verbosity."))
-
- # Arguments to control whether we're building an OS X-style
- # framework. This is the opposite of the older "-m" (makefile)
- # option.
- parser.add_argument(
- "--config-build-dir",
- "--cfgBldDir",
- help=(
- "Configuration build dir, will use python module path "
- "if unspecified."))
- parser.add_argument(
- "--find-swig",
- action="store_true",
- help=(
- "Indicates the swig executable should be searched for "
- "if not eplicitly provided. Either this or the explicit "
- "swig executable option must be provided."))
- parser.add_argument(
- "--framework",
- action="store_true",
- help="Prepare as OS X-style framework.")
- parser.add_argument(
- "--generate-dependency-file",
- "-M",
- action="store_true",
- help="Make the dependency (.d) file for the wrappers.")
- parser.add_argument(
- "--prefix",
- help="Override path where the LLDB module is placed.")
- parser.add_argument(
- "--src-root",
- "--srcRoot",
- "-s",
- # Default to the parent directory of this script's directory.
- default=os.path.abspath(
- os.path.join(
- os.path.dirname(os.path.realpath(__file__)),
- os.path.pardir)),
- help="Specifies the LLDB source root directory.")
- parser.add_argument(
- "--swig-executable",
- "--swigExecutable",
- help="Path to the swig executable.")
- parser.add_argument(
- "--target-dir",
- "--targetDir",
- required=True,
- help=(
- "Specifies the build dir where the language binding "
- "should be placed"))
-
- parser.add_argument(
- "--target-platform",
- help=(
- "Specifies the platform we are building for."
- "Should be the same as what platform.system() returns."))
- # Process args.
- options = parser.parse_args(args)
-
- # Set logging level based on verbosity count.
- if options.debug:
- log_level = logging.DEBUG
- else:
- # See logging documentation for error levels. We'll default
- # to showing ERROR or higher error messages. For each -v
- # specified, we'll shift to the next lower-priority log level.
- log_level = logging.ERROR - 10 * options.verbose
- if log_level < logging.NOTSET:
- # Displays all logged messages.
- log_level = logging.NOTSET
- logging.basicConfig(level=log_level)
- logging.info("logging is using level: %d", log_level)
-
- return options
-
-
-def main(args):
- """Drives the main script preparation steps.
-
- @param args list of command line arguments.
- """
- # Process command line arguments.
- options = process_args(args)
- logging.debug("Processed args: options=%s", options)
-
- # Ensure we have a swig executable.
- if not options.swig_executable or len(options.swig_executable) == 0:
- if options.find_swig:
- try:
- options.swig_executable = fs.find_executable("swig")
- except Exception as e:
- logging.error("Unable to find swig executable: %s" % e.message)
- sys.exit(-6)
- else:
- logging.error(
- "The --find-swig option must be specified "
- "when the swig executable location is not "
- "explicitly provided.")
- sys.exit(-12)
-
- # Check if the swig file exists.
- swig_path = os.path.normcase(
- os.path.join(options.src_root, "scripts", "lldb.swig"))
- if not os.path.isfile(swig_path):
- logging.error("swig file not found at '%s'", swig_path)
- sys.exit(-3)
-
- # Prepare bindings for each supported language binding.
- # This will error out if it doesn't succeed.
- prepare_all_bindings(options)
- sys.exit(0)
-
-if __name__ == "__main__":
- # Run the main driver loop.
- main(sys.argv[1:])
OpenPOWER on IntegriCloud