diff options
Diffstat (limited to 'clang/tools/ccc/ccclib/HostInfo.py')
| -rw-r--r-- | clang/tools/ccc/ccclib/HostInfo.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/clang/tools/ccc/ccclib/HostInfo.py b/clang/tools/ccc/ccclib/HostInfo.py new file mode 100644 index 00000000000..ccfd32b1372 --- /dev/null +++ b/clang/tools/ccc/ccclib/HostInfo.py @@ -0,0 +1,76 @@ +class HostInfo(object): + """HostInfo - Config information about a particular host which may + interact with driver behavior. This can be very different from the + target(s) of a particular driver invocation.""" + + def __init__(self): + pass + + def getArchName(self): + abstract + + def useDriverDriver(self): + abstract + +# Darwin + +class DarwinHostInfo(HostInfo): + def useDriverDriver(self): + return True + +class DarwinPPCHostInfo(DarwinHostInfo): + def getArchName(self): + return 'ppc' + +class DarwinPPC_64HostInfo(DarwinHostInfo): + def getArchName(self): + return 'ppc64' + +class DarwinX86HostInfo(DarwinHostInfo): + def getArchName(self): + return 'i386' + +class DarwinX86_64HostInfo(DarwinHostInfo): + def getArchName(self): + return 'x86_64' + +def getDarwinHostInfo(machine, bits): + if machine == 'i386': + if bits == '32': + return DarwinX86HostInfo() + if bits == '64': + return DarwinX86_64HostInfo() + elif machine == 'ppc': + if bits == '32': + return DarwinPPCHostInfo() + if bits == '64': + return DarwinPPC_64HostInfo() + + raise RuntimeError,'Unrecognized Darwin-i386 platform: %r:%r' % (machine, bits) + +# Unknown + +class UnknownHostInfo(HostInfo): + def getArchName(self): + raise RuntimeError,'getArchName() unsupported on unknown host.' + + def useDriverDriver(self): + return False + +def getUnknownHostInfo(machine, bits): + return UnknownHostInfo() + +#### + +kSystems = { + 'darwin' : getDarwinHostInfo, + 'unknown' : getUnknownHostInfo, + } + +def getHostInfo(driver, system, machine, bits): + handler = kSystems.get(system) + if handler: + return handler(machine, bits) + + driver.warning('Unknown host %r, using generic host information.' % system) + return UnknownHostInfo() |

