Index: mojo/tools/mopy/config.py |
diff --git a/mojo/tools/mopy/config.py b/mojo/tools/mopy/config.py |
index 448c7192c8dd9c8cf7d698cadb0a686776b1a0dd..8b1a4e374629cfa60b6529a657132ff267d5288b 100644 |
--- a/mojo/tools/mopy/config.py |
+++ b/mojo/tools/mopy/config.py |
@@ -8,6 +8,7 @@ |
import json |
import os.path |
+import platform |
import sys |
@@ -23,6 +24,11 @@ class Config(object): |
OS_MAC = "mac" |
OS_WINDOWS = "windows" |
+ # Valid values for target_arch (None is also valid): |
+ ARCH_X86 = "x86" |
+ ARCH_X64 = "x64" |
+ ARCH_ARM = "arm" |
+ |
# Valid values for sanitizer (None is also valid): |
SANITIZER_ASAN = "asan" |
@@ -33,13 +39,15 @@ class Config(object): |
TEST_TYPE_PERF = "perf" |
TEST_TYPE_INTEGRATION = "integration" |
- def __init__(self, target_os=None, is_debug=True, is_clang=None, |
- sanitizer=None, **kwargs): |
+ def __init__(self, target_os=None, target_arch=None, is_debug=True, |
+ is_clang=None, sanitizer=None, **kwargs): |
"""Constructs a Config with key-value pairs specified via keyword arguments. |
If target_os is not specified, it will be set to the host OS.""" |
assert target_os in (None, Config.OS_ANDROID, Config.OS_CHROMEOS, |
Config.OS_LINUX, Config.OS_MAC, Config.OS_WINDOWS) |
+ assert target_arch in (None, Config.ARCH_X86, Config.ARCH_X64, |
+ Config.ARCH_ARM) |
assert isinstance(is_debug, bool) |
assert is_clang is None or isinstance(is_clang, bool) |
assert sanitizer in (None, Config.SANITIZER_ASAN) |
@@ -49,6 +57,8 @@ class Config(object): |
self.values = {} |
self.values["target_os"] = (self.GetHostOS() if target_os is None else |
target_os) |
+ self.values["target_arch"] = (self.GetHostCPUArch() if target_arch is None |
+ else target_arch) |
self.values["is_debug"] = is_debug |
self.values["is_clang"] = is_clang |
self.values["sanitizer"] = sanitizer |
@@ -65,6 +75,19 @@ class Config(object): |
return Config.OS_WINDOWS |
raise NotImplementedError("Unsupported host OS") |
+ @staticmethod |
+ def GetHostCPUArch(): |
+ # Derived from //native_client/pynacl/platform.py |
+ machine = platform.machine() |
+ if machine in ('x86', 'x86-32', 'x86_32', 'x8632', 'i386', 'i686', 'ia32', |
viettrungluu
2015/01/13 21:04:04
nit: Apparently, in this file, we prefer to use "
Nick Bray (chromium)
2015/01/13 21:39:56
Done.
|
+ '32'): |
+ return Config.ARCH_X86 |
+ if machine in ('x86-64', 'amd64', 'x86_64', 'x8664', '64'): |
viettrungluu
2015/01/13 21:04:04
" (etc.)
Nick Bray (chromium)
2015/01/13 21:39:57
Done.
|
+ return Config.ARCH_X64 |
+ if machine.startswith('arm'): |
+ return Config.ARCH_ARM |
+ raise Exception("Cannot identify CPU arch: %s" % machine) |
+ |
# Getters for standard fields ------------------------------------------------ |
@property |
@@ -73,6 +96,11 @@ class Config(object): |
return self.values["target_os"] |
@property |
+ def target_arch(self): |
+ """CPU arch of the build/test target.""" |
+ return self.values["target_arch"] |
+ |
+ @property |
def is_debug(self): |
"""Is Debug build?""" |
return self.values["is_debug"] |