xref: /openbsd-src/gnu/llvm/lldb/packages/Python/lldbsuite/test/lldbplatform.py (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1061da546Spatrick""" This module represents an abstraction of an lldb target / host platform. """
2061da546Spatrick
3061da546Spatrickfrom __future__ import absolute_import
4061da546Spatrick
5061da546Spatrick# System modules
6061da546Spatrickimport itertools
7061da546Spatrick
8061da546Spatrick# LLDB modules
9061da546Spatrickimport lldb
10061da546Spatrick
11be691f3bSpatrickwindows, linux, macosx, darwin, ios, tvos, watchos, bridgeos, darwin_all, \
12be691f3bSpatrick    darwin_embedded, darwin_simulator, freebsd, netbsd, bsd_all, android \
13be691f3bSpatrick    = range(15)
14be691f3bSpatrick
15be691f3bSpatrick__darwin_embedded = ["ios", "tvos", "watchos", "bridgeos"]
16be691f3bSpatrick__darwin_simulators = ["iphonesimulator", "watchsimulator", "appletvsimulator"]
17061da546Spatrick
18061da546Spatrick__name_lookup = {
19061da546Spatrick    windows: ["windows"],
20061da546Spatrick    linux: ["linux"],
21061da546Spatrick    macosx: ["macosx"],
22061da546Spatrick    darwin: ["darwin"],
23be691f3bSpatrick    ios: ["ios", "iphonesimulator"],
24be691f3bSpatrick    tvos: ["tvos", "appletvsimulator"],
25be691f3bSpatrick    watchos: ["watchos", "watchsimulator"],
26061da546Spatrick    bridgeos: ["bridgeos"],
27be691f3bSpatrick    darwin_all: ["macosx", "darwin"] + __darwin_embedded + __darwin_simulators,
28be691f3bSpatrick    darwin_embedded: __darwin_embedded + __darwin_simulators,
29be691f3bSpatrick    darwin_simulator: __darwin_simulators,
30061da546Spatrick    freebsd: ["freebsd"],
31061da546Spatrick    netbsd: ["netbsd"],
32061da546Spatrick    bsd_all: ["freebsd", "netbsd"],
33061da546Spatrick    android: ["android"]
34061da546Spatrick}
35061da546Spatrick
36061da546Spatrick
37061da546Spatrickdef translate(values):
38061da546Spatrick
39*f6aab3d8Srobert    if isinstance(values, int):
40061da546Spatrick        # This is a value from the platform enumeration, translate it.
41061da546Spatrick        return __name_lookup[values]
42*f6aab3d8Srobert    elif isinstance(values, str):
43061da546Spatrick        # This is a raw string, return it.
44061da546Spatrick        return [values]
45061da546Spatrick    elif hasattr(values, "__iter__"):
46061da546Spatrick        # This is an iterable, convert each item.
47061da546Spatrick        result = [translate(x) for x in values]
48061da546Spatrick        result = list(itertools.chain(*result))
49061da546Spatrick        return result
50061da546Spatrick    return values
51