Chris Johns f88fcf3ae0 sb: Update code base to support Python3 and Python2.
Fix Windows support to allow MSYS2 Python to be used.

Updates #2619.
2016-03-07 13:16:17 +11:00

132 lines
5.6 KiB
Python

#
# RTEMS Tools Project (http://www.rtems.org/)
# Copyright 2010-2013 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
# Windows specific support and overrides.
#
import error
import pprint
import os
import execute
def load():
# Default to the native Windows Python.
uname = 'win32'
if 'PROCESSOR_ARCHITECTURE' in os.environ:
if os.environ['PROCESSOR_ARCHITECTURE'] == 'AMD64':
hosttype = 'x86_64'
machsize = '64'
else:
hosttype = 'i686'
machsize = '32'
else:
hosttype = 'x86_64'
machsize = '32'
uname = 'mingw32'
machine = 'w%s' % (machsize)
# See if this is actually MSYS2/Cygwin Python
if os.name == 'posix':
_uname = os.uname()
if _uname[0].startswith('MINGW'):
pass
elif _uname[0].startswith('CYGWIN'):
hosttype = _uname[4]
uname = 'cygwin'
machine = 'pc'
else:
raise error.general('invalid POSIX python for Windows')
host_triple = '%s-%s-%s' % (hosttype, machine, uname)
build_triple = '%s-%s-%s' % (hosttype, machine, uname)
if 'NUMBER_OF_PROCESSORS' in os.environ:
ncpus = os.environ['NUMBER_OF_PROCESSORS']
else:
ncpus = '1'
if 'MSYSTEM' in os.environ:
os.environ.pop('NUMBER_OF_PROCESSORS')
version = uname[2]
defines = {
'_ncpus': ('none', 'none', ncpus),
'_os': ('none', 'none', 'win32'),
'_build': ('triplet', 'required', build_triple),
'_build_vendor': ('none', 'none', 'microsoft'),
'_build_os': ('none', 'none', 'win32'),
'_build_os_version': ('none', 'none', version),
'_build_cpu': ('none', 'none', hosttype),
'_build_alias': ('none', 'none', '%{nil}'),
'_build_arch': ('none', 'none', hosttype),
'_host': ('triplet', 'required', host_triple),
'_host_vendor': ('none', 'none', 'microsoft'),
'_host_os': ('none', 'none', 'win32'),
'_host_cpu': ('none', 'none', hosttype),
'_host_alias': ('none', 'none', '%{nil}'),
'_host_arch': ('none', 'none', hosttype),
'_usr': ('dir', 'optional', '/opt/local'),
'_var': ('dir', 'optional', '/opt/local/var'),
'__bash': ('exe', 'required', 'bash'),
'__bzip2': ('exe', 'required', 'bzip2'),
'__bison': ('exe', 'required', 'bison'),
'__cat': ('exe', 'required', 'cat'),
'__cc': ('exe', 'required', 'gcc'),
'__chgrp': ('exe', 'required', 'chgrp'),
'__chmod': ('exe', 'required', 'chmod'),
'__chown': ('exe', 'required', 'chown'),
'__cp': ('exe', 'required', 'cp'),
'__cvs': ('exe', 'required', 'cvs'),
'__cxx': ('exe', 'required', 'g++'),
'__flex': ('exe', 'required', 'flex'),
'__git': ('exe', 'required', 'git'),
'__grep': ('exe', 'required', 'grep'),
'__gzip': ('exe', 'required', 'gzip'),
'__id': ('exe', 'required', 'id'),
'__install': ('exe', 'required', 'install'),
'__install_info': ('exe', 'required', 'install-info'),
'__ld': ('exe', 'required', 'ld'),
'__ldconfig': ('exe', 'none', ''),
'__makeinfo': ('exe', 'required', 'makeinfo'),
'__mkdir': ('exe', 'required', 'mkdir'),
'__mv': ('exe', 'required', 'mv'),
'__nm': ('exe', 'required', 'nm'),
'__nm': ('exe', 'required', 'nm'),
'__objcopy': ('exe', 'required', 'objcopy'),
'__objdump': ('exe', 'required', 'objdump'),
'__patch': ('exe', 'required', 'patch'),
'__patch_bin': ('exe', 'required', 'patch'),
'__rm': ('exe', 'required', 'rm'),
'__sed': ('exe', 'required', 'sed'),
'__sh': ('exe', 'required', 'sh'),
'__tar': ('exe', 'required', 'bsdtar'),
'__touch': ('exe', 'required', 'touch'),
'__unzip': ('exe', 'required', 'unzip'),
'__xz': ('exe', 'required', 'xz'),
'_buildshell': ('exe', 'required', '%{__sh}'),
'___setup_shell': ('exe', 'required', '%{__sh}')
}
return defines
if __name__ == '__main__':
pprint.pprint(load())