scons: Autodetect the default machine.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Wed, 27 Feb 2008 07:53:52 +0000 (16:53 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Wed, 27 Feb 2008 07:53:52 +0000 (16:53 +0900)
SConstruct

index 393936b4c898e090396413434125ac70ac15d356..c9a4031fbb2e148addd469cb9edbfc9549eceae2 100644 (file)
@@ -4,6 +4,7 @@
 import os
 import os.path
 import sys
+import platform as _platform
 
 
 #######################################################################
@@ -32,8 +33,22 @@ platform_map = {
        'linux2': 'linux',
        'win32': 'winddk',
 }
-
-default_platform = platform_map.get(sys.platform, sys.platform)
+default_platform = sys.platform
+default_platform = platform_map.get(default_platform, default_platform)
+
+machine_map = {
+       'x86': 'x86',
+       'i386': 'x86',
+       'i486': 'x86',
+       'i586': 'x86',
+       'i686': 'x86',
+       'x86_64': 'x86_64',
+}
+if 'PROCESSOR_ARCHITECTURE' in os.environ:
+       default_machine = os.environ['PROCESSOR_ARCHITECTURE']
+else:
+       default_machine = _platform.machine()
+default_machine = machine_map.get(default_machine, 'generic')
 
 if default_platform in ('linux', 'freebsd', 'darwin'):
        default_statetrackers = 'mesa'
@@ -53,9 +68,9 @@ else:
 
 # TODO: auto-detect defaults
 opts = Options('config.py')
-opts.Add(BoolOption('debug', 'build debug version', False))
-opts.Add(EnumOption('machine', 'use machine-specific assembly code', 'x86',
-                     allowed_values=('generic', 'x86', 'x86-64')))
+opts.Add(BoolOption('debug', 'build debug version', 'no'))
+opts.Add(EnumOption('machine', 'use machine-specific assembly code', default_machine,
+                     allowed_values=('generic', 'x86', 'x86_64')))
 opts.Add(EnumOption('platform', 'target platform', default_platform,
                      allowed_values=('linux', 'cell', 'winddk')))
 opts.Add(ListOption('statetrackers', 'state_trackers to build', default_statetrackers,
@@ -296,8 +311,8 @@ if dri:
        build_subdir += "-dri"
 if llvm:
        build_subdir += "-llvm"
-if x86:
-       build_subdir += "-x86"
+if env['machine'] != 'generic':
+       build_subdir += '-' + env['machine']
 if debug:
        build_subdir += "-debug"
 build_dir = os.path.join(build_topdir, build_subdir)