File: ParserOptions.py

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (63 lines) | stat: -rw-r--r-- 2,116 bytes parent folder | download | duplicates (2)
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]