1 #######################################################################
9 import platform
as _platform
11 import SCons
.Script
.SConscript
14 #######################################################################
17 host_platform
= _platform
.system().lower()
18 if host_platform
.startswith('cygwin'):
19 host_platform
= 'cygwin'
21 # Search sys.argv[] for a "platform=foo" argument since we don't have
22 # an 'env' variable at this point.
23 if 'platform' in SCons
.Script
.ARGUMENTS
:
24 target_platform
= SCons
.Script
.ARGUMENTS
['platform']
26 target_platform
= host_platform
46 # find host_machine value
47 if 'PROCESSOR_ARCHITECTURE' in os
.environ
:
48 host_machine
= os
.environ
['PROCESSOR_ARCHITECTURE']
50 host_machine
= _platform
.machine()
51 host_machine
= _machine_map
.get(host_machine
, 'generic')
53 default_machine
= host_machine
54 default_toolchain
= 'default'
56 if target_platform
== 'windows' and host_platform
!= 'windows':
57 default_machine
= 'x86'
58 default_toolchain
= 'crossmingw'
61 # find default_llvm value
62 if 'LLVM' in os
.environ
or 'LLVM_CONFIG' in os
.environ
:
67 if target_platform
!= 'windows' and \
68 subprocess
.call(['llvm-config', '--version'],
69 stdout
=subprocess
.PIPE
) == 0:
75 #######################################################################
80 from SCons
.Variables
.BoolVariable
import BoolVariable
as BoolOption
82 from SCons
.Options
.BoolOption
import BoolOption
84 from SCons
.Variables
.EnumVariable
import EnumVariable
as EnumOption
86 from SCons
.Options
.EnumOption
import EnumOption
87 opts
.Add(EnumOption('build', 'build type', 'debug',
88 allowed_values
=('debug', 'checked', 'profile',
90 opts
.Add(BoolOption('verbose', 'verbose output', 'no'))
91 opts
.Add(EnumOption('machine', 'use machine-specific assembly code',
93 allowed_values
=('generic', 'ppc', 'x86', 'x86_64')))
94 opts
.Add(EnumOption('platform', 'target platform', host_platform
,
95 allowed_values
=('cygwin', 'darwin', 'freebsd', 'haiku',
96 'linux', 'sunos', 'windows')))
97 opts
.Add(BoolOption('embedded', 'embedded build', 'no'))
98 opts
.Add(BoolOption('analyze',
99 'enable static code analysis where available', 'no'))
100 opts
.Add(BoolOption('asan', 'enable Address Sanitizer', 'no'))
101 opts
.Add('toolchain', 'compiler toolchain', default_toolchain
)
102 opts
.Add(BoolOption('llvm', 'use LLVM', default_llvm
))
103 opts
.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)',
105 opts
.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
106 opts
.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
107 opts
.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
108 opts
.Add(BoolOption('swr', 'Build OpenSWR', 'no'))
109 if host_platform
== 'windows':
110 opts
.Add('MSVC_VERSION', 'Microsoft Visual C/C++ version')
111 opts
.Add('MSVC_USE_SCRIPT', 'Microsoft Visual C/C++ vcvarsall script', True)