[email protected] | 25a967e | 2014-01-31 17:23:56 | [diff] [blame] | 1 | #!/usr/bin/env python |
2 | # Copyright 2014 The Chromium Authors. All rights reserved. | ||||
3 | # Use of this source code is governed by a BSD-style license that can be | ||||
4 | # found in the LICENSE file. | ||||
5 | |||||
6 | """Outputs host CPU architecture in format recognized by gyp.""" | ||||
7 | |||||
8 | import platform | ||||
9 | import re | ||||
10 | import sys | ||||
11 | |||||
12 | |||||
[email protected] | d6bdd54 | 2014-07-09 12:06:21 | [diff] [blame] | 13 | def HostArch(): |
14 | """Returns the host architecture with a predictable string.""" | ||||
[email protected] | 25a967e | 2014-01-31 17:23:56 | [diff] [blame] | 15 | host_arch = platform.machine() |
16 | |||||
17 | # Convert machine type to format recognized by gyp. | ||||
18 | if re.match(r'i.86', host_arch) or host_arch == 'i86pc': | ||||
19 | host_arch = 'ia32' | ||||
tsergeant | 9cc67cbe | 2016-09-29 03:28:24 | [diff] [blame] | 20 | elif host_arch in ['x86_64', 'amd64']: |
[email protected] | 25a967e | 2014-01-31 17:23:56 | [diff] [blame] | 21 | host_arch = 'x64' |
22 | elif host_arch.startswith('arm'): | ||||
23 | host_arch = 'arm' | ||||
Pierre Langlois | f7b3931 | 2017-11-07 14:26:17 | [diff] [blame] | 24 | elif host_arch.startswith('aarch64'): |
25 | host_arch = 'arm64' | ||||
brendan.kirby | a321aeb23 | 2016-06-15 15:48:03 | [diff] [blame] | 26 | elif host_arch.startswith('mips'): |
27 | host_arch = 'mips' | ||||
bjaideep | d572de4 | 2016-09-30 02:07:45 | [diff] [blame] | 28 | elif host_arch.startswith('ppc'): |
29 | host_arch = 'ppc' | ||||
30 | elif host_arch.startswith('s390'): | ||||
31 | host_arch = 's390' | ||||
32 | |||||
[email protected] | 25a967e | 2014-01-31 17:23:56 | [diff] [blame] | 33 | |
34 | # platform.machine is based on running kernel. It's possible to use 64-bit | ||||
35 | # kernel with 32-bit userland, e.g. to give linker slightly more memory. | ||||
36 | # Distinguish between different userland bitness by querying | ||||
37 | # the python binary. | ||||
38 | if host_arch == 'x64' and platform.architecture()[0] == '32bit': | ||||
39 | host_arch = 'ia32' | ||||
Pierre Langlois | f7b3931 | 2017-11-07 14:26:17 | [diff] [blame] | 40 | if host_arch == 'arm64' and platform.architecture()[0] == '32bit': |
41 | host_arch = 'arm' | ||||
[email protected] | 25a967e | 2014-01-31 17:23:56 | [diff] [blame] | 42 | |
[email protected] | d2f38924 | 2014-06-06 09:56:44 | [diff] [blame] | 43 | return host_arch |
[email protected] | 25a967e | 2014-01-31 17:23:56 | [diff] [blame] | 44 | |
[email protected] | d6bdd54 | 2014-07-09 12:06:21 | [diff] [blame] | 45 | def DoMain(_): |
46 | """Hook to be called from gyp without starting a separate python | ||||
47 | interpreter.""" | ||||
48 | return HostArch() | ||||
49 | |||||
[email protected] | 25a967e | 2014-01-31 17:23:56 | [diff] [blame] | 50 | if __name__ == '__main__': |
[email protected] | d6bdd54 | 2014-07-09 12:06:21 | [diff] [blame] | 51 | print DoMain([]) |