xref: /llvm-project/lldb/packages/Python/lldbsuite/test/lldbplatform.py (revision e634c2f7149392b62e93c1b2b75701a12bc06721)
1""" This module represents an abstraction of an lldb target / host platform. """
2
3# System modules
4import itertools
5
6# LLDB modules
7import lldb
8
9(
10    windows,
11    linux,
12    macosx,
13    darwin,
14    ios,
15    tvos,
16    watchos,
17    bridgeos,
18    darwin_all,
19    darwin_embedded,
20    darwin_simulator,
21    freebsd,
22    netbsd,
23    bsd_all,
24    android,
25) = range(15)
26
27__darwin_embedded = ["ios", "tvos", "watchos", "bridgeos"]
28__darwin_simulators = ["iphonesimulator", "watchsimulator", "appletvsimulator"]
29
30__name_lookup = {
31    windows: ["windows"],
32    linux: ["linux"],
33    macosx: ["macosx"],
34    darwin: ["darwin"],
35    ios: ["ios", "iphonesimulator"],
36    tvos: ["tvos", "appletvsimulator"],
37    watchos: ["watchos", "watchsimulator"],
38    bridgeos: ["bridgeos"],
39    darwin_all: ["macosx", "darwin"] + __darwin_embedded + __darwin_simulators,
40    darwin_embedded: __darwin_embedded + __darwin_simulators,
41    darwin_simulator: __darwin_simulators,
42    freebsd: ["freebsd"],
43    netbsd: ["netbsd"],
44    bsd_all: ["freebsd", "netbsd"],
45    android: ["android"],
46}
47
48
49def translate(values):
50    if isinstance(values, int):
51        # This is a value from the platform enumeration, translate it.
52        return __name_lookup[values]
53    elif isinstance(values, str):
54        # This is a raw string, return it.
55        return [values]
56    elif hasattr(values, "__iter__"):
57        # This is an iterable, convert each item.
58        result = [translate(x) for x in values]
59        result = list(itertools.chain(*result))
60        return result
61    return values
62