1# Copyright 2008 the V8 project authors. All rights reserved. 2# Redistribution and use in source and binary forms, with or without 3# modification, are permitted provided that the following conditions are 4# met: 5# 6# * Redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer. 8# * Redistributions in binary form must reproduce the above 9# copyright notice, this list of conditions and the following 10# disclaimer in the documentation and/or other materials provided 11# with the distribution. 12# * Neither the name of Google Inc. nor the names of its 13# contributors may be used to endorse or promote products derived 14# from this software without specific prior written permission. 15# 16# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 28 29import platform 30import re 31 32 33# Reads a .list file into an array of strings 34def ReadLinesFrom(name): 35 list = [] 36 for line in open(name): 37 if '#' in line: 38 line = line[:line.find('#')] 39 line = line.strip() 40 if len(line) == 0: 41 continue 42 list.append(line) 43 return list 44 45 46def GuessOS(): 47 id = platform.system() 48 if id == 'Linux': 49 return 'linux' 50 elif id == 'Darwin': 51 return 'macos' 52 elif id.find('CYGWIN') >= 0: 53 return 'cygwin' 54 elif id == 'Windows' or id == 'Microsoft': 55 # On Windows Vista platform.system() can return 'Microsoft' with some 56 # versions of Python, see http://bugs.python.org/issue1082 57 return 'win32' 58 elif id == 'FreeBSD': 59 return 'freebsd' 60 elif id == 'OpenBSD': 61 return 'openbsd' 62 elif id == 'SunOS': 63 return 'solaris' 64 elif id == 'NetBSD': 65 return 'netbsd' 66 else: 67 return None 68 69 70# This will default to building the 32 bit VM even on machines that are capable 71# of running the 64 bit VM. Use the scons option --arch=x64 to force it to build 72# the 64 bit VM. 73def GuessArchitecture(): 74 id = platform.machine() 75 id = id.lower() # Windows 7 capitalizes 'AMD64'. 76 if id.startswith('arm'): 77 return 'arm' 78 elif (not id) or (not re.match('(x|i[3-6])86$', id) is None): 79 return 'ia32' 80 elif id == 'i86pc': 81 return 'ia32' 82 elif id == 'x86_64': 83 return 'ia32' 84 elif id == 'amd64': 85 return 'ia32' 86 else: 87 return None 88 89 90def GuessWordsize(): 91 if '64' in platform.machine(): 92 return '64' 93 else: 94 return '32' 95 96 97def IsWindows(): 98 return GuessOS() == 'win32' 99