From 1ef52275d5f87bceab09b917797084937384a97f Mon Sep 17 00:00:00 2001 From: "jochen@chromium.org" Date: Mon, 23 Jun 2014 08:19:54 +0000 Subject: [PATCH] Set host_arch to ia32 on machines with a 32bit userland but a 64bit kernel. I don't know if there are any v8 bots with that configuration, but it seems like a good idea to have v8 be consistent with chromium and nacl here, so that this works fine if such a bot is ever set up. This is similar to https://codereview.chromium.org/342493002/ , but with a detect_v8_host_arch.py script that handles the additional machine types that standalone.gypi used to handle. BUG=368384 possibly? LOG=Y R=jochen@chromium.org Review URL: https://codereview.chromium.org/346643002 Patch from Nico Weber . git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- build/detect_v8_host_arch.py | 67 ++++++++++++++++++++++++++++++++++++++++++++ build/standalone.gypi | 8 +----- 2 files changed, 68 insertions(+), 7 deletions(-) create mode 100644 build/detect_v8_host_arch.py diff --git a/build/detect_v8_host_arch.py b/build/detect_v8_host_arch.py new file mode 100644 index 0000000..f66383b --- /dev/null +++ b/build/detect_v8_host_arch.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python +# Copyright 2014 the V8 project authors. All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Outputs host CPU architecture in format recognized by gyp.""" + +import platform +import re +import sys + + +def main(): + print DoMain([]) + return 0 + +def DoMain(_): + """Hook to be called from gyp without starting a separate python + interpreter.""" + host_arch = platform.machine() + + # Convert machine type to format recognized by gyp. + if re.match(r'i.86', host_arch) or host_arch == 'i86pc': + host_arch = 'ia32' + elif host_arch in ['x86_64', 'amd64']: + host_arch = 'x64' + elif host_arch.startswith('arm'): + host_arch = 'arm' + elif host_arch == 'aarch64': + host_arch = 'arm64' + elif host_arch.startswith('mips'): + host_arch = 'mipsel' + + # platform.machine is based on running kernel. It's possible to use 64-bit + # kernel with 32-bit userland, e.g. to give linker slightly more memory. + # Distinguish between different userland bitness by querying + # the python binary. + if host_arch == 'x64' and platform.architecture()[0] == '32bit': + host_arch = 'ia32' + + return host_arch + +if __name__ == '__main__': + sys.exit(main()) diff --git a/build/standalone.gypi b/build/standalone.gypi index 7670e5b..7952bdc 100644 --- a/build/standalone.gypi +++ b/build/standalone.gypi @@ -51,13 +51,7 @@ # Anything else gets passed through, which probably won't work # very well; such hosts should pass an explicit target_arch # to gyp. - 'host_arch%': - '