1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
# DExTer : Debugging Experience Tester
# ~~~~~~ ~ ~~ ~ ~~
#
# 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
"""Command line options for subtools that use the builder component."""
import os
from dex.tools import Context
from dex.utils import is_native_windows
def _find_build_scripts():
"""Finds build scripts in the 'scripts' subdirectory.
Returns:
{ script_name (str): directory (str) }
"""
try:
return _find_build_scripts.cached
except AttributeError:
scripts_directory = os.path.join(os.path.dirname(__file__), "scripts")
if is_native_windows():
scripts_directory = os.path.join(scripts_directory, "windows")
else:
scripts_directory = os.path.join(scripts_directory, "posix")
assert os.path.isdir(scripts_directory), scripts_directory
results = {}
for f in os.listdir(scripts_directory):
results[os.path.splitext(f)[0]] = os.path.abspath(
os.path.join(scripts_directory, f)
)
_find_build_scripts.cached = results
return results
def add_builder_tool_arguments(parser):
build_group = parser.add_mutually_exclusive_group(required=True)
build_group.add_argument(
"--binary", metavar="<file>", help="provide binary file instead of --builder"
)
build_group.add_argument(
"--builder",
type=str,
choices=sorted(_find_build_scripts().keys()),
help="test builder to use",
)
build_group.add_argument(
"--vs-solution",
metavar="<file>",
help="provide a path to an already existing visual studio solution.",
)
parser.add_argument("--cflags", type=str, default="", help="compiler flags")
parser.add_argument("--ldflags", type=str, default="", help="linker flags")
def handle_builder_tool_options(context: Context) -> str:
return _find_build_scripts()[context.options.builder]
|