rev |
line source |
pankso@16509
|
1 # Copyright 2012 the V8 project authors. All rights reserved.
|
pankso@16509
|
2 # Redistribution and use in source and binary forms, with or without
|
pankso@16509
|
3 # modification, are permitted provided that the following conditions are
|
pankso@16509
|
4 # met:
|
pankso@16509
|
5 #
|
pankso@16509
|
6 # * Redistributions of source code must retain the above copyright
|
pankso@16509
|
7 # notice, this list of conditions and the following disclaimer.
|
pankso@16509
|
8 # * Redistributions in binary form must reproduce the above
|
pankso@16509
|
9 # copyright notice, this list of conditions and the following
|
pankso@16509
|
10 # disclaimer in the documentation and/or other materials provided
|
pankso@16509
|
11 # with the distribution.
|
pankso@16509
|
12 # * Neither the name of Google Inc. nor the names of its
|
pankso@16509
|
13 # contributors may be used to endorse or promote products derived
|
pankso@16509
|
14 # from this software without specific prior written permission.
|
pankso@16509
|
15 #
|
pankso@16509
|
16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
pankso@16509
|
17 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
pankso@16509
|
18 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
pankso@16509
|
19 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
pankso@16509
|
20 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
pankso@16509
|
21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
pankso@16509
|
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
pankso@16509
|
23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
pankso@16509
|
24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
pankso@16509
|
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
pankso@16509
|
26 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
pankso@16509
|
27
|
pankso@16509
|
28 import platform
|
pankso@16509
|
29 import re
|
pankso@16509
|
30 import subprocess
|
pankso@16509
|
31 import sys
|
pankso@16509
|
32 import os
|
pankso@16509
|
33 from os.path import join, dirname, abspath
|
pankso@16509
|
34 from types import DictType, StringTypes
|
pankso@16509
|
35 root_dir = dirname(File('SConstruct').rfile().abspath)
|
pankso@16509
|
36 src_dir = join(root_dir, 'src')
|
pankso@16509
|
37 sys.path.insert(0, join(root_dir, 'tools'))
|
pankso@16509
|
38 import js2c, utils
|
pankso@16509
|
39
|
pankso@16509
|
40 # ARM_TARGET_LIB is the path to the dynamic library to use on the target
|
pankso@16509
|
41 # machine if cross-compiling to an arm machine. You will also need to set
|
pankso@16509
|
42 # the additional cross-compiling environment variables to the cross compiler.
|
pankso@16509
|
43 ARM_TARGET_LIB = os.environ.get('ARM_TARGET_LIB')
|
pankso@16509
|
44 if ARM_TARGET_LIB:
|
pankso@16509
|
45 ARM_LINK_FLAGS = ['-Wl,-rpath=' + ARM_TARGET_LIB + '/lib:' +
|
pankso@16509
|
46 ARM_TARGET_LIB + '/usr/lib',
|
pankso@16509
|
47 '-Wl,--dynamic-linker=' + ARM_TARGET_LIB +
|
pankso@16509
|
48 '/lib/ld-linux.so.3']
|
pankso@16509
|
49 else:
|
pankso@16509
|
50 ARM_LINK_FLAGS = []
|
pankso@16509
|
51
|
pankso@16509
|
52 GCC_EXTRA_CCFLAGS = []
|
pankso@16509
|
53 GCC_DTOA_EXTRA_CCFLAGS = []
|
pankso@16509
|
54
|
pankso@16509
|
55 LIBRARY_FLAGS = {
|
pankso@16509
|
56 'all': {
|
pankso@16509
|
57 'CPPPATH': [src_dir],
|
pankso@16509
|
58 'regexp:interpreted': {
|
pankso@16509
|
59 'CPPDEFINES': ['V8_INTERPRETED_REGEXP']
|
pankso@16509
|
60 },
|
pankso@16509
|
61 'mode:debug': {
|
pankso@16509
|
62 'CPPDEFINES': ['V8_ENABLE_CHECKS', 'OBJECT_PRINT', 'VERIFY_HEAP']
|
pankso@16509
|
63 },
|
pankso@16509
|
64 'objectprint:on': {
|
pankso@16509
|
65 'CPPDEFINES': ['OBJECT_PRINT'],
|
pankso@16509
|
66 },
|
pankso@16509
|
67 'debuggersupport:on': {
|
pankso@16509
|
68 'CPPDEFINES': ['ENABLE_DEBUGGER_SUPPORT'],
|
pankso@16509
|
69 },
|
pankso@16509
|
70 'inspector:on': {
|
pankso@16509
|
71 'CPPDEFINES': ['INSPECTOR'],
|
pankso@16509
|
72 },
|
pankso@16509
|
73 'fasttls:off': {
|
pankso@16509
|
74 'CPPDEFINES': ['V8_NO_FAST_TLS'],
|
pankso@16509
|
75 },
|
pankso@16509
|
76 'liveobjectlist:on': {
|
pankso@16509
|
77 'CPPDEFINES': ['ENABLE_DEBUGGER_SUPPORT', 'INSPECTOR',
|
pankso@16509
|
78 'LIVE_OBJECT_LIST', 'OBJECT_PRINT'],
|
pankso@16509
|
79 }
|
pankso@16509
|
80 },
|
pankso@16509
|
81 'gcc': {
|
pankso@16509
|
82 'all': {
|
pankso@16509
|
83 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS', '-march=armv6'],
|
pankso@16509
|
84 'CXXFLAGS': ['-fno-rtti', '-fno-exceptions', '-march=armv6'],
|
pankso@16509
|
85 },
|
pankso@16509
|
86 'visibility:hidden': {
|
pankso@16509
|
87 # Use visibility=default to disable this.
|
pankso@16509
|
88 'CXXFLAGS': ['-fvisibility=hidden']
|
pankso@16509
|
89 },
|
pankso@16509
|
90 'strictaliasing:off': {
|
pankso@16509
|
91 'CCFLAGS': ['-fno-strict-aliasing']
|
pankso@16509
|
92 },
|
pankso@16509
|
93 'mode:debug': {
|
pankso@16509
|
94 'CCFLAGS': ['-g', '-O0'],
|
pankso@16509
|
95 'CPPDEFINES': ['ENABLE_DISASSEMBLER', 'DEBUG'],
|
pankso@16509
|
96 },
|
pankso@16509
|
97 'mode:release': {
|
pankso@16509
|
98 'CCFLAGS': ['-O3', '-fomit-frame-pointer', '-fdata-sections',
|
pankso@16509
|
99 '-ffunction-sections'],
|
pankso@16509
|
100 },
|
pankso@16509
|
101 'os:linux': {
|
pankso@16509
|
102 'CCFLAGS': ['-ansi'] + GCC_EXTRA_CCFLAGS,
|
pankso@16509
|
103 'library:shared': {
|
pankso@16509
|
104 'CPPDEFINES': ['V8_SHARED', 'BUILDING_V8_SHARED'],
|
pankso@16509
|
105 'LIBS': ['pthread']
|
pankso@16509
|
106 }
|
pankso@16509
|
107 },
|
pankso@16509
|
108 'os:macos': {
|
pankso@16509
|
109 'CCFLAGS': ['-ansi', '-mmacosx-version-min=10.4'],
|
pankso@16509
|
110 'library:shared': {
|
pankso@16509
|
111 'CPPDEFINES': ['V8_SHARED', 'BUILDING_V8_SHARED'],
|
pankso@16509
|
112 }
|
pankso@16509
|
113 },
|
pankso@16509
|
114 'os:freebsd': {
|
pankso@16509
|
115 'CPPPATH' : [src_dir, '/usr/local/include'],
|
pankso@16509
|
116 'LIBPATH' : ['/usr/local/lib'],
|
pankso@16509
|
117 'CCFLAGS': ['-ansi'],
|
pankso@16509
|
118 'LIBS': ['execinfo']
|
pankso@16509
|
119 },
|
pankso@16509
|
120 'os:openbsd': {
|
pankso@16509
|
121 'CPPPATH' : [src_dir, '/usr/local/include'],
|
pankso@16509
|
122 'LIBPATH' : ['/usr/local/lib'],
|
pankso@16509
|
123 'CCFLAGS': ['-ansi'],
|
pankso@16509
|
124 },
|
pankso@16509
|
125 'os:solaris': {
|
pankso@16509
|
126 # On Solaris, to get isinf, INFINITY, fpclassify and other macros one
|
pankso@16509
|
127 # needs to define __C99FEATURES__.
|
pankso@16509
|
128 'CPPDEFINES': ['__C99FEATURES__'],
|
pankso@16509
|
129 'CPPPATH' : [src_dir, '/usr/local/include'],
|
pankso@16509
|
130 'LIBPATH' : ['/usr/local/lib'],
|
pankso@16509
|
131 'CCFLAGS': ['-ansi'],
|
pankso@16509
|
132 },
|
pankso@16509
|
133 'os:netbsd': {
|
pankso@16509
|
134 'CPPPATH' : [src_dir, '/usr/pkg/include'],
|
pankso@16509
|
135 'LIBPATH' : ['/usr/pkg/lib'],
|
pankso@16509
|
136 },
|
pankso@16509
|
137 'os:win32': {
|
pankso@16509
|
138 'CCFLAGS': ['-DWIN32'],
|
pankso@16509
|
139 'CXXFLAGS': ['-DWIN32'],
|
pankso@16509
|
140 },
|
pankso@16509
|
141 'arch:ia32': {
|
pankso@16509
|
142 'CPPDEFINES': ['V8_TARGET_ARCH_IA32'],
|
pankso@16509
|
143 'CCFLAGS': ['-m32'],
|
pankso@16509
|
144 'LINKFLAGS': ['-m32']
|
pankso@16509
|
145 },
|
pankso@16509
|
146 'arch:arm': {
|
pankso@16509
|
147 'CPPDEFINES': ['V8_TARGET_ARCH_ARM'],
|
pankso@16509
|
148 'unalignedaccesses:on' : {
|
pankso@16509
|
149 'CPPDEFINES' : ['CAN_USE_UNALIGNED_ACCESSES=1']
|
pankso@16509
|
150 },
|
pankso@16509
|
151 'unalignedaccesses:off' : {
|
pankso@16509
|
152 'CPPDEFINES' : ['CAN_USE_UNALIGNED_ACCESSES=0']
|
pankso@16509
|
153 },
|
pankso@16509
|
154 'armeabi:soft' : {
|
pankso@16509
|
155 'CPPDEFINES' : ['USE_EABI_HARDFLOAT=0'],
|
pankso@16509
|
156 'simulator:none': {
|
pankso@16509
|
157 'CCFLAGS': ['-mfloat-abi=soft'],
|
pankso@16509
|
158 }
|
pankso@16509
|
159 },
|
pankso@16509
|
160 'armeabi:softfp' : {
|
pankso@16509
|
161 'CPPDEFINES' : ['USE_EABI_HARDFLOAT=0'],
|
pankso@16509
|
162 'vfp3:on': {
|
pankso@16509
|
163 'CPPDEFINES' : ['CAN_USE_VFP_INSTRUCTIONS']
|
pankso@16509
|
164 },
|
pankso@16509
|
165 'simulator:none': {
|
pankso@16509
|
166 'CCFLAGS': ['-mfloat-abi=softfp'],
|
pankso@16509
|
167 }
|
pankso@16509
|
168 },
|
pankso@16509
|
169 'armeabi:hard' : {
|
pankso@16509
|
170 'CPPDEFINES' : ['USE_EABI_HARDFLOAT=1'],
|
pankso@16509
|
171 'vfp3:on': {
|
pankso@16509
|
172 'CPPDEFINES' : ['CAN_USE_VFP_INSTRUCTIONS']
|
pankso@16509
|
173 },
|
pankso@16509
|
174 'simulator:none': {
|
pankso@16509
|
175 'CCFLAGS': ['-mfloat-abi=hard'],
|
pankso@16509
|
176 }
|
pankso@16509
|
177 }
|
pankso@16509
|
178 },
|
pankso@16509
|
179 'simulator:arm': {
|
pankso@16509
|
180 'CCFLAGS': ['-m32'],
|
pankso@16509
|
181 'LINKFLAGS': ['-m32'],
|
pankso@16509
|
182 },
|
pankso@16509
|
183 'arch:mips': {
|
pankso@16509
|
184 'CPPDEFINES': ['V8_TARGET_ARCH_MIPS'],
|
pankso@16509
|
185 'mips_arch_variant:mips32r2': {
|
pankso@16509
|
186 'CPPDEFINES': ['_MIPS_ARCH_MIPS32R2']
|
pankso@16509
|
187 },
|
pankso@16509
|
188 'mips_arch_variant:loongson': {
|
pankso@16509
|
189 'CPPDEFINES': ['_MIPS_ARCH_LOONGSON']
|
pankso@16509
|
190 },
|
pankso@16509
|
191 'simulator:none': {
|
pankso@16509
|
192 'CCFLAGS': ['-EL'],
|
pankso@16509
|
193 'LINKFLAGS': ['-EL'],
|
pankso@16509
|
194 'mips_arch_variant:mips32r2': {
|
pankso@16509
|
195 'CCFLAGS': ['-mips32r2', '-Wa,-mips32r2']
|
pankso@16509
|
196 },
|
pankso@16509
|
197 'mips_arch_variant:mips32r1': {
|
pankso@16509
|
198 'CCFLAGS': ['-mips32', '-Wa,-mips32']
|
pankso@16509
|
199 },
|
pankso@16509
|
200 'mips_arch_variant:loongson': {
|
pankso@16509
|
201 'CCFLAGS': ['-march=mips3', '-Wa,-march=mips3']
|
pankso@16509
|
202 },
|
pankso@16509
|
203 'library:static': {
|
pankso@16509
|
204 'LINKFLAGS': ['-static', '-static-libgcc']
|
pankso@16509
|
205 },
|
pankso@16509
|
206 'mipsabi:softfloat': {
|
pankso@16509
|
207 'CCFLAGS': ['-msoft-float'],
|
pankso@16509
|
208 'LINKFLAGS': ['-msoft-float']
|
pankso@16509
|
209 },
|
pankso@16509
|
210 'mipsabi:hardfloat': {
|
pankso@16509
|
211 'CCFLAGS': ['-mhard-float'],
|
pankso@16509
|
212 'LINKFLAGS': ['-mhard-float']
|
pankso@16509
|
213 }
|
pankso@16509
|
214 }
|
pankso@16509
|
215 },
|
pankso@16509
|
216 'simulator:mips': {
|
pankso@16509
|
217 'CCFLAGS': ['-m32'],
|
pankso@16509
|
218 'LINKFLAGS': ['-m32'],
|
pankso@16509
|
219 'mipsabi:softfloat': {
|
pankso@16509
|
220 'CPPDEFINES': ['__mips_soft_float=1'],
|
pankso@16509
|
221 'fpu:on': {
|
pankso@16509
|
222 'CPPDEFINES' : ['CAN_USE_FPU_INSTRUCTIONS']
|
pankso@16509
|
223 }
|
pankso@16509
|
224 },
|
pankso@16509
|
225 'mipsabi:hardfloat': {
|
pankso@16509
|
226 'CPPDEFINES': ['__mips_hard_float=1', 'CAN_USE_FPU_INSTRUCTIONS'],
|
pankso@16509
|
227 }
|
pankso@16509
|
228 },
|
pankso@16509
|
229 'arch:x64': {
|
pankso@16509
|
230 'CPPDEFINES': ['V8_TARGET_ARCH_X64'],
|
pankso@16509
|
231 'CCFLAGS': ['-m64'],
|
pankso@16509
|
232 'LINKFLAGS': ['-m64'],
|
pankso@16509
|
233 },
|
pankso@16509
|
234 'gdbjit:on': {
|
pankso@16509
|
235 'CPPDEFINES': ['ENABLE_GDB_JIT_INTERFACE']
|
pankso@16509
|
236 },
|
pankso@16509
|
237 'compress_startup_data:bz2': {
|
pankso@16509
|
238 'CPPDEFINES': ['COMPRESS_STARTUP_DATA_BZ2']
|
pankso@16509
|
239 }
|
pankso@16509
|
240 },
|
pankso@16509
|
241 'msvc': {
|
pankso@16509
|
242 'all': {
|
pankso@16509
|
243 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS'],
|
pankso@16509
|
244 'CXXFLAGS': ['/GR-', '/Gy'],
|
pankso@16509
|
245 'CPPDEFINES': ['WIN32'],
|
pankso@16509
|
246 'LINKFLAGS': ['/INCREMENTAL:NO', '/NXCOMPAT', '/IGNORE:4221'],
|
pankso@16509
|
247 'CCPDBFLAGS': ['/Zi']
|
pankso@16509
|
248 },
|
pankso@16509
|
249 'verbose:off': {
|
pankso@16509
|
250 'DIALECTFLAGS': ['/nologo'],
|
pankso@16509
|
251 'ARFLAGS': ['/NOLOGO']
|
pankso@16509
|
252 },
|
pankso@16509
|
253 'arch:ia32': {
|
pankso@16509
|
254 'CPPDEFINES': ['V8_TARGET_ARCH_IA32', '_USE_32BIT_TIME_T'],
|
pankso@16509
|
255 'LINKFLAGS': ['/MACHINE:X86'],
|
pankso@16509
|
256 'ARFLAGS': ['/MACHINE:X86']
|
pankso@16509
|
257 },
|
pankso@16509
|
258 'arch:x64': {
|
pankso@16509
|
259 'CPPDEFINES': ['V8_TARGET_ARCH_X64'],
|
pankso@16509
|
260 'LINKFLAGS': ['/MACHINE:X64'],
|
pankso@16509
|
261 'ARFLAGS': ['/MACHINE:X64']
|
pankso@16509
|
262 },
|
pankso@16509
|
263 'mode:debug': {
|
pankso@16509
|
264 'CCFLAGS': ['/Od', '/Gm'],
|
pankso@16509
|
265 'CPPDEFINES': ['_DEBUG', 'ENABLE_DISASSEMBLER', 'DEBUG'],
|
pankso@16509
|
266 'LINKFLAGS': ['/DEBUG'],
|
pankso@16509
|
267 'msvcrt:static': {
|
pankso@16509
|
268 'CCFLAGS': ['/MTd']
|
pankso@16509
|
269 },
|
pankso@16509
|
270 'msvcrt:shared': {
|
pankso@16509
|
271 'CCFLAGS': ['/MDd']
|
pankso@16509
|
272 }
|
pankso@16509
|
273 },
|
pankso@16509
|
274 'mode:release': {
|
pankso@16509
|
275 'CCFLAGS': ['/O2'],
|
pankso@16509
|
276 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF'],
|
pankso@16509
|
277 'msvcrt:static': {
|
pankso@16509
|
278 'CCFLAGS': ['/MT']
|
pankso@16509
|
279 },
|
pankso@16509
|
280 'msvcrt:shared': {
|
pankso@16509
|
281 'CCFLAGS': ['/MD']
|
pankso@16509
|
282 },
|
pankso@16509
|
283 'msvcltcg:on': {
|
pankso@16509
|
284 'CCFLAGS': ['/GL'],
|
pankso@16509
|
285 'ARFLAGS': ['/LTCG'],
|
pankso@16509
|
286 'pgo:off': {
|
pankso@16509
|
287 'LINKFLAGS': ['/LTCG'],
|
pankso@16509
|
288 },
|
pankso@16509
|
289 'pgo:instrument': {
|
pankso@16509
|
290 'LINKFLAGS': ['/LTCG:PGI']
|
pankso@16509
|
291 },
|
pankso@16509
|
292 'pgo:optimize': {
|
pankso@16509
|
293 'LINKFLAGS': ['/LTCG:PGO']
|
pankso@16509
|
294 }
|
pankso@16509
|
295 }
|
pankso@16509
|
296 }
|
pankso@16509
|
297 }
|
pankso@16509
|
298 }
|
pankso@16509
|
299
|
pankso@16509
|
300
|
pankso@16509
|
301 V8_EXTRA_FLAGS = {
|
pankso@16509
|
302 'gcc': {
|
pankso@16509
|
303 'all': {
|
pankso@16509
|
304 'WARNINGFLAGS': ['-Wall',
|
pankso@16509
|
305 '-Werror',
|
pankso@16509
|
306 '-W',
|
pankso@16509
|
307 '-Wno-unused-parameter',
|
pankso@16509
|
308 '-Woverloaded-virtual',
|
pankso@16509
|
309 '-Wnon-virtual-dtor']
|
pankso@16509
|
310 },
|
pankso@16509
|
311 'os:win32': {
|
pankso@16509
|
312 'WARNINGFLAGS': ['-pedantic',
|
pankso@16509
|
313 '-Wno-long-long',
|
pankso@16509
|
314 '-Wno-pedantic-ms-format'],
|
pankso@16509
|
315 'library:shared': {
|
pankso@16509
|
316 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
317 }
|
pankso@16509
|
318 },
|
pankso@16509
|
319 'os:linux': {
|
pankso@16509
|
320 'WARNINGFLAGS': ['-pedantic'],
|
pankso@16509
|
321 'library:shared': {
|
pankso@16509
|
322 'soname:on': {
|
pankso@16509
|
323 'LINKFLAGS': ['-Wl,-soname,${SONAME}']
|
pankso@16509
|
324 }
|
pankso@16509
|
325 }
|
pankso@16509
|
326 },
|
pankso@16509
|
327 'os:macos': {
|
pankso@16509
|
328 'WARNINGFLAGS': ['-pedantic']
|
pankso@16509
|
329 },
|
pankso@16509
|
330 'arch:arm': {
|
pankso@16509
|
331 # This is to silence warnings about ABI changes that some versions of the
|
pankso@16509
|
332 # CodeSourcery G++ tool chain produce for each occurrence of varargs.
|
pankso@16509
|
333 'WARNINGFLAGS': ['-Wno-abi']
|
pankso@16509
|
334 },
|
pankso@16509
|
335 'disassembler:on': {
|
pankso@16509
|
336 'CPPDEFINES': ['ENABLE_DISASSEMBLER']
|
pankso@16509
|
337 }
|
pankso@16509
|
338 },
|
pankso@16509
|
339 'msvc': {
|
pankso@16509
|
340 'all': {
|
pankso@16509
|
341 'WARNINGFLAGS': ['/W3', '/WX', '/wd4351', '/wd4355', '/wd4800']
|
pankso@16509
|
342 },
|
pankso@16509
|
343 'library:shared': {
|
pankso@16509
|
344 'CPPDEFINES': ['BUILDING_V8_SHARED'],
|
pankso@16509
|
345 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
346 },
|
pankso@16509
|
347 'arch:arm': {
|
pankso@16509
|
348 'CPPDEFINES': ['V8_TARGET_ARCH_ARM'],
|
pankso@16509
|
349 # /wd4996 is to silence the warning about sscanf
|
pankso@16509
|
350 # used by the arm simulator.
|
pankso@16509
|
351 'WARNINGFLAGS': ['/wd4996']
|
pankso@16509
|
352 },
|
pankso@16509
|
353 'arch:mips': {
|
pankso@16509
|
354 'CPPDEFINES': ['V8_TARGET_ARCH_MIPS'],
|
pankso@16509
|
355 'mips_arch_variant:mips32r2': {
|
pankso@16509
|
356 'CPPDEFINES': ['_MIPS_ARCH_MIPS32R2']
|
pankso@16509
|
357 },
|
pankso@16509
|
358 },
|
pankso@16509
|
359 'disassembler:on': {
|
pankso@16509
|
360 'CPPDEFINES': ['ENABLE_DISASSEMBLER']
|
pankso@16509
|
361 }
|
pankso@16509
|
362 }
|
pankso@16509
|
363 }
|
pankso@16509
|
364
|
pankso@16509
|
365
|
pankso@16509
|
366 MKSNAPSHOT_EXTRA_FLAGS = {
|
pankso@16509
|
367 'gcc': {
|
pankso@16509
|
368 'os:linux': {
|
pankso@16509
|
369 'LIBS': ['pthread'],
|
pankso@16509
|
370 },
|
pankso@16509
|
371 'os:macos': {
|
pankso@16509
|
372 'LIBS': ['pthread'],
|
pankso@16509
|
373 },
|
pankso@16509
|
374 'os:freebsd': {
|
pankso@16509
|
375 'LIBS': ['execinfo', 'pthread']
|
pankso@16509
|
376 },
|
pankso@16509
|
377 'os:solaris': {
|
pankso@16509
|
378 'LIBS': ['m', 'pthread', 'socket', 'nsl', 'rt'],
|
pankso@16509
|
379 'LINKFLAGS': ['-mt']
|
pankso@16509
|
380 },
|
pankso@16509
|
381 'os:openbsd': {
|
pankso@16509
|
382 'LIBS': ['execinfo', 'pthread']
|
pankso@16509
|
383 },
|
pankso@16509
|
384 'os:win32': {
|
pankso@16509
|
385 'LIBS': ['winmm', 'ws2_32'],
|
pankso@16509
|
386 },
|
pankso@16509
|
387 'os:netbsd': {
|
pankso@16509
|
388 'LIBS': ['execinfo', 'pthread']
|
pankso@16509
|
389 },
|
pankso@16509
|
390 'compress_startup_data:bz2': {
|
pankso@16509
|
391 'os:linux': {
|
pankso@16509
|
392 'LIBS': ['bz2']
|
pankso@16509
|
393 }
|
pankso@16509
|
394 },
|
pankso@16509
|
395 },
|
pankso@16509
|
396 'msvc': {
|
pankso@16509
|
397 'all': {
|
pankso@16509
|
398 'CPPDEFINES': ['_HAS_EXCEPTIONS=0'],
|
pankso@16509
|
399 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
400 }
|
pankso@16509
|
401 }
|
pankso@16509
|
402 }
|
pankso@16509
|
403
|
pankso@16509
|
404
|
pankso@16509
|
405 DTOA_EXTRA_FLAGS = {
|
pankso@16509
|
406 'gcc': {
|
pankso@16509
|
407 'all': {
|
pankso@16509
|
408 'WARNINGFLAGS': ['-Werror', '-Wno-uninitialized'],
|
pankso@16509
|
409 'CCFLAGS': GCC_DTOA_EXTRA_CCFLAGS
|
pankso@16509
|
410 }
|
pankso@16509
|
411 },
|
pankso@16509
|
412 'msvc': {
|
pankso@16509
|
413 'all': {
|
pankso@16509
|
414 'WARNINGFLAGS': ['/WX', '/wd4018', '/wd4244']
|
pankso@16509
|
415 }
|
pankso@16509
|
416 }
|
pankso@16509
|
417 }
|
pankso@16509
|
418
|
pankso@16509
|
419
|
pankso@16509
|
420 CCTEST_EXTRA_FLAGS = {
|
pankso@16509
|
421 'all': {
|
pankso@16509
|
422 'CPPPATH': [src_dir],
|
pankso@16509
|
423 'library:shared': {
|
pankso@16509
|
424 'CPPDEFINES': ['USING_V8_SHARED']
|
pankso@16509
|
425 },
|
pankso@16509
|
426 },
|
pankso@16509
|
427 'gcc': {
|
pankso@16509
|
428 'all': {
|
pankso@16509
|
429 'LIBPATH': [abspath('.')],
|
pankso@16509
|
430 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS'],
|
pankso@16509
|
431 'CXXFLAGS': ['-fno-rtti', '-fno-exceptions'],
|
pankso@16509
|
432 'LINKFLAGS': ['$CCFLAGS'],
|
pankso@16509
|
433 },
|
pankso@16509
|
434 'os:linux': {
|
pankso@16509
|
435 'LIBS': ['pthread'],
|
pankso@16509
|
436 'CCFLAGS': ['-Wno-unused-but-set-variable'],
|
pankso@16509
|
437 },
|
pankso@16509
|
438 'os:macos': {
|
pankso@16509
|
439 'LIBS': ['pthread'],
|
pankso@16509
|
440 },
|
pankso@16509
|
441 'os:freebsd': {
|
pankso@16509
|
442 'LIBS': ['execinfo', 'pthread']
|
pankso@16509
|
443 },
|
pankso@16509
|
444 'os:solaris': {
|
pankso@16509
|
445 'LIBS': ['m', 'pthread', 'socket', 'nsl', 'rt'],
|
pankso@16509
|
446 'LINKFLAGS': ['-mt']
|
pankso@16509
|
447 },
|
pankso@16509
|
448 'os:openbsd': {
|
pankso@16509
|
449 'LIBS': ['execinfo', 'pthread']
|
pankso@16509
|
450 },
|
pankso@16509
|
451 'os:win32': {
|
pankso@16509
|
452 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
453 },
|
pankso@16509
|
454 'os:netbsd': {
|
pankso@16509
|
455 'LIBS': ['execinfo', 'pthread']
|
pankso@16509
|
456 },
|
pankso@16509
|
457 'arch:arm': {
|
pankso@16509
|
458 'LINKFLAGS': ARM_LINK_FLAGS
|
pankso@16509
|
459 },
|
pankso@16509
|
460 },
|
pankso@16509
|
461 'msvc': {
|
pankso@16509
|
462 'all': {
|
pankso@16509
|
463 'CPPDEFINES': ['_HAS_EXCEPTIONS=0'],
|
pankso@16509
|
464 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
465 },
|
pankso@16509
|
466 'arch:ia32': {
|
pankso@16509
|
467 'CPPDEFINES': ['V8_TARGET_ARCH_IA32']
|
pankso@16509
|
468 },
|
pankso@16509
|
469 'arch:x64': {
|
pankso@16509
|
470 'CPPDEFINES': ['V8_TARGET_ARCH_X64'],
|
pankso@16509
|
471 'LINKFLAGS': ['/STACK:2097152']
|
pankso@16509
|
472 },
|
pankso@16509
|
473 }
|
pankso@16509
|
474 }
|
pankso@16509
|
475
|
pankso@16509
|
476
|
pankso@16509
|
477 SAMPLE_FLAGS = {
|
pankso@16509
|
478 'all': {
|
pankso@16509
|
479 'CPPPATH': [join(root_dir, 'include')],
|
pankso@16509
|
480 'library:shared': {
|
pankso@16509
|
481 'CPPDEFINES': ['USING_V8_SHARED']
|
pankso@16509
|
482 },
|
pankso@16509
|
483 },
|
pankso@16509
|
484 'gcc': {
|
pankso@16509
|
485 'all': {
|
pankso@16509
|
486 'LIBPATH': ['.'],
|
pankso@16509
|
487 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS'],
|
pankso@16509
|
488 'CXXFLAGS': ['-fno-rtti', '-fno-exceptions'],
|
pankso@16509
|
489 'LINKFLAGS': ['$CCFLAGS'],
|
pankso@16509
|
490 },
|
pankso@16509
|
491 'os:linux': {
|
pankso@16509
|
492 'LIBS': ['pthread'],
|
pankso@16509
|
493 },
|
pankso@16509
|
494 'os:macos': {
|
pankso@16509
|
495 'LIBS': ['pthread'],
|
pankso@16509
|
496 },
|
pankso@16509
|
497 'os:freebsd': {
|
pankso@16509
|
498 'LIBPATH' : ['/usr/local/lib'],
|
pankso@16509
|
499 'LIBS': ['execinfo', 'pthread']
|
pankso@16509
|
500 },
|
pankso@16509
|
501 'os:solaris': {
|
pankso@16509
|
502 # On Solaris, to get isinf, INFINITY, fpclassify and other macros one
|
pankso@16509
|
503 # needs to define __C99FEATURES__.
|
pankso@16509
|
504 'CPPDEFINES': ['__C99FEATURES__'],
|
pankso@16509
|
505 'LIBPATH' : ['/usr/local/lib'],
|
pankso@16509
|
506 'LIBS': ['m', 'pthread', 'socket', 'nsl', 'rt'],
|
pankso@16509
|
507 'LINKFLAGS': ['-mt']
|
pankso@16509
|
508 },
|
pankso@16509
|
509 'os:openbsd': {
|
pankso@16509
|
510 'LIBPATH' : ['/usr/local/lib'],
|
pankso@16509
|
511 'LIBS': ['execinfo', 'pthread']
|
pankso@16509
|
512 },
|
pankso@16509
|
513 'os:win32': {
|
pankso@16509
|
514 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
515 },
|
pankso@16509
|
516 'os:netbsd': {
|
pankso@16509
|
517 'LIBPATH' : ['/usr/pkg/lib'],
|
pankso@16509
|
518 'LIBS': ['execinfo', 'pthread']
|
pankso@16509
|
519 },
|
pankso@16509
|
520 'arch:arm': {
|
pankso@16509
|
521 'LINKFLAGS': ARM_LINK_FLAGS,
|
pankso@16509
|
522 'armeabi:soft' : {
|
pankso@16509
|
523 'CPPDEFINES' : ['USE_EABI_HARDFLOAT=0'],
|
pankso@16509
|
524 'simulator:none': {
|
pankso@16509
|
525 'CCFLAGS': ['-mfloat-abi=soft'],
|
pankso@16509
|
526 }
|
pankso@16509
|
527 },
|
pankso@16509
|
528 'armeabi:softfp' : {
|
pankso@16509
|
529 'CPPDEFINES' : ['USE_EABI_HARDFLOAT=0'],
|
pankso@16509
|
530 'simulator:none': {
|
pankso@16509
|
531 'CCFLAGS': ['-mfloat-abi=softfp'],
|
pankso@16509
|
532 }
|
pankso@16509
|
533 },
|
pankso@16509
|
534 'armeabi:hard' : {
|
pankso@16509
|
535 'CPPDEFINES' : ['USE_EABI_HARDFLOAT=1'],
|
pankso@16509
|
536 'vfp3:on': {
|
pankso@16509
|
537 'CPPDEFINES' : ['CAN_USE_VFP_INSTRUCTIONS']
|
pankso@16509
|
538 },
|
pankso@16509
|
539 'simulator:none': {
|
pankso@16509
|
540 'CCFLAGS': ['-mfloat-abi=hard'],
|
pankso@16509
|
541 }
|
pankso@16509
|
542 }
|
pankso@16509
|
543 },
|
pankso@16509
|
544 'arch:ia32': {
|
pankso@16509
|
545 'CCFLAGS': ['-m32'],
|
pankso@16509
|
546 'LINKFLAGS': ['-m32']
|
pankso@16509
|
547 },
|
pankso@16509
|
548 'arch:x64': {
|
pankso@16509
|
549 'CCFLAGS': ['-m64'],
|
pankso@16509
|
550 'LINKFLAGS': ['-m64']
|
pankso@16509
|
551 },
|
pankso@16509
|
552 'arch:mips': {
|
pankso@16509
|
553 'CPPDEFINES': ['V8_TARGET_ARCH_MIPS'],
|
pankso@16509
|
554 'mips_arch_variant:mips32r2': {
|
pankso@16509
|
555 'CPPDEFINES': ['_MIPS_ARCH_MIPS32R2']
|
pankso@16509
|
556 },
|
pankso@16509
|
557 'mips_arch_variant:loongson': {
|
pankso@16509
|
558 'CPPDEFINES': ['_MIPS_ARCH_LOONGSON']
|
pankso@16509
|
559 },
|
pankso@16509
|
560 'simulator:none': {
|
pankso@16509
|
561 'CCFLAGS': ['-EL'],
|
pankso@16509
|
562 'LINKFLAGS': ['-EL'],
|
pankso@16509
|
563 'mips_arch_variant:mips32r2': {
|
pankso@16509
|
564 'CCFLAGS': ['-mips32r2', '-Wa,-mips32r2']
|
pankso@16509
|
565 },
|
pankso@16509
|
566 'mips_arch_variant:mips32r1': {
|
pankso@16509
|
567 'CCFLAGS': ['-mips32', '-Wa,-mips32']
|
pankso@16509
|
568 },
|
pankso@16509
|
569 'mips_arch_variant:loongson': {
|
pankso@16509
|
570 'CCFLAGS': ['-march=mips3', '-Wa,-march=mips3']
|
pankso@16509
|
571 },
|
pankso@16509
|
572 'library:static': {
|
pankso@16509
|
573 'LINKFLAGS': ['-static', '-static-libgcc']
|
pankso@16509
|
574 },
|
pankso@16509
|
575 'mipsabi:softfloat': {
|
pankso@16509
|
576 'CCFLAGS': ['-msoft-float'],
|
pankso@16509
|
577 'LINKFLAGS': ['-msoft-float']
|
pankso@16509
|
578 },
|
pankso@16509
|
579 'mipsabi:hardfloat': {
|
pankso@16509
|
580 'CCFLAGS': ['-mhard-float'],
|
pankso@16509
|
581 'LINKFLAGS': ['-mhard-float'],
|
pankso@16509
|
582 'fpu:on': {
|
pankso@16509
|
583 'CPPDEFINES' : ['CAN_USE_FPU_INSTRUCTIONS']
|
pankso@16509
|
584 }
|
pankso@16509
|
585 }
|
pankso@16509
|
586 }
|
pankso@16509
|
587 },
|
pankso@16509
|
588 'simulator:arm': {
|
pankso@16509
|
589 'CCFLAGS': ['-m32'],
|
pankso@16509
|
590 'LINKFLAGS': ['-m32']
|
pankso@16509
|
591 },
|
pankso@16509
|
592 'simulator:mips': {
|
pankso@16509
|
593 'CCFLAGS': ['-m32'],
|
pankso@16509
|
594 'LINKFLAGS': ['-m32']
|
pankso@16509
|
595 },
|
pankso@16509
|
596 'mode:release': {
|
pankso@16509
|
597 'CCFLAGS': ['-O2']
|
pankso@16509
|
598 },
|
pankso@16509
|
599 'mode:debug': {
|
pankso@16509
|
600 'CCFLAGS': ['-g', '-O0'],
|
pankso@16509
|
601 'CPPDEFINES': ['DEBUG']
|
pankso@16509
|
602 },
|
pankso@16509
|
603 'compress_startup_data:bz2': {
|
pankso@16509
|
604 'CPPDEFINES': ['COMPRESS_STARTUP_DATA_BZ2'],
|
pankso@16509
|
605 'os:linux': {
|
pankso@16509
|
606 'LIBS': ['bz2']
|
pankso@16509
|
607 }
|
pankso@16509
|
608 },
|
pankso@16509
|
609 },
|
pankso@16509
|
610 'msvc': {
|
pankso@16509
|
611 'all': {
|
pankso@16509
|
612 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
613 },
|
pankso@16509
|
614 'verbose:off': {
|
pankso@16509
|
615 'CCFLAGS': ['/nologo'],
|
pankso@16509
|
616 'LINKFLAGS': ['/NOLOGO']
|
pankso@16509
|
617 },
|
pankso@16509
|
618 'verbose:on': {
|
pankso@16509
|
619 'LINKFLAGS': ['/VERBOSE']
|
pankso@16509
|
620 },
|
pankso@16509
|
621 'prof:on': {
|
pankso@16509
|
622 'LINKFLAGS': ['/MAP']
|
pankso@16509
|
623 },
|
pankso@16509
|
624 'mode:release': {
|
pankso@16509
|
625 'CCFLAGS': ['/O2'],
|
pankso@16509
|
626 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF'],
|
pankso@16509
|
627 'msvcrt:static': {
|
pankso@16509
|
628 'CCFLAGS': ['/MT']
|
pankso@16509
|
629 },
|
pankso@16509
|
630 'msvcrt:shared': {
|
pankso@16509
|
631 'CCFLAGS': ['/MD']
|
pankso@16509
|
632 },
|
pankso@16509
|
633 'msvcltcg:on': {
|
pankso@16509
|
634 'CCFLAGS': ['/GL'],
|
pankso@16509
|
635 'pgo:off': {
|
pankso@16509
|
636 'LINKFLAGS': ['/LTCG'],
|
pankso@16509
|
637 },
|
pankso@16509
|
638 },
|
pankso@16509
|
639 'pgo:instrument': {
|
pankso@16509
|
640 'LINKFLAGS': ['/LTCG:PGI']
|
pankso@16509
|
641 },
|
pankso@16509
|
642 'pgo:optimize': {
|
pankso@16509
|
643 'LINKFLAGS': ['/LTCG:PGO']
|
pankso@16509
|
644 }
|
pankso@16509
|
645 },
|
pankso@16509
|
646 'arch:ia32': {
|
pankso@16509
|
647 'CPPDEFINES': ['V8_TARGET_ARCH_IA32', 'WIN32'],
|
pankso@16509
|
648 'LINKFLAGS': ['/MACHINE:X86']
|
pankso@16509
|
649 },
|
pankso@16509
|
650 'arch:x64': {
|
pankso@16509
|
651 'CPPDEFINES': ['V8_TARGET_ARCH_X64', 'WIN32'],
|
pankso@16509
|
652 'LINKFLAGS': ['/MACHINE:X64', '/STACK:2097152']
|
pankso@16509
|
653 },
|
pankso@16509
|
654 'mode:debug': {
|
pankso@16509
|
655 'CCFLAGS': ['/Od'],
|
pankso@16509
|
656 'LINKFLAGS': ['/DEBUG'],
|
pankso@16509
|
657 'CPPDEFINES': ['DEBUG'],
|
pankso@16509
|
658 'msvcrt:static': {
|
pankso@16509
|
659 'CCFLAGS': ['/MTd']
|
pankso@16509
|
660 },
|
pankso@16509
|
661 'msvcrt:shared': {
|
pankso@16509
|
662 'CCFLAGS': ['/MDd']
|
pankso@16509
|
663 }
|
pankso@16509
|
664 }
|
pankso@16509
|
665 }
|
pankso@16509
|
666 }
|
pankso@16509
|
667
|
pankso@16509
|
668
|
pankso@16509
|
669 PREPARSER_FLAGS = {
|
pankso@16509
|
670 'all': {
|
pankso@16509
|
671 'CPPPATH': [join(root_dir, 'include'), src_dir],
|
pankso@16509
|
672 'library:shared': {
|
pankso@16509
|
673 'CPPDEFINES': ['USING_V8_SHARED']
|
pankso@16509
|
674 },
|
pankso@16509
|
675 },
|
pankso@16509
|
676 'gcc': {
|
pankso@16509
|
677 'all': {
|
pankso@16509
|
678 'LIBPATH': ['.'],
|
pankso@16509
|
679 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS'],
|
pankso@16509
|
680 'CXXFLAGS': ['-fno-rtti', '-fno-exceptions'],
|
pankso@16509
|
681 'LINKFLAGS': ['$CCFLAGS'],
|
pankso@16509
|
682 },
|
pankso@16509
|
683 'os:win32': {
|
pankso@16509
|
684 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
685 },
|
pankso@16509
|
686 'arch:arm': {
|
pankso@16509
|
687 'LINKFLAGS': ARM_LINK_FLAGS,
|
pankso@16509
|
688 'armeabi:soft' : {
|
pankso@16509
|
689 'CPPDEFINES' : ['USE_EABI_HARDFLOAT=0'],
|
pankso@16509
|
690 'simulator:none': {
|
pankso@16509
|
691 'CCFLAGS': ['-mfloat-abi=soft'],
|
pankso@16509
|
692 }
|
pankso@16509
|
693 },
|
pankso@16509
|
694 'armeabi:softfp' : {
|
pankso@16509
|
695 'simulator:none': {
|
pankso@16509
|
696 'CCFLAGS': ['-mfloat-abi=softfp'],
|
pankso@16509
|
697 }
|
pankso@16509
|
698 },
|
pankso@16509
|
699 'armeabi:hard' : {
|
pankso@16509
|
700 'simulator:none': {
|
pankso@16509
|
701 'CCFLAGS': ['-mfloat-abi=hard'],
|
pankso@16509
|
702 }
|
pankso@16509
|
703 }
|
pankso@16509
|
704 },
|
pankso@16509
|
705 'arch:ia32': {
|
pankso@16509
|
706 'CCFLAGS': ['-m32'],
|
pankso@16509
|
707 'LINKFLAGS': ['-m32']
|
pankso@16509
|
708 },
|
pankso@16509
|
709 'arch:x64': {
|
pankso@16509
|
710 'CCFLAGS': ['-m64'],
|
pankso@16509
|
711 'LINKFLAGS': ['-m64']
|
pankso@16509
|
712 },
|
pankso@16509
|
713 'arch:mips': {
|
pankso@16509
|
714 'CPPDEFINES': ['V8_TARGET_ARCH_MIPS'],
|
pankso@16509
|
715 'mips_arch_variant:mips32r2': {
|
pankso@16509
|
716 'CPPDEFINES': ['_MIPS_ARCH_MIPS32R2']
|
pankso@16509
|
717 },
|
pankso@16509
|
718 'mips_arch_variant:loongson': {
|
pankso@16509
|
719 'CPPDEFINES': ['_MIPS_ARCH_LOONGSON']
|
pankso@16509
|
720 },
|
pankso@16509
|
721 'simulator:none': {
|
pankso@16509
|
722 'CCFLAGS': ['-EL'],
|
pankso@16509
|
723 'LINKFLAGS': ['-EL'],
|
pankso@16509
|
724 'mips_arch_variant:mips32r2': {
|
pankso@16509
|
725 'CCFLAGS': ['-mips32r2', '-Wa,-mips32r2']
|
pankso@16509
|
726 },
|
pankso@16509
|
727 'mips_arch_variant:mips32r1': {
|
pankso@16509
|
728 'CCFLAGS': ['-mips32', '-Wa,-mips32']
|
pankso@16509
|
729 },
|
pankso@16509
|
730 'mips_arch_variant:loongson': {
|
pankso@16509
|
731 'CCFLAGS': ['-march=mips3', '-Wa,-march=mips3']
|
pankso@16509
|
732 },
|
pankso@16509
|
733 'library:static': {
|
pankso@16509
|
734 'LINKFLAGS': ['-static', '-static-libgcc']
|
pankso@16509
|
735 },
|
pankso@16509
|
736 'mipsabi:softfloat': {
|
pankso@16509
|
737 'CCFLAGS': ['-msoft-float'],
|
pankso@16509
|
738 'LINKFLAGS': ['-msoft-float']
|
pankso@16509
|
739 },
|
pankso@16509
|
740 'mipsabi:hardfloat': {
|
pankso@16509
|
741 'CCFLAGS': ['-mhard-float'],
|
pankso@16509
|
742 'LINKFLAGS': ['-mhard-float']
|
pankso@16509
|
743 }
|
pankso@16509
|
744 }
|
pankso@16509
|
745 },
|
pankso@16509
|
746 'simulator:arm': {
|
pankso@16509
|
747 'CCFLAGS': ['-m32'],
|
pankso@16509
|
748 'LINKFLAGS': ['-m32']
|
pankso@16509
|
749 },
|
pankso@16509
|
750 'simulator:mips': {
|
pankso@16509
|
751 'CCFLAGS': ['-m32'],
|
pankso@16509
|
752 'LINKFLAGS': ['-m32'],
|
pankso@16509
|
753 'mipsabi:softfloat': {
|
pankso@16509
|
754 'CPPDEFINES': ['__mips_soft_float=1'],
|
pankso@16509
|
755 },
|
pankso@16509
|
756 'mipsabi:hardfloat': {
|
pankso@16509
|
757 'CPPDEFINES': ['__mips_hard_float=1'],
|
pankso@16509
|
758 }
|
pankso@16509
|
759 },
|
pankso@16509
|
760 'mode:release': {
|
pankso@16509
|
761 'CCFLAGS': ['-O2']
|
pankso@16509
|
762 },
|
pankso@16509
|
763 'mode:debug': {
|
pankso@16509
|
764 'CCFLAGS': ['-g', '-O0'],
|
pankso@16509
|
765 'CPPDEFINES': ['DEBUG']
|
pankso@16509
|
766 },
|
pankso@16509
|
767 'os:freebsd': {
|
pankso@16509
|
768 'LIBPATH' : ['/usr/local/lib'],
|
pankso@16509
|
769 },
|
pankso@16509
|
770 },
|
pankso@16509
|
771 'msvc': {
|
pankso@16509
|
772 'all': {
|
pankso@16509
|
773 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
774 },
|
pankso@16509
|
775 'verbose:off': {
|
pankso@16509
|
776 'CCFLAGS': ['/nologo'],
|
pankso@16509
|
777 'LINKFLAGS': ['/NOLOGO']
|
pankso@16509
|
778 },
|
pankso@16509
|
779 'verbose:on': {
|
pankso@16509
|
780 'LINKFLAGS': ['/VERBOSE']
|
pankso@16509
|
781 },
|
pankso@16509
|
782 'prof:on': {
|
pankso@16509
|
783 'LINKFLAGS': ['/MAP']
|
pankso@16509
|
784 },
|
pankso@16509
|
785 'mode:release': {
|
pankso@16509
|
786 'CCFLAGS': ['/O2'],
|
pankso@16509
|
787 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF'],
|
pankso@16509
|
788 'msvcrt:static': {
|
pankso@16509
|
789 'CCFLAGS': ['/MT']
|
pankso@16509
|
790 },
|
pankso@16509
|
791 'msvcrt:shared': {
|
pankso@16509
|
792 'CCFLAGS': ['/MD']
|
pankso@16509
|
793 },
|
pankso@16509
|
794 'msvcltcg:on': {
|
pankso@16509
|
795 'CCFLAGS': ['/GL'],
|
pankso@16509
|
796 'pgo:off': {
|
pankso@16509
|
797 'LINKFLAGS': ['/LTCG'],
|
pankso@16509
|
798 },
|
pankso@16509
|
799 },
|
pankso@16509
|
800 'pgo:instrument': {
|
pankso@16509
|
801 'LINKFLAGS': ['/LTCG:PGI']
|
pankso@16509
|
802 },
|
pankso@16509
|
803 'pgo:optimize': {
|
pankso@16509
|
804 'LINKFLAGS': ['/LTCG:PGO']
|
pankso@16509
|
805 }
|
pankso@16509
|
806 },
|
pankso@16509
|
807 'arch:ia32': {
|
pankso@16509
|
808 'CPPDEFINES': ['V8_TARGET_ARCH_IA32', 'WIN32'],
|
pankso@16509
|
809 'LINKFLAGS': ['/MACHINE:X86']
|
pankso@16509
|
810 },
|
pankso@16509
|
811 'arch:x64': {
|
pankso@16509
|
812 'CPPDEFINES': ['V8_TARGET_ARCH_X64', 'WIN32'],
|
pankso@16509
|
813 'LINKFLAGS': ['/MACHINE:X64', '/STACK:2097152']
|
pankso@16509
|
814 },
|
pankso@16509
|
815 'mode:debug': {
|
pankso@16509
|
816 'CCFLAGS': ['/Od'],
|
pankso@16509
|
817 'LINKFLAGS': ['/DEBUG'],
|
pankso@16509
|
818 'CPPDEFINES': ['DEBUG'],
|
pankso@16509
|
819 'msvcrt:static': {
|
pankso@16509
|
820 'CCFLAGS': ['/MTd']
|
pankso@16509
|
821 },
|
pankso@16509
|
822 'msvcrt:shared': {
|
pankso@16509
|
823 'CCFLAGS': ['/MDd']
|
pankso@16509
|
824 }
|
pankso@16509
|
825 }
|
pankso@16509
|
826 }
|
pankso@16509
|
827 }
|
pankso@16509
|
828
|
pankso@16509
|
829
|
pankso@16509
|
830 D8_FLAGS = {
|
pankso@16509
|
831 'all': {
|
pankso@16509
|
832 'library:shared': {
|
pankso@16509
|
833 'CPPDEFINES': ['V8_SHARED'],
|
pankso@16509
|
834 'LIBS': ['v8'],
|
pankso@16509
|
835 'LIBPATH': ['.']
|
pankso@16509
|
836 },
|
pankso@16509
|
837 },
|
pankso@16509
|
838 'gcc': {
|
pankso@16509
|
839 'all': {
|
pankso@16509
|
840 'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS'],
|
pankso@16509
|
841 'CXXFLAGS': ['-fno-rtti', '-fno-exceptions'],
|
pankso@16509
|
842 'LINKFLAGS': ['$CCFLAGS'],
|
pankso@16509
|
843 },
|
pankso@16509
|
844 'console:readline': {
|
pankso@16509
|
845 'LIBS': ['readline']
|
pankso@16509
|
846 },
|
pankso@16509
|
847 'os:linux': {
|
pankso@16509
|
848 'LIBS': ['pthread'],
|
pankso@16509
|
849 },
|
pankso@16509
|
850 'os:macos': {
|
pankso@16509
|
851 'LIBS': ['pthread'],
|
pankso@16509
|
852 },
|
pankso@16509
|
853 'os:freebsd': {
|
pankso@16509
|
854 'LIBS': ['pthread'],
|
pankso@16509
|
855 },
|
pankso@16509
|
856 'os:solaris': {
|
pankso@16509
|
857 'LIBS': ['m', 'pthread', 'socket', 'nsl', 'rt'],
|
pankso@16509
|
858 'LINKFLAGS': ['-mt']
|
pankso@16509
|
859 },
|
pankso@16509
|
860 'os:openbsd': {
|
pankso@16509
|
861 'LIBS': ['pthread'],
|
pankso@16509
|
862 },
|
pankso@16509
|
863 'os:win32': {
|
pankso@16509
|
864 'LIBS': ['winmm', 'ws2_32'],
|
pankso@16509
|
865 },
|
pankso@16509
|
866 'os:netbsd': {
|
pankso@16509
|
867 'LIBS': ['pthread'],
|
pankso@16509
|
868 },
|
pankso@16509
|
869 'arch:arm': {
|
pankso@16509
|
870 'LINKFLAGS': ARM_LINK_FLAGS
|
pankso@16509
|
871 },
|
pankso@16509
|
872 'compress_startup_data:bz2': {
|
pankso@16509
|
873 'CPPDEFINES': ['COMPRESS_STARTUP_DATA_BZ2'],
|
pankso@16509
|
874 'os:linux': {
|
pankso@16509
|
875 'LIBS': ['bz2']
|
pankso@16509
|
876 }
|
pankso@16509
|
877 }
|
pankso@16509
|
878 },
|
pankso@16509
|
879 'msvc': {
|
pankso@16509
|
880 'all': {
|
pankso@16509
|
881 'LIBS': ['winmm', 'ws2_32']
|
pankso@16509
|
882 },
|
pankso@16509
|
883 'verbose:off': {
|
pankso@16509
|
884 'CCFLAGS': ['/nologo'],
|
pankso@16509
|
885 'LINKFLAGS': ['/NOLOGO']
|
pankso@16509
|
886 },
|
pankso@16509
|
887 'verbose:on': {
|
pankso@16509
|
888 'LINKFLAGS': ['/VERBOSE']
|
pankso@16509
|
889 },
|
pankso@16509
|
890 'prof:on': {
|
pankso@16509
|
891 'LINKFLAGS': ['/MAP']
|
pankso@16509
|
892 },
|
pankso@16509
|
893 'mode:release': {
|
pankso@16509
|
894 'CCFLAGS': ['/O2'],
|
pankso@16509
|
895 'LINKFLAGS': ['/OPT:REF', '/OPT:ICF'],
|
pankso@16509
|
896 'msvcrt:static': {
|
pankso@16509
|
897 'CCFLAGS': ['/MT']
|
pankso@16509
|
898 },
|
pankso@16509
|
899 'msvcrt:shared': {
|
pankso@16509
|
900 'CCFLAGS': ['/MD']
|
pankso@16509
|
901 },
|
pankso@16509
|
902 'msvcltcg:on': {
|
pankso@16509
|
903 'CCFLAGS': ['/GL'],
|
pankso@16509
|
904 'pgo:off': {
|
pankso@16509
|
905 'LINKFLAGS': ['/LTCG'],
|
pankso@16509
|
906 },
|
pankso@16509
|
907 },
|
pankso@16509
|
908 'pgo:instrument': {
|
pankso@16509
|
909 'LINKFLAGS': ['/LTCG:PGI']
|
pankso@16509
|
910 },
|
pankso@16509
|
911 'pgo:optimize': {
|
pankso@16509
|
912 'LINKFLAGS': ['/LTCG:PGO']
|
pankso@16509
|
913 }
|
pankso@16509
|
914 },
|
pankso@16509
|
915 'arch:ia32': {
|
pankso@16509
|
916 'CPPDEFINES': ['V8_TARGET_ARCH_IA32', 'WIN32'],
|
pankso@16509
|
917 'LINKFLAGS': ['/MACHINE:X86']
|
pankso@16509
|
918 },
|
pankso@16509
|
919 'arch:x64': {
|
pankso@16509
|
920 'CPPDEFINES': ['V8_TARGET_ARCH_X64', 'WIN32'],
|
pankso@16509
|
921 'LINKFLAGS': ['/MACHINE:X64', '/STACK:2097152']
|
pankso@16509
|
922 },
|
pankso@16509
|
923 'mode:debug': {
|
pankso@16509
|
924 'CCFLAGS': ['/Od'],
|
pankso@16509
|
925 'LINKFLAGS': ['/DEBUG'],
|
pankso@16509
|
926 'CPPDEFINES': ['DEBUG'],
|
pankso@16509
|
927 'msvcrt:static': {
|
pankso@16509
|
928 'CCFLAGS': ['/MTd']
|
pankso@16509
|
929 },
|
pankso@16509
|
930 'msvcrt:shared': {
|
pankso@16509
|
931 'CCFLAGS': ['/MDd']
|
pankso@16509
|
932 }
|
pankso@16509
|
933 }
|
pankso@16509
|
934 }
|
pankso@16509
|
935 }
|
pankso@16509
|
936
|
pankso@16509
|
937
|
pankso@16509
|
938 SUFFIXES = {
|
pankso@16509
|
939 'release': '',
|
pankso@16509
|
940 'debug': '_g'
|
pankso@16509
|
941 }
|
pankso@16509
|
942
|
pankso@16509
|
943
|
pankso@16509
|
944 def Abort(message):
|
pankso@16509
|
945 print message
|
pankso@16509
|
946 sys.exit(1)
|
pankso@16509
|
947
|
pankso@16509
|
948
|
pankso@16509
|
949 def GuessOS(env):
|
pankso@16509
|
950 return utils.GuessOS()
|
pankso@16509
|
951
|
pankso@16509
|
952
|
pankso@16509
|
953 def GuessArch(env):
|
pankso@16509
|
954 return utils.GuessArchitecture()
|
pankso@16509
|
955
|
pankso@16509
|
956
|
pankso@16509
|
957 def GuessToolchain(env):
|
pankso@16509
|
958 tools = env['TOOLS']
|
pankso@16509
|
959 if 'gcc' in tools:
|
pankso@16509
|
960 return 'gcc'
|
pankso@16509
|
961 elif 'msvc' in tools:
|
pankso@16509
|
962 return 'msvc'
|
pankso@16509
|
963 else:
|
pankso@16509
|
964 return None
|
pankso@16509
|
965
|
pankso@16509
|
966
|
pankso@16509
|
967 def GuessVisibility(env):
|
pankso@16509
|
968 os = env['os']
|
pankso@16509
|
969 toolchain = env['toolchain'];
|
pankso@16509
|
970 if (os == 'win32' or os == 'cygwin') and toolchain == 'gcc':
|
pankso@16509
|
971 # MinGW / Cygwin can't do it.
|
pankso@16509
|
972 return 'default'
|
pankso@16509
|
973 elif os == 'solaris':
|
pankso@16509
|
974 return 'default'
|
pankso@16509
|
975 else:
|
pankso@16509
|
976 return 'hidden'
|
pankso@16509
|
977
|
pankso@16509
|
978
|
pankso@16509
|
979 def GuessStrictAliasing(env):
|
pankso@16509
|
980 # There seems to be a problem with gcc 4.5.x.
|
pankso@16509
|
981 # See http://code.google.com/p/v8/issues/detail?id=884
|
pankso@16509
|
982 # It can be worked around by disabling strict aliasing.
|
pankso@16509
|
983 toolchain = env['toolchain'];
|
pankso@16509
|
984 if toolchain == 'gcc':
|
pankso@16509
|
985 env = Environment(tools=['gcc'])
|
pankso@16509
|
986 # The gcc version should be available in env['CCVERSION'],
|
pankso@16509
|
987 # but when scons detects msvc this value is not set.
|
pankso@16509
|
988 version = subprocess.Popen([env['CC'], '-dumpversion'],
|
pankso@16509
|
989 stdout=subprocess.PIPE).communicate()[0]
|
pankso@16509
|
990 if version.find('4.5') == 0:
|
pankso@16509
|
991 return 'off'
|
pankso@16509
|
992 return 'default'
|
pankso@16509
|
993
|
pankso@16509
|
994
|
pankso@16509
|
995 PLATFORM_OPTIONS = {
|
pankso@16509
|
996 'arch': {
|
pankso@16509
|
997 'values': ['arm', 'ia32', 'x64', 'mips'],
|
pankso@16509
|
998 'guess': GuessArch,
|
pankso@16509
|
999 'help': 'the architecture to build for'
|
pankso@16509
|
1000 },
|
pankso@16509
|
1001 'os': {
|
pankso@16509
|
1002 'values': ['freebsd', 'linux', 'macos', 'win32', 'openbsd', 'solaris', 'cygwin', 'netbsd'],
|
pankso@16509
|
1003 'guess': GuessOS,
|
pankso@16509
|
1004 'help': 'the os to build for'
|
pankso@16509
|
1005 },
|
pankso@16509
|
1006 'toolchain': {
|
pankso@16509
|
1007 'values': ['gcc', 'msvc'],
|
pankso@16509
|
1008 'guess': GuessToolchain,
|
pankso@16509
|
1009 'help': 'the toolchain to use'
|
pankso@16509
|
1010 }
|
pankso@16509
|
1011 }
|
pankso@16509
|
1012
|
pankso@16509
|
1013 SIMPLE_OPTIONS = {
|
pankso@16509
|
1014 'regexp': {
|
pankso@16509
|
1015 'values': ['native', 'interpreted'],
|
pankso@16509
|
1016 'default': 'native',
|
pankso@16509
|
1017 'help': 'Whether to use native or interpreted regexp implementation'
|
pankso@16509
|
1018 },
|
pankso@16509
|
1019 'snapshot': {
|
pankso@16509
|
1020 'values': ['on', 'off', 'nobuild'],
|
pankso@16509
|
1021 'default': 'off',
|
pankso@16509
|
1022 'help': 'build using snapshots for faster start-up'
|
pankso@16509
|
1023 },
|
pankso@16509
|
1024 'prof': {
|
pankso@16509
|
1025 'values': ['on', 'off'],
|
pankso@16509
|
1026 'default': 'off',
|
pankso@16509
|
1027 'help': 'enable profiling of build target'
|
pankso@16509
|
1028 },
|
pankso@16509
|
1029 'gdbjit': {
|
pankso@16509
|
1030 'values': ['on', 'off'],
|
pankso@16509
|
1031 'default': 'off',
|
pankso@16509
|
1032 'help': 'enable GDB JIT interface'
|
pankso@16509
|
1033 },
|
pankso@16509
|
1034 'library': {
|
pankso@16509
|
1035 'values': ['static', 'shared'],
|
pankso@16509
|
1036 'default': 'static',
|
pankso@16509
|
1037 'help': 'the type of library to produce'
|
pankso@16509
|
1038 },
|
pankso@16509
|
1039 'objectprint': {
|
pankso@16509
|
1040 'values': ['on', 'off'],
|
pankso@16509
|
1041 'default': 'off',
|
pankso@16509
|
1042 'help': 'enable object printing'
|
pankso@16509
|
1043 },
|
pankso@16509
|
1044 'profilingsupport': {
|
pankso@16509
|
1045 'values': ['on', 'off'],
|
pankso@16509
|
1046 'default': 'on',
|
pankso@16509
|
1047 'help': 'enable profiling of JavaScript code'
|
pankso@16509
|
1048 },
|
pankso@16509
|
1049 'debuggersupport': {
|
pankso@16509
|
1050 'values': ['on', 'off'],
|
pankso@16509
|
1051 'default': 'on',
|
pankso@16509
|
1052 'help': 'enable debugging of JavaScript code'
|
pankso@16509
|
1053 },
|
pankso@16509
|
1054 'inspector': {
|
pankso@16509
|
1055 'values': ['on', 'off'],
|
pankso@16509
|
1056 'default': 'off',
|
pankso@16509
|
1057 'help': 'enable inspector features'
|
pankso@16509
|
1058 },
|
pankso@16509
|
1059 'liveobjectlist': {
|
pankso@16509
|
1060 'values': ['on', 'off'],
|
pankso@16509
|
1061 'default': 'off',
|
pankso@16509
|
1062 'help': 'enable live object list features in the debugger'
|
pankso@16509
|
1063 },
|
pankso@16509
|
1064 'soname': {
|
pankso@16509
|
1065 'values': ['on', 'off'],
|
pankso@16509
|
1066 'default': 'off',
|
pankso@16509
|
1067 'help': 'turn on setting soname for Linux shared library'
|
pankso@16509
|
1068 },
|
pankso@16509
|
1069 'msvcrt': {
|
pankso@16509
|
1070 'values': ['static', 'shared'],
|
pankso@16509
|
1071 'default': 'static',
|
pankso@16509
|
1072 'help': 'the type of Microsoft Visual C++ runtime library to use'
|
pankso@16509
|
1073 },
|
pankso@16509
|
1074 'msvcltcg': {
|
pankso@16509
|
1075 'values': ['on', 'off'],
|
pankso@16509
|
1076 'default': 'on',
|
pankso@16509
|
1077 'help': 'use Microsoft Visual C++ link-time code generation'
|
pankso@16509
|
1078 },
|
pankso@16509
|
1079 'simulator': {
|
pankso@16509
|
1080 'values': ['arm', 'mips', 'none'],
|
pankso@16509
|
1081 'default': 'none',
|
pankso@16509
|
1082 'help': 'build with simulator'
|
pankso@16509
|
1083 },
|
pankso@16509
|
1084 'unalignedaccesses': {
|
pankso@16509
|
1085 'values': ['default', 'on', 'off'],
|
pankso@16509
|
1086 'default': 'default',
|
pankso@16509
|
1087 'help': 'set whether the ARM target supports unaligned accesses'
|
pankso@16509
|
1088 },
|
pankso@16509
|
1089 'disassembler': {
|
pankso@16509
|
1090 'values': ['on', 'off'],
|
pankso@16509
|
1091 'default': 'off',
|
pankso@16509
|
1092 'help': 'enable the disassembler to inspect generated code'
|
pankso@16509
|
1093 },
|
pankso@16509
|
1094 'fasttls': {
|
pankso@16509
|
1095 'values': ['on', 'off'],
|
pankso@16509
|
1096 'default': 'on',
|
pankso@16509
|
1097 'help': 'enable fast thread local storage support '
|
pankso@16509
|
1098 '(if available on the current architecture/platform)'
|
pankso@16509
|
1099 },
|
pankso@16509
|
1100 'sourcesignatures': {
|
pankso@16509
|
1101 'values': ['MD5', 'timestamp'],
|
pankso@16509
|
1102 'default': 'MD5',
|
pankso@16509
|
1103 'help': 'set how the build system detects file changes'
|
pankso@16509
|
1104 },
|
pankso@16509
|
1105 'console': {
|
pankso@16509
|
1106 'values': ['dumb', 'readline'],
|
pankso@16509
|
1107 'default': 'dumb',
|
pankso@16509
|
1108 'help': 'the console to use for the d8 shell'
|
pankso@16509
|
1109 },
|
pankso@16509
|
1110 'verbose': {
|
pankso@16509
|
1111 'values': ['on', 'off'],
|
pankso@16509
|
1112 'default': 'off',
|
pankso@16509
|
1113 'help': 'more output from compiler and linker'
|
pankso@16509
|
1114 },
|
pankso@16509
|
1115 'visibility': {
|
pankso@16509
|
1116 'values': ['default', 'hidden'],
|
pankso@16509
|
1117 'guess': GuessVisibility,
|
pankso@16509
|
1118 'help': 'shared library symbol visibility'
|
pankso@16509
|
1119 },
|
pankso@16509
|
1120 'strictaliasing': {
|
pankso@16509
|
1121 'values': ['default', 'off'],
|
pankso@16509
|
1122 'guess': GuessStrictAliasing,
|
pankso@16509
|
1123 'help': 'assume strict aliasing while optimizing'
|
pankso@16509
|
1124 },
|
pankso@16509
|
1125 'pgo': {
|
pankso@16509
|
1126 'values': ['off', 'instrument', 'optimize'],
|
pankso@16509
|
1127 'default': 'off',
|
pankso@16509
|
1128 'help': 'select profile guided optimization variant',
|
pankso@16509
|
1129 },
|
pankso@16509
|
1130 'armeabi': {
|
pankso@16509
|
1131 'values': ['hard', 'softfp', 'soft'],
|
pankso@16509
|
1132 'default': 'softfp',
|
pankso@16509
|
1133 'help': 'generate calling conventiont according to selected ARM EABI variant'
|
pankso@16509
|
1134 },
|
pankso@16509
|
1135 'mipsabi': {
|
pankso@16509
|
1136 'values': ['hardfloat', 'softfloat', 'none'],
|
pankso@16509
|
1137 'default': 'hardfloat',
|
pankso@16509
|
1138 'help': 'generate calling conventiont according to selected mips ABI'
|
pankso@16509
|
1139 },
|
pankso@16509
|
1140 'mips_arch_variant': {
|
pankso@16509
|
1141 'values': ['mips32r2', 'mips32r1', 'loongson'],
|
pankso@16509
|
1142 'default': 'mips32r2',
|
pankso@16509
|
1143 'help': 'mips variant'
|
pankso@16509
|
1144 },
|
pankso@16509
|
1145 'compress_startup_data': {
|
pankso@16509
|
1146 'values': ['off', 'bz2'],
|
pankso@16509
|
1147 'default': 'off',
|
pankso@16509
|
1148 'help': 'compress startup data (snapshot) [Linux only]'
|
pankso@16509
|
1149 },
|
pankso@16509
|
1150 'vfp3': {
|
pankso@16509
|
1151 'values': ['on', 'off'],
|
pankso@16509
|
1152 'default': 'on',
|
pankso@16509
|
1153 'help': 'use vfp3 instructions when building the snapshot [Arm only]'
|
pankso@16509
|
1154 },
|
pankso@16509
|
1155 'fpu': {
|
pankso@16509
|
1156 'values': ['on', 'off'],
|
pankso@16509
|
1157 'default': 'on',
|
pankso@16509
|
1158 'help': 'use fpu instructions when building the snapshot [MIPS only]'
|
pankso@16509
|
1159 },
|
pankso@16509
|
1160 'I_know_I_should_build_with_GYP': {
|
pankso@16509
|
1161 'values': ['yes', 'no'],
|
pankso@16509
|
1162 'default': 'no',
|
pankso@16509
|
1163 'help': 'grace period: temporarily override SCons deprecation'
|
pankso@16509
|
1164 }
|
pankso@16509
|
1165
|
pankso@16509
|
1166 }
|
pankso@16509
|
1167
|
pankso@16509
|
1168 ALL_OPTIONS = dict(PLATFORM_OPTIONS, **SIMPLE_OPTIONS)
|
pankso@16509
|
1169
|
pankso@16509
|
1170
|
pankso@16509
|
1171 def AddOptions(options, result):
|
pankso@16509
|
1172 guess_env = Environment(options=result)
|
pankso@16509
|
1173 for (name, option) in options.iteritems():
|
pankso@16509
|
1174 if 'guess' in option:
|
pankso@16509
|
1175 # Option has a guess function
|
pankso@16509
|
1176 guess = option.get('guess')
|
pankso@16509
|
1177 default = guess(guess_env)
|
pankso@16509
|
1178 else:
|
pankso@16509
|
1179 # Option has a fixed default
|
pankso@16509
|
1180 default = option.get('default')
|
pankso@16509
|
1181 help = '%s (%s)' % (option.get('help'), ", ".join(option['values']))
|
pankso@16509
|
1182 result.Add(name, help, default)
|
pankso@16509
|
1183
|
pankso@16509
|
1184
|
pankso@16509
|
1185 def GetOptions():
|
pankso@16509
|
1186 result = Options()
|
pankso@16509
|
1187 result.Add('mode', 'compilation mode (debug, release)', 'release')
|
pankso@16509
|
1188 result.Add('sample', 'build sample (shell, process, lineprocessor)', '')
|
pankso@16509
|
1189 result.Add('cache', 'directory to use for scons build cache', '')
|
pankso@16509
|
1190 result.Add('env', 'override environment settings (NAME0:value0,NAME1:value1,...)', '')
|
pankso@16509
|
1191 result.Add('importenv', 'import environment settings (NAME0,NAME1,...)', '')
|
pankso@16509
|
1192 AddOptions(PLATFORM_OPTIONS, result)
|
pankso@16509
|
1193 AddOptions(SIMPLE_OPTIONS, result)
|
pankso@16509
|
1194 return result
|
pankso@16509
|
1195
|
pankso@16509
|
1196
|
pankso@16509
|
1197 def GetTools(opts):
|
pankso@16509
|
1198 env = Environment(options=opts)
|
pankso@16509
|
1199 os = env['os']
|
pankso@16509
|
1200 toolchain = env['toolchain']
|
pankso@16509
|
1201 if os == 'win32' and toolchain == 'gcc':
|
pankso@16509
|
1202 return ['mingw']
|
pankso@16509
|
1203 elif os == 'win32' and toolchain == 'msvc':
|
pankso@16509
|
1204 return ['msvc', 'mslink', 'mslib', 'msvs']
|
pankso@16509
|
1205 else:
|
pankso@16509
|
1206 return ['default']
|
pankso@16509
|
1207
|
pankso@16509
|
1208
|
pankso@16509
|
1209 def GetVersionComponents():
|
pankso@16509
|
1210 MAJOR_VERSION_PATTERN = re.compile(r"#define\s+MAJOR_VERSION\s+(.*)")
|
pankso@16509
|
1211 MINOR_VERSION_PATTERN = re.compile(r"#define\s+MINOR_VERSION\s+(.*)")
|
pankso@16509
|
1212 BUILD_NUMBER_PATTERN = re.compile(r"#define\s+BUILD_NUMBER\s+(.*)")
|
pankso@16509
|
1213 PATCH_LEVEL_PATTERN = re.compile(r"#define\s+PATCH_LEVEL\s+(.*)")
|
pankso@16509
|
1214
|
pankso@16509
|
1215 patterns = [MAJOR_VERSION_PATTERN,
|
pankso@16509
|
1216 MINOR_VERSION_PATTERN,
|
pankso@16509
|
1217 BUILD_NUMBER_PATTERN,
|
pankso@16509
|
1218 PATCH_LEVEL_PATTERN]
|
pankso@16509
|
1219
|
pankso@16509
|
1220 source = open(join(root_dir, 'src', 'version.cc')).read()
|
pankso@16509
|
1221 version_components = []
|
pankso@16509
|
1222 for pattern in patterns:
|
pankso@16509
|
1223 match = pattern.search(source)
|
pankso@16509
|
1224 if match:
|
pankso@16509
|
1225 version_components.append(match.group(1).strip())
|
pankso@16509
|
1226 else:
|
pankso@16509
|
1227 version_components.append('0')
|
pankso@16509
|
1228
|
pankso@16509
|
1229 return version_components
|
pankso@16509
|
1230
|
pankso@16509
|
1231
|
pankso@16509
|
1232 def GetVersion():
|
pankso@16509
|
1233 version_components = GetVersionComponents()
|
pankso@16509
|
1234
|
pankso@16509
|
1235 if version_components[len(version_components) - 1] == '0':
|
pankso@16509
|
1236 version_components.pop()
|
pankso@16509
|
1237 return '.'.join(version_components)
|
pankso@16509
|
1238
|
pankso@16509
|
1239
|
pankso@16509
|
1240 def GetSpecificSONAME():
|
pankso@16509
|
1241 SONAME_PATTERN = re.compile(r"#define\s+SONAME\s+\"(.*)\"")
|
pankso@16509
|
1242
|
pankso@16509
|
1243 source = open(join(root_dir, 'src', 'version.cc')).read()
|
pankso@16509
|
1244 match = SONAME_PATTERN.search(source)
|
pankso@16509
|
1245
|
pankso@16509
|
1246 if match:
|
pankso@16509
|
1247 return match.group(1).strip()
|
pankso@16509
|
1248 else:
|
pankso@16509
|
1249 return ''
|
pankso@16509
|
1250
|
pankso@16509
|
1251
|
pankso@16509
|
1252 def SplitList(str):
|
pankso@16509
|
1253 return [ s for s in str.split(",") if len(s) > 0 ]
|
pankso@16509
|
1254
|
pankso@16509
|
1255
|
pankso@16509
|
1256 def IsLegal(env, option, values):
|
pankso@16509
|
1257 str = env[option]
|
pankso@16509
|
1258 for s in SplitList(str):
|
pankso@16509
|
1259 if not s in values:
|
pankso@16509
|
1260 Abort("Illegal value for option %s '%s'." % (option, s))
|
pankso@16509
|
1261 return False
|
pankso@16509
|
1262 return True
|
pankso@16509
|
1263
|
pankso@16509
|
1264
|
pankso@16509
|
1265 def WarnAboutDeprecation():
|
pankso@16509
|
1266 print """
|
pankso@16509
|
1267 #####################################################################
|
pankso@16509
|
1268 # #
|
pankso@16509
|
1269 # LAST WARNING: Building V8 with SCons is deprecated. #
|
pankso@16509
|
1270 # #
|
pankso@16509
|
1271 # This only works because you have overridden the kill switch. #
|
pankso@16509
|
1272 # #
|
pankso@16509
|
1273 # MIGRATE TO THE GYP-BASED BUILD NOW! #
|
pankso@16509
|
1274 # #
|
pankso@16509
|
1275 # Instructions: http://code.google.com/p/v8/wiki/BuildingWithGYP. #
|
pankso@16509
|
1276 # #
|
pankso@16509
|
1277 #####################################################################
|
pankso@16509
|
1278 """
|
pankso@16509
|
1279
|
pankso@16509
|
1280
|
pankso@16509
|
1281 def VerifyOptions(env):
|
pankso@16509
|
1282 if env['I_know_I_should_build_with_GYP'] != 'yes':
|
pankso@16509
|
1283 Abort("Building V8 with SCons is no longer supported. Please use GYP "
|
pankso@16509
|
1284 "instead; you can find instructions are at "
|
pankso@16509
|
1285 "http://code.google.com/p/v8/wiki/BuildingWithGYP.\n\n"
|
pankso@16509
|
1286 "Quitting.\n\n"
|
pankso@16509
|
1287 "For a limited grace period, you can specify "
|
pankso@16509
|
1288 "\"I_know_I_should_build_with_GYP=yes\" to override.")
|
pankso@16509
|
1289 else:
|
pankso@16509
|
1290 WarnAboutDeprecation()
|
pankso@16509
|
1291 import atexit
|
pankso@16509
|
1292 atexit.register(WarnAboutDeprecation)
|
pankso@16509
|
1293
|
pankso@16509
|
1294 if not IsLegal(env, 'mode', ['debug', 'release']):
|
pankso@16509
|
1295 return False
|
pankso@16509
|
1296 if not IsLegal(env, 'sample', ["shell", "process", "lineprocessor"]):
|
pankso@16509
|
1297 return False
|
pankso@16509
|
1298 if not IsLegal(env, 'regexp', ["native", "interpreted"]):
|
pankso@16509
|
1299 return False
|
pankso@16509
|
1300 if env['os'] == 'win32' and env['library'] == 'shared' and env['prof'] == 'on':
|
pankso@16509
|
1301 Abort("Profiling on windows only supported for static library.")
|
pankso@16509
|
1302 if env['gdbjit'] == 'on' and ((env['os'] != 'linux' and env['os'] != 'macos') or (env['arch'] != 'ia32' and env['arch'] != 'x64' and env['arch'] != 'arm')):
|
pankso@16509
|
1303 Abort("GDBJIT interface is supported only for Intel-compatible (ia32 or x64) Linux/OSX target.")
|
pankso@16509
|
1304 if env['os'] == 'win32' and env['soname'] == 'on':
|
pankso@16509
|
1305 Abort("Shared Object soname not applicable for Windows.")
|
pankso@16509
|
1306 if env['soname'] == 'on' and env['library'] == 'static':
|
pankso@16509
|
1307 Abort("Shared Object soname not applicable for static library.")
|
pankso@16509
|
1308 if env['os'] != 'win32' and env['pgo'] != 'off':
|
pankso@16509
|
1309 Abort("Profile guided optimization only supported on Windows.")
|
pankso@16509
|
1310 if env['cache'] and not os.path.isdir(env['cache']):
|
pankso@16509
|
1311 Abort("The specified cache directory does not exist.")
|
pankso@16509
|
1312 if not (env['arch'] == 'arm' or env['simulator'] == 'arm') and ('unalignedaccesses' in ARGUMENTS):
|
pankso@16509
|
1313 print env['arch']
|
pankso@16509
|
1314 print env['simulator']
|
pankso@16509
|
1315 Abort("Option unalignedaccesses only supported for the ARM architecture.")
|
pankso@16509
|
1316 if env['os'] != 'linux' and env['compress_startup_data'] != 'off':
|
pankso@16509
|
1317 Abort("Startup data compression is only available on Linux")
|
pankso@16509
|
1318 for (name, option) in ALL_OPTIONS.iteritems():
|
pankso@16509
|
1319 if (not name in env):
|
pankso@16509
|
1320 message = ("A value for option %s must be specified (%s)." %
|
pankso@16509
|
1321 (name, ", ".join(option['values'])))
|
pankso@16509
|
1322 Abort(message)
|
pankso@16509
|
1323 if not env[name] in option['values']:
|
pankso@16509
|
1324 message = ("Unknown %s value '%s'. Possible values are (%s)." %
|
pankso@16509
|
1325 (name, env[name], ", ".join(option['values'])))
|
pankso@16509
|
1326 Abort(message)
|
pankso@16509
|
1327
|
pankso@16509
|
1328
|
pankso@16509
|
1329 class BuildContext(object):
|
pankso@16509
|
1330
|
pankso@16509
|
1331 def __init__(self, options, env_overrides, samples):
|
pankso@16509
|
1332 self.library_targets = []
|
pankso@16509
|
1333 self.mksnapshot_targets = []
|
pankso@16509
|
1334 self.cctest_targets = []
|
pankso@16509
|
1335 self.sample_targets = []
|
pankso@16509
|
1336 self.d8_targets = []
|
pankso@16509
|
1337 self.options = options
|
pankso@16509
|
1338 self.env_overrides = env_overrides
|
pankso@16509
|
1339 self.samples = samples
|
pankso@16509
|
1340 self.preparser_targets = []
|
pankso@16509
|
1341 self.use_snapshot = (options['snapshot'] != 'off')
|
pankso@16509
|
1342 self.build_snapshot = (options['snapshot'] == 'on')
|
pankso@16509
|
1343 self.flags = None
|
pankso@16509
|
1344
|
pankso@16509
|
1345 def AddRelevantFlags(self, initial, flags):
|
pankso@16509
|
1346 result = initial.copy()
|
pankso@16509
|
1347 toolchain = self.options['toolchain']
|
pankso@16509
|
1348 if toolchain in flags:
|
pankso@16509
|
1349 self.AppendFlags(result, flags[toolchain].get('all'))
|
pankso@16509
|
1350 for option in sorted(self.options.keys()):
|
pankso@16509
|
1351 value = self.options[option]
|
pankso@16509
|
1352 self.AppendFlags(result, flags[toolchain].get(option + ':' + value))
|
pankso@16509
|
1353 self.AppendFlags(result, flags.get('all'))
|
pankso@16509
|
1354 return result
|
pankso@16509
|
1355
|
pankso@16509
|
1356 def AddRelevantSubFlags(self, options, flags):
|
pankso@16509
|
1357 self.AppendFlags(options, flags.get('all'))
|
pankso@16509
|
1358 for option in sorted(self.options.keys()):
|
pankso@16509
|
1359 value = self.options[option]
|
pankso@16509
|
1360 self.AppendFlags(options, flags.get(option + ':' + value))
|
pankso@16509
|
1361
|
pankso@16509
|
1362 def GetRelevantSources(self, source):
|
pankso@16509
|
1363 result = []
|
pankso@16509
|
1364 result += source.get('all', [])
|
pankso@16509
|
1365 for (name, value) in self.options.iteritems():
|
pankso@16509
|
1366 source_value = source.get(name + ':' + value, [])
|
pankso@16509
|
1367 if type(source_value) == dict:
|
pankso@16509
|
1368 result += self.GetRelevantSources(source_value)
|
pankso@16509
|
1369 else:
|
pankso@16509
|
1370 result += source_value
|
pankso@16509
|
1371 return sorted(result)
|
pankso@16509
|
1372
|
pankso@16509
|
1373 def AppendFlags(self, options, added):
|
pankso@16509
|
1374 if not added:
|
pankso@16509
|
1375 return
|
pankso@16509
|
1376 for (key, value) in added.iteritems():
|
pankso@16509
|
1377 if key.find(':') != -1:
|
pankso@16509
|
1378 self.AddRelevantSubFlags(options, { key: value })
|
pankso@16509
|
1379 else:
|
pankso@16509
|
1380 if not key in options:
|
pankso@16509
|
1381 options[key] = value
|
pankso@16509
|
1382 else:
|
pankso@16509
|
1383 prefix = options[key]
|
pankso@16509
|
1384 if isinstance(prefix, StringTypes): prefix = prefix.split()
|
pankso@16509
|
1385 options[key] = prefix + value
|
pankso@16509
|
1386
|
pankso@16509
|
1387 def ConfigureObject(self, env, input, **kw):
|
pankso@16509
|
1388 if (kw.has_key('CPPPATH') and env.has_key('CPPPATH')):
|
pankso@16509
|
1389 kw['CPPPATH'] += env['CPPPATH']
|
pankso@16509
|
1390 if self.options['library'] == 'static':
|
pankso@16509
|
1391 return env.StaticObject(input, **kw)
|
pankso@16509
|
1392 else:
|
pankso@16509
|
1393 return env.SharedObject(input, **kw)
|
pankso@16509
|
1394
|
pankso@16509
|
1395 def ApplyEnvOverrides(self, env):
|
pankso@16509
|
1396 if not self.env_overrides:
|
pankso@16509
|
1397 return
|
pankso@16509
|
1398 if type(env['ENV']) == DictType:
|
pankso@16509
|
1399 env['ENV'].update(**self.env_overrides)
|
pankso@16509
|
1400 else:
|
pankso@16509
|
1401 env['ENV'] = self.env_overrides
|
pankso@16509
|
1402
|
pankso@16509
|
1403
|
pankso@16509
|
1404 def PostprocessOptions(options, os):
|
pankso@16509
|
1405 # Adjust architecture if the simulator option has been set
|
pankso@16509
|
1406 if (options['simulator'] != 'none') and (options['arch'] != options['simulator']):
|
pankso@16509
|
1407 if 'arch' in ARGUMENTS:
|
pankso@16509
|
1408 # Print a warning if arch has explicitly been set
|
pankso@16509
|
1409 print "Warning: forcing architecture to match simulator (%s)" % options['simulator']
|
pankso@16509
|
1410 options['arch'] = options['simulator']
|
pankso@16509
|
1411 if (options['prof'] != 'off') and (options['profilingsupport'] == 'off'):
|
pankso@16509
|
1412 # Print a warning if profiling is enabled without profiling support
|
pankso@16509
|
1413 print "Warning: forcing profilingsupport on when prof is on"
|
pankso@16509
|
1414 options['profilingsupport'] = 'on'
|
pankso@16509
|
1415 if os == 'win32' and options['pgo'] != 'off' and options['msvcltcg'] == 'off':
|
pankso@16509
|
1416 if 'msvcltcg' in ARGUMENTS:
|
pankso@16509
|
1417 print "Warning: forcing msvcltcg on as it is required for pgo (%s)" % options['pgo']
|
pankso@16509
|
1418 options['msvcltcg'] = 'on'
|
pankso@16509
|
1419 if (options['mipsabi'] != 'none') and (options['arch'] != 'mips') and (options['simulator'] != 'mips'):
|
pankso@16509
|
1420 options['mipsabi'] = 'none'
|
pankso@16509
|
1421 if options['liveobjectlist'] == 'on':
|
pankso@16509
|
1422 if (options['debuggersupport'] != 'on') or (options['mode'] == 'release'):
|
pankso@16509
|
1423 # Print a warning that liveobjectlist will implicitly enable the debugger
|
pankso@16509
|
1424 print "Warning: forcing debuggersupport on for liveobjectlist"
|
pankso@16509
|
1425 options['debuggersupport'] = 'on'
|
pankso@16509
|
1426 options['inspector'] = 'on'
|
pankso@16509
|
1427 options['objectprint'] = 'on'
|
pankso@16509
|
1428
|
pankso@16509
|
1429
|
pankso@16509
|
1430 def ParseEnvOverrides(arg, imports):
|
pankso@16509
|
1431 # The environment overrides are in the format NAME0:value0,NAME1:value1,...
|
pankso@16509
|
1432 # The environment imports are in the format NAME0,NAME1,...
|
pankso@16509
|
1433 overrides = {}
|
pankso@16509
|
1434 for var in imports.split(','):
|
pankso@16509
|
1435 if var in os.environ:
|
pankso@16509
|
1436 overrides[var] = os.environ[var]
|
pankso@16509
|
1437 for override in arg.split(','):
|
pankso@16509
|
1438 pos = override.find(':')
|
pankso@16509
|
1439 if pos == -1:
|
pankso@16509
|
1440 continue
|
pankso@16509
|
1441 overrides[override[:pos].strip()] = override[pos+1:].strip()
|
pankso@16509
|
1442 return overrides
|
pankso@16509
|
1443
|
pankso@16509
|
1444
|
pankso@16509
|
1445 def BuildSpecific(env, mode, env_overrides, tools):
|
pankso@16509
|
1446 options = {'mode': mode}
|
pankso@16509
|
1447 for option in ALL_OPTIONS:
|
pankso@16509
|
1448 options[option] = env[option]
|
pankso@16509
|
1449 PostprocessOptions(options, env['os'])
|
pankso@16509
|
1450
|
pankso@16509
|
1451 context = BuildContext(options, env_overrides, samples=SplitList(env['sample']))
|
pankso@16509
|
1452
|
pankso@16509
|
1453 # Remove variables which can't be imported from the user's external
|
pankso@16509
|
1454 # environment into a construction environment.
|
pankso@16509
|
1455 user_environ = os.environ.copy()
|
pankso@16509
|
1456 try:
|
pankso@16509
|
1457 del user_environ['ENV']
|
pankso@16509
|
1458 except KeyError:
|
pankso@16509
|
1459 pass
|
pankso@16509
|
1460
|
pankso@16509
|
1461 library_flags = context.AddRelevantFlags(user_environ, LIBRARY_FLAGS)
|
pankso@16509
|
1462 v8_flags = context.AddRelevantFlags(library_flags, V8_EXTRA_FLAGS)
|
pankso@16509
|
1463 mksnapshot_flags = context.AddRelevantFlags(library_flags, MKSNAPSHOT_EXTRA_FLAGS)
|
pankso@16509
|
1464 dtoa_flags = context.AddRelevantFlags(library_flags, DTOA_EXTRA_FLAGS)
|
pankso@16509
|
1465 cctest_flags = context.AddRelevantFlags(v8_flags, CCTEST_EXTRA_FLAGS)
|
pankso@16509
|
1466 sample_flags = context.AddRelevantFlags(user_environ, SAMPLE_FLAGS)
|
pankso@16509
|
1467 preparser_flags = context.AddRelevantFlags(user_environ, PREPARSER_FLAGS)
|
pankso@16509
|
1468 d8_flags = context.AddRelevantFlags(library_flags, D8_FLAGS)
|
pankso@16509
|
1469
|
pankso@16509
|
1470 context.flags = {
|
pankso@16509
|
1471 'v8': v8_flags,
|
pankso@16509
|
1472 'mksnapshot': mksnapshot_flags,
|
pankso@16509
|
1473 'dtoa': dtoa_flags,
|
pankso@16509
|
1474 'cctest': cctest_flags,
|
pankso@16509
|
1475 'sample': sample_flags,
|
pankso@16509
|
1476 'd8': d8_flags,
|
pankso@16509
|
1477 'preparser': preparser_flags
|
pankso@16509
|
1478 }
|
pankso@16509
|
1479
|
pankso@16509
|
1480 # Generate library base name.
|
pankso@16509
|
1481 target_id = mode
|
pankso@16509
|
1482 suffix = SUFFIXES[target_id]
|
pankso@16509
|
1483 library_name = 'v8' + suffix
|
pankso@16509
|
1484 preparser_library_name = 'v8preparser' + suffix
|
pankso@16509
|
1485 version = GetVersion()
|
pankso@16509
|
1486 if context.options['soname'] == 'on':
|
pankso@16509
|
1487 # When building shared object with SONAME version the library name.
|
pankso@16509
|
1488 library_name += '-' + version
|
pankso@16509
|
1489
|
pankso@16509
|
1490 # Generate library SONAME if required by the build.
|
pankso@16509
|
1491 if context.options['soname'] == 'on':
|
pankso@16509
|
1492 soname = GetSpecificSONAME()
|
pankso@16509
|
1493 if soname == '':
|
pankso@16509
|
1494 soname = 'lib' + library_name + '.so'
|
pankso@16509
|
1495 env['SONAME'] = soname
|
pankso@16509
|
1496
|
pankso@16509
|
1497 # Build the object files by invoking SCons recursively.
|
pankso@16509
|
1498 d8_env = Environment(tools=tools)
|
pankso@16509
|
1499 d8_env.Replace(**context.flags['d8'])
|
pankso@16509
|
1500 (object_files, shell_files, mksnapshot, preparser_files) = env.SConscript(
|
pankso@16509
|
1501 join('src', 'SConscript'),
|
pankso@16509
|
1502 build_dir=join('obj', target_id),
|
pankso@16509
|
1503 exports='context tools d8_env',
|
pankso@16509
|
1504 duplicate=False
|
pankso@16509
|
1505 )
|
pankso@16509
|
1506
|
pankso@16509
|
1507 context.mksnapshot_targets.append(mksnapshot)
|
pankso@16509
|
1508
|
pankso@16509
|
1509 # Link the object files into a library.
|
pankso@16509
|
1510 env.Replace(**context.flags['v8'])
|
pankso@16509
|
1511
|
pankso@16509
|
1512 context.ApplyEnvOverrides(env)
|
pankso@16509
|
1513 if context.options['library'] == 'static':
|
pankso@16509
|
1514 library = env.StaticLibrary(library_name, object_files)
|
pankso@16509
|
1515 preparser_library = env.StaticLibrary(preparser_library_name,
|
pankso@16509
|
1516 preparser_files)
|
pankso@16509
|
1517 else:
|
pankso@16509
|
1518 # There seems to be a glitch in the way scons decides where to put
|
pankso@16509
|
1519 # PDB files when compiling using MSVC so we specify it manually.
|
pankso@16509
|
1520 # This should not affect any other platforms.
|
pankso@16509
|
1521 pdb_name = library_name + '.dll.pdb'
|
pankso@16509
|
1522 library = env.SharedLibrary(library_name, object_files, PDB=pdb_name)
|
pankso@16509
|
1523 preparser_pdb_name = preparser_library_name + '.dll.pdb';
|
pankso@16509
|
1524 preparser_soname = 'lib' + preparser_library_name + '.so';
|
pankso@16509
|
1525 preparser_library = env.SharedLibrary(preparser_library_name,
|
pankso@16509
|
1526 preparser_files,
|
pankso@16509
|
1527 PDB=preparser_pdb_name,
|
pankso@16509
|
1528 SONAME=preparser_soname)
|
pankso@16509
|
1529 context.library_targets.append(library)
|
pankso@16509
|
1530 context.library_targets.append(preparser_library)
|
pankso@16509
|
1531
|
pankso@16509
|
1532 context.ApplyEnvOverrides(d8_env)
|
pankso@16509
|
1533 if context.options['library'] == 'static':
|
pankso@16509
|
1534 shell = d8_env.Program('d8' + suffix, object_files + shell_files)
|
pankso@16509
|
1535 else:
|
pankso@16509
|
1536 shell = d8_env.Program('d8' + suffix, shell_files)
|
pankso@16509
|
1537 d8_env.Depends(shell, library)
|
pankso@16509
|
1538 context.d8_targets.append(shell)
|
pankso@16509
|
1539
|
pankso@16509
|
1540 for sample in context.samples:
|
pankso@16509
|
1541 sample_env = Environment(tools=tools)
|
pankso@16509
|
1542 sample_env.Replace(**context.flags['sample'])
|
pankso@16509
|
1543 sample_env.Prepend(LIBS=[library_name])
|
pankso@16509
|
1544 context.ApplyEnvOverrides(sample_env)
|
pankso@16509
|
1545 sample_object = sample_env.SConscript(
|
pankso@16509
|
1546 join('samples', 'SConscript'),
|
pankso@16509
|
1547 build_dir=join('obj', 'sample', sample, target_id),
|
pankso@16509
|
1548 exports='sample context tools',
|
pankso@16509
|
1549 duplicate=False
|
pankso@16509
|
1550 )
|
pankso@16509
|
1551 sample_name = sample + suffix
|
pankso@16509
|
1552 sample_program = sample_env.Program(sample_name, sample_object)
|
pankso@16509
|
1553 sample_env.Depends(sample_program, library)
|
pankso@16509
|
1554 context.sample_targets.append(sample_program)
|
pankso@16509
|
1555
|
pankso@16509
|
1556 cctest_env = env.Copy()
|
pankso@16509
|
1557 cctest_env.Prepend(LIBS=[library_name])
|
pankso@16509
|
1558 cctest_program = cctest_env.SConscript(
|
pankso@16509
|
1559 join('test', 'cctest', 'SConscript'),
|
pankso@16509
|
1560 build_dir=join('obj', 'test', target_id),
|
pankso@16509
|
1561 exports='context object_files tools',
|
pankso@16509
|
1562 duplicate=False
|
pankso@16509
|
1563 )
|
pankso@16509
|
1564 context.cctest_targets.append(cctest_program)
|
pankso@16509
|
1565
|
pankso@16509
|
1566 preparser_env = env.Copy()
|
pankso@16509
|
1567 preparser_env.Replace(**context.flags['preparser'])
|
pankso@16509
|
1568 preparser_env.Prepend(LIBS=[preparser_library_name])
|
pankso@16509
|
1569 context.ApplyEnvOverrides(preparser_env)
|
pankso@16509
|
1570 preparser_object = preparser_env.SConscript(
|
pankso@16509
|
1571 join('preparser', 'SConscript'),
|
pankso@16509
|
1572 build_dir=join('obj', 'preparser', target_id),
|
pankso@16509
|
1573 exports='context tools',
|
pankso@16509
|
1574 duplicate=False
|
pankso@16509
|
1575 )
|
pankso@16509
|
1576 preparser_name = join('obj', 'preparser', target_id, 'preparser')
|
pankso@16509
|
1577 preparser_program = preparser_env.Program(preparser_name, preparser_object);
|
pankso@16509
|
1578 preparser_env.Depends(preparser_program, preparser_library)
|
pankso@16509
|
1579 context.preparser_targets.append(preparser_program)
|
pankso@16509
|
1580
|
pankso@16509
|
1581 return context
|
pankso@16509
|
1582
|
pankso@16509
|
1583
|
pankso@16509
|
1584 def Build():
|
pankso@16509
|
1585 opts = GetOptions()
|
pankso@16509
|
1586 tools = GetTools(opts)
|
pankso@16509
|
1587 env = Environment(options=opts, tools=tools)
|
pankso@16509
|
1588
|
pankso@16509
|
1589 Help(opts.GenerateHelpText(env))
|
pankso@16509
|
1590 VerifyOptions(env)
|
pankso@16509
|
1591 env_overrides = ParseEnvOverrides(env['env'], env['importenv'])
|
pankso@16509
|
1592
|
pankso@16509
|
1593 SourceSignatures(env['sourcesignatures'])
|
pankso@16509
|
1594
|
pankso@16509
|
1595 libraries = []
|
pankso@16509
|
1596 mksnapshots = []
|
pankso@16509
|
1597 cctests = []
|
pankso@16509
|
1598 samples = []
|
pankso@16509
|
1599 preparsers = []
|
pankso@16509
|
1600 d8s = []
|
pankso@16509
|
1601 modes = SplitList(env['mode'])
|
pankso@16509
|
1602 for mode in modes:
|
pankso@16509
|
1603 context = BuildSpecific(env.Copy(), mode, env_overrides, tools)
|
pankso@16509
|
1604 libraries += context.library_targets
|
pankso@16509
|
1605 mksnapshots += context.mksnapshot_targets
|
pankso@16509
|
1606 cctests += context.cctest_targets
|
pankso@16509
|
1607 samples += context.sample_targets
|
pankso@16509
|
1608 preparsers += context.preparser_targets
|
pankso@16509
|
1609 d8s += context.d8_targets
|
pankso@16509
|
1610
|
pankso@16509
|
1611 env.Alias('library', libraries)
|
pankso@16509
|
1612 env.Alias('mksnapshot', mksnapshots)
|
pankso@16509
|
1613 env.Alias('cctests', cctests)
|
pankso@16509
|
1614 env.Alias('sample', samples)
|
pankso@16509
|
1615 env.Alias('d8', d8s)
|
pankso@16509
|
1616 env.Alias('preparser', preparsers)
|
pankso@16509
|
1617
|
pankso@16509
|
1618 if env['sample']:
|
pankso@16509
|
1619 env.Default('sample')
|
pankso@16509
|
1620 else:
|
pankso@16509
|
1621 env.Default('library')
|
pankso@16509
|
1622
|
pankso@16509
|
1623 if env['cache']:
|
pankso@16509
|
1624 CacheDir(env['cache'])
|
pankso@16509
|
1625
|
pankso@16509
|
1626 # We disable deprecation warnings because we need to be able to use
|
pankso@16509
|
1627 # env.Copy without getting warnings for compatibility with older
|
pankso@16509
|
1628 # version of scons. Also, there's a bug in some revisions that
|
pankso@16509
|
1629 # doesn't allow this flag to be set, so we swallow any exceptions.
|
pankso@16509
|
1630 # Lovely.
|
pankso@16509
|
1631 try:
|
pankso@16509
|
1632 SetOption('warn', 'no-deprecated')
|
pankso@16509
|
1633 except:
|
pankso@16509
|
1634 pass
|
pankso@16509
|
1635
|
pankso@16509
|
1636 Build()
|