From: José Fonseca Date: Fri, 11 Feb 2011 16:44:13 +0000 (+0000) Subject: scons: Try to support building 64bit binaries on 32bit windows. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ae760279f142244590c8aa76e3139529ca42952f;p=mesa.git scons: Try to support building 64bit binaries on 32bit windows. --- diff --git a/SConstruct b/SConstruct index a2c20471f7a..3908840086a 100644 --- a/SConstruct +++ b/SConstruct @@ -132,7 +132,7 @@ Export('env') # # Create host environent -if env['platform'] != common.host_platform: +if env['crosscompile'] and env['platform'] != 'embedded': host_env = Environment( options = opts, # no tool used diff --git a/common.py b/common.py index cbb61629d27..e7941262e52 100644 --- a/common.py +++ b/common.py @@ -14,13 +14,7 @@ import SCons.Script.SConscript ####################################################################### # Defaults -_platform_map = { - 'linux2': 'linux', - 'win32': 'windows', -} - -host_platform = sys.platform -host_platform = _platform_map.get(host_platform, host_platform) +host_platform = _platform.system().lower() # Search sys.argv[] for a "platform=foo" argument since we don't have # an 'env' variable at this point. @@ -29,8 +23,6 @@ if 'platform' in SCons.Script.ARGUMENTS: else: target_platform = host_platform -cross_compiling = target_platform != host_platform - _machine_map = { 'x86': 'x86', 'i386': 'x86', @@ -52,7 +44,7 @@ host_machine = _machine_map.get(host_machine, 'generic') default_machine = host_machine default_toolchain = 'default' -if target_platform == 'windows' and cross_compiling: +if target_platform == 'windows' and host_platform != 'windows': default_machine = 'x86' default_toolchain = 'crossmingw' diff --git a/scons/gallium.py b/scons/gallium.py index ea09b5d0d69..f9a2e592db8 100755 --- a/scons/gallium.py +++ b/scons/gallium.py @@ -35,6 +35,7 @@ import os import os.path import re import subprocess +import platform as _platform import SCons.Action import SCons.Builder @@ -191,6 +192,23 @@ def generate(env): gcc = env['gcc'] msvc = env['msvc'] + # Determine whether we are cross compiling; in particular, whether we need + # to compile code generators with a different compiler as the target code. + host_platform = _platform.system().lower() + host_machine = os.environ.get('PROCESSOR_ARCHITECTURE', _platform.machine()) + host_machine = { + 'x86': 'x86', + 'i386': 'x86', + 'i486': 'x86', + 'i586': 'x86', + 'i686': 'x86', + 'ppc' : 'ppc', + 'x86_64': 'x86_64', + }.get(host_machine, 'generic') + env['crosscompile'] = platform != host_platform + if machine == 'x86_64' and host_machine != 'x86_64': + env['crosscompile'] = True + # Backwards compatability with the debug= profile= options if env['build'] == 'debug': if not env['debug']: diff --git a/src/glsl/SConscript b/src/glsl/SConscript index f55d7de744f..ca17ddd6a2c 100644 --- a/src/glsl/SConscript +++ b/src/glsl/SConscript @@ -82,7 +82,7 @@ sources = [ ] -if env['platform'] == common.host_platform: +if not env['crosscompile'] or env['platform'] == 'embedded': if env['msvc']: env.Prepend(CPPPATH = ['#/src/getopt']) env.PrependUnique(LIBS = [getopt]) @@ -105,9 +105,6 @@ if env['platform'] == common.host_platform: Export('builtin_glsl_function') - if common.cross_compiling: - Return() - sources += builtin_glsl_function glsl = env.ConvenienceLibrary(