1 #######################################################################
7 import platform
as _platform
10 #######################################################################
18 default_platform
= sys
.platform
19 default_platform
= _platform_map
.get(default_platform
, default_platform
)
29 if 'PROCESSOR_ARCHITECTURE' in os
.environ
:
30 default_machine
= os
.environ
['PROCESSOR_ARCHITECTURE']
32 default_machine
= _platform
.machine()
33 default_machine
= _machine_map
.get(default_machine
, 'generic')
35 if default_platform
in ('linux', 'freebsd', 'darwin'):
37 elif default_platform
in ('winddk',):
43 #######################################################################
47 from SCons
.Options
import Options
48 from SCons
.Options
.BoolOption
import BoolOption
49 from SCons
.Options
.EnumOption
import EnumOption
50 opts
= Options('config.py')
51 opts
.Add(BoolOption('debug', 'build debug version', 'no'))
52 opts
.Add(EnumOption('machine', 'use machine-specific assembly code', default_machine
,
53 allowed_values
=('generic', 'x86', 'x86_64')))
54 opts
.Add(EnumOption('platform', 'target platform', default_platform
,
55 allowed_values
=('linux', 'cell', 'winddk')))
56 opts
.Add(BoolOption('llvm', 'use LLVM', 'no'))
57 opts
.Add(BoolOption('dri', 'build DRI drivers', default_dri
))
61 #######################################################################
62 # Convenience Library Builder
63 # based on the stock StaticLibrary and SharedLibrary builders
68 def createConvenienceLibBuilder(env
):
69 """This is a utility function that creates the ConvenienceLibrary
70 Builder in an Environment if it is not there already.
72 If it is already there, we return the existing one.
76 convenience_lib
= env
['BUILDERS']['ConvenienceLibrary']
78 action_list
= [ SCons
.Action
.Action("$ARCOM", "$ARCOMSTR") ]
79 if env
.Detect('ranlib'):
80 ranlib_action
= SCons
.Action
.Action("$RANLIBCOM", "$RANLIBCOMSTR")
81 action_list
.append(ranlib_action
)
83 convenience_lib
= SCons
.Builder
.Builder(action
= action_list
,
84 emitter
= '$LIBEMITTER',
85 prefix
= '$LIBPREFIX',
86 suffix
= '$LIBSUFFIX',
87 src_suffix
= '$SHOBJSUFFIX',
88 src_builder
= 'SharedObject')
89 env
['BUILDERS']['ConvenienceLibrary'] = convenience_lib
90 env
['BUILDERS']['Library'] = convenience_lib
92 return convenience_lib
95 #######################################################################
98 def make_build_dir(env
):
99 # Put build output in a separate dir, which depends on the current configuration
100 # See also http://www.scons.org/wiki/AdvancedBuildExample
101 build_topdir
= 'build'
102 build_subdir
= env
['platform']
104 build_subdir
+= "-dri"
106 build_subdir
+= "-llvm"
107 if env
['machine'] != 'generic':
108 build_subdir
+= '-' + env
['machine']
110 build_subdir
+= "-debug"
111 build_dir
= os
.path
.join(build_topdir
, build_subdir
)
112 # Place the .sconsign file on the builddir too, to avoid issues with different scons
113 # versions building the same source file
114 env
.SConsignFile(os
.path
.join(build_dir
, '.sconsign'))