xref: /llvm-project/lldb/packages/Python/lldbsuite/test/lldbplatform.py (revision e634c2f7149392b62e93c1b2b75701a12bc06721)
15d3b3c7dSZachary Turner""" This module represents an abstraction of an lldb target / host platform. """
25d3b3c7dSZachary Turner
35d3b3c7dSZachary Turner# System modules
45d3b3c7dSZachary Turnerimport itertools
55d3b3c7dSZachary Turner
65d3b3c7dSZachary Turner# LLDB modules
75d3b3c7dSZachary Turnerimport lldb
85d3b3c7dSZachary Turner
9*2238dcc3SJonas Devlieghere(
10*2238dcc3SJonas Devlieghere    windows,
11*2238dcc3SJonas Devlieghere    linux,
12*2238dcc3SJonas Devlieghere    macosx,
13*2238dcc3SJonas Devlieghere    darwin,
14*2238dcc3SJonas Devlieghere    ios,
15*2238dcc3SJonas Devlieghere    tvos,
16*2238dcc3SJonas Devlieghere    watchos,
17*2238dcc3SJonas Devlieghere    bridgeos,
18*2238dcc3SJonas Devlieghere    darwin_all,
19*2238dcc3SJonas Devlieghere    darwin_embedded,
20*2238dcc3SJonas Devlieghere    darwin_simulator,
21*2238dcc3SJonas Devlieghere    freebsd,
22*2238dcc3SJonas Devlieghere    netbsd,
23*2238dcc3SJonas Devlieghere    bsd_all,
24*2238dcc3SJonas Devlieghere    android,
25*2238dcc3SJonas Devlieghere) = range(15)
2626a8e850SRaphael Isemann
2726a8e850SRaphael Isemann__darwin_embedded = ["ios", "tvos", "watchos", "bridgeos"]
2826a8e850SRaphael Isemann__darwin_simulators = ["iphonesimulator", "watchsimulator", "appletvsimulator"]
295d3b3c7dSZachary Turner
305d3b3c7dSZachary Turner__name_lookup = {
315d3b3c7dSZachary Turner    windows: ["windows"],
325d3b3c7dSZachary Turner    linux: ["linux"],
335d3b3c7dSZachary Turner    macosx: ["macosx"],
345d3b3c7dSZachary Turner    darwin: ["darwin"],
3526a8e850SRaphael Isemann    ios: ["ios", "iphonesimulator"],
3626a8e850SRaphael Isemann    tvos: ["tvos", "appletvsimulator"],
3726a8e850SRaphael Isemann    watchos: ["watchos", "watchsimulator"],
388652b249SJason Molenda    bridgeos: ["bridgeos"],
3926a8e850SRaphael Isemann    darwin_all: ["macosx", "darwin"] + __darwin_embedded + __darwin_simulators,
4026a8e850SRaphael Isemann    darwin_embedded: __darwin_embedded + __darwin_simulators,
4126a8e850SRaphael Isemann    darwin_simulator: __darwin_simulators,
425d3b3c7dSZachary Turner    freebsd: ["freebsd"],
435d3b3c7dSZachary Turner    netbsd: ["netbsd"],
445d3b3c7dSZachary Turner    bsd_all: ["freebsd", "netbsd"],
45*2238dcc3SJonas Devlieghere    android: ["android"],
465d3b3c7dSZachary Turner}
475d3b3c7dSZachary Turner
485d3b3c7dSZachary Turner
495d3b3c7dSZachary Turnerdef translate(values):
5056f9cfe3SDave Lee    if isinstance(values, int):
515d3b3c7dSZachary Turner        # This is a value from the platform enumeration, translate it.
525d3b3c7dSZachary Turner        return __name_lookup[values]
5356f9cfe3SDave Lee    elif isinstance(values, str):
545d3b3c7dSZachary Turner        # This is a raw string, return it.
555d3b3c7dSZachary Turner        return [values]
565d3b3c7dSZachary Turner    elif hasattr(values, "__iter__"):
575d3b3c7dSZachary Turner        # This is an iterable, convert each item.
585d3b3c7dSZachary Turner        result = [translate(x) for x in values]
595d3b3c7dSZachary Turner        result = list(itertools.chain(*result))
605d3b3c7dSZachary Turner        return result
615d3b3c7dSZachary Turner    return values
62