From ae760279f142244590c8aa76e3139529ca42952f Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Fri, 11 Feb 2011 16:44:13 +0000 Subject: scons: Try to support building 64bit binaries on 32bit windows. --- SConstruct | 2 +- common.py | 12 ++---------- scons/gallium.py | 18 ++++++++++++++++++ src/glsl/SConscript | 5 +---- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/SConstruct b/SConstruct index a2c20471f7..3908840086 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 cbb61629d2..e7941262e5 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 ea09b5d0d6..f9a2e592db 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 f55d7de744..ca17ddd6a2 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( -- cgit v1.2.3