blob: 772ac4eb2c529d359453218ee1760e33ea7442bf [file] [log] [blame]
yangguo@chromium.orgab30bb82012-02-24 14:41:46 +00001# Copyright 2012 the V8 project authors. All rights reserved.
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +00002# Redistribution and use in source and binary forms, with or without
3# modification, are permitted provided that the following conditions are
4# met:
5#
6# * Redistributions of source code must retain the above copyright
7# notice, this list of conditions and the following disclaimer.
8# * Redistributions in binary form must reproduce the above
9# copyright notice, this list of conditions and the following
10# disclaimer in the documentation and/or other materials provided
11# with the distribution.
12# * Neither the name of Google Inc. nor the names of its
13# contributors may be used to endorse or promote products derived
14# from this software without specific prior written permission.
15#
16# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28import sys
29from os.path import join, dirname, abspath
30root_dir = dirname(File('SConstruct').rfile().abspath)
31sys.path.append(join(root_dir, 'tools'))
32import js2c
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +000033Import('context')
kmillikin@chromium.orgc36ce6e2011-04-04 08:25:31 +000034Import('tools')
kmillikin@chromium.org7c2628c2011-08-10 11:27:35 +000035Import('d8_env')
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +000036
37
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +000038SOURCES = {
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000039 'all': Split("""
40 accessors.cc
41 allocation.cc
42 api.cc
43 assembler.cc
44 ast.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +000045 atomicops_internals_x86_gcc.cc
erik.corry@gmail.com4a6c3272010-11-18 12:04:40 +000046 bignum-dtoa.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +000047 bignum.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000048 bootstrapper.cc
49 builtins.cc
ager@chromium.orgb61a0d12010-10-13 08:35:23 +000050 cached-powers.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000051 checks.cc
whesse@chromium.orgcec079d2010-03-22 14:44:04 +000052 circular-queue.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000053 code-stubs.cc
54 codegen.cc
55 compilation-cache.cc
56 compiler.cc
57 contexts.cc
58 conversions.cc
59 counters.cc
whesse@chromium.orgcec079d2010-03-22 14:44:04 +000060 cpu-profiler.cc
sgjesse@chromium.orgb302e562010-02-03 11:26:59 +000061 data-flow.cc
svenpanne@chromium.org4efbdb12012-03-12 08:18:42 +000062 date.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000063 dateparser.cc
64 debug-agent.cc
65 debug.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +000066 deoptimizer.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000067 disassembler.cc
whesse@chromium.orgcec079d2010-03-22 14:44:04 +000068 diy-fp.cc
sgjesse@chromium.org720dc0b2010-05-10 09:25:39 +000069 dtoa.cc
svenpanne@chromium.org830d30c2012-05-29 13:20:14 +000070 elements-kind.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +000071 elements.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000072 execution.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +000073 extensions/externalize-string-extension.cc
74 extensions/gc-extension.cc
yangguo@chromium.org304cc332012-07-24 07:59:48 +000075 extensions/statistics-extension.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000076 factory.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +000077 fast-dtoa.cc
78 fixed-dtoa.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000079 flags.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000080 frames.cc
sgjesse@chromium.orgb302e562010-02-03 11:26:59 +000081 full-codegen.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000082 func-name-inferrer.cc
erik.corry@gmail.com0511e242011-01-19 11:11:08 +000083 gdb-jit.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000084 global-handles.cc
85 handles.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000086 heap-profiler.cc
ulan@chromium.org2e04b582013-02-21 14:06:02 +000087 heap-snapshot-generator.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000088 heap.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +000089 hydrogen-instructions.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +000090 hydrogen.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000091 ic.cc
erik.corry@gmail.comc3b670f2011-10-05 21:44:48 +000092 incremental-marking.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +000093 interface.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000094 interpreter-irregexp.cc
sgjesse@chromium.orgea88ce92011-03-23 11:19:56 +000095 isolate.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +000096 jsregexp.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +000097 lithium-allocator.cc
kmillikin@chromium.orgd2c22f02011-01-10 08:15:37 +000098 lithium.cc
ager@chromium.org5c838252010-02-19 08:53:10 +000099 liveedit.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000100 log-utils.cc
101 log.cc
102 mark-compact.cc
103 messages.cc
ager@chromium.org0ee099b2011-01-25 14:06:47 +0000104 objects-printer.cc
ager@chromium.orgea4f62e2010-08-16 16:28:43 +0000105 objects-visiting.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +0000106 objects.cc
jkummerow@chromium.org1456e702012-03-30 08:38:13 +0000107 once.cc
yangguo@chromium.org304cc332012-07-24 07:59:48 +0000108 optimizing-compiler-thread.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000109 parser.cc
ager@chromium.orgbeb25712010-11-29 08:02:25 +0000110 preparse-data.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +0000111 preparser.cc
fschneider@chromium.org086aac62010-03-17 13:18:24 +0000112 profile-generator.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000113 property.cc
114 regexp-macro-assembler-irregexp.cc
115 regexp-macro-assembler.cc
116 regexp-stack.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000117 rewriter.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +0000118 runtime-profiler.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +0000119 runtime.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +0000120 safepoint-table.cc
ricow@chromium.org55ee8072011-09-08 16:33:10 +0000121 scanner-character-streams.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +0000122 scanner.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000123 scopeinfo.cc
124 scopes.cc
125 serialize.cc
126 snapshot-common.cc
127 spaces.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +0000128 store-buffer.cc
kmillikin@chromium.orgf05f2912010-09-30 10:07:24 +0000129 string-search.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000130 string-stream.cc
ager@chromium.orgb61a0d12010-10-13 08:35:23 +0000131 strtod.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000132 stub-cache.cc
133 token.cc
yangguo@chromium.org99aa4902012-07-06 16:21:55 +0000134 transitions.cc
ricow@chromium.orgaa1b6162010-03-29 07:44:58 +0000135 type-info.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000136 unicode.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000137 utils.cc
138 v8-counters.cc
139 v8.cc
jkummerow@chromium.orgddda9e82011-07-06 11:27:02 +0000140 v8conversions.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000141 v8threads.cc
jkummerow@chromium.orgddda9e82011-07-06 11:27:02 +0000142 v8utils.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000143 variables.cc
144 version.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000145 zone.cc
146 """),
147 'arch:arm': Split("""
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000148 arm/builtins-arm.cc
ricow@chromium.org65fae842010-08-25 15:26:24 +0000149 arm/code-stubs-arm.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000150 arm/codegen-arm.cc
151 arm/constants-arm.cc
152 arm/cpu-arm.cc
153 arm/debug-arm.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +0000154 arm/deoptimizer-arm.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000155 arm/disasm-arm.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000156 arm/frames-arm.cc
sgjesse@chromium.orgb302e562010-02-03 11:26:59 +0000157 arm/full-codegen-arm.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000158 arm/ic-arm.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +0000159 arm/lithium-arm.cc
160 arm/lithium-codegen-arm.cc
fschneider@chromium.org3a5fd782011-02-24 10:10:44 +0000161 arm/lithium-gap-resolver-arm.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000162 arm/macro-assembler-arm.cc
163 arm/regexp-macro-assembler-arm.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000164 arm/stub-cache-arm.cc
kmillikin@chromium.org13bd2942009-12-16 15:36:05 +0000165 arm/assembler-arm.cc
166 """),
ager@chromium.org5c838252010-02-19 08:53:10 +0000167 'arch:mips': Split("""
168 mips/assembler-mips.cc
169 mips/builtins-mips.cc
lrn@chromium.org7516f052011-03-30 08:52:27 +0000170 mips/code-stubs-mips.cc
ager@chromium.org5c838252010-02-19 08:53:10 +0000171 mips/codegen-mips.cc
172 mips/constants-mips.cc
173 mips/cpu-mips.cc
174 mips/debug-mips.cc
lrn@chromium.org7516f052011-03-30 08:52:27 +0000175 mips/deoptimizer-mips.cc
ager@chromium.org5c838252010-02-19 08:53:10 +0000176 mips/disasm-mips.cc
ager@chromium.org5c838252010-02-19 08:53:10 +0000177 mips/frames-mips.cc
lrn@chromium.org7516f052011-03-30 08:52:27 +0000178 mips/full-codegen-mips.cc
ager@chromium.org5c838252010-02-19 08:53:10 +0000179 mips/ic-mips.cc
jkummerow@chromium.orgc3b37122011-11-07 10:14:12 +0000180 mips/lithium-codegen-mips.cc
181 mips/lithium-gap-resolver-mips.cc
182 mips/lithium-mips.cc
ager@chromium.org5c838252010-02-19 08:53:10 +0000183 mips/macro-assembler-mips.cc
lrn@chromium.org7516f052011-03-30 08:52:27 +0000184 mips/regexp-macro-assembler-mips.cc
ager@chromium.org5c838252010-02-19 08:53:10 +0000185 mips/stub-cache-mips.cc
ager@chromium.org5c838252010-02-19 08:53:10 +0000186 """),
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000187 'arch:ia32': Split("""
188 ia32/assembler-ia32.cc
189 ia32/builtins-ia32.cc
ricow@chromium.org65fae842010-08-25 15:26:24 +0000190 ia32/code-stubs-ia32.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000191 ia32/codegen-ia32.cc
192 ia32/cpu-ia32.cc
193 ia32/debug-ia32.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +0000194 ia32/deoptimizer-ia32.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000195 ia32/disasm-ia32.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000196 ia32/frames-ia32.cc
sgjesse@chromium.orgb302e562010-02-03 11:26:59 +0000197 ia32/full-codegen-ia32.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000198 ia32/ic-ia32.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +0000199 ia32/lithium-codegen-ia32.cc
erik.corry@gmail.com0511e242011-01-19 11:11:08 +0000200 ia32/lithium-gap-resolver-ia32.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +0000201 ia32/lithium-ia32.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000202 ia32/macro-assembler-ia32.cc
203 ia32/regexp-macro-assembler-ia32.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000204 ia32/stub-cache-ia32.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000205 """),
206 'arch:x64': Split("""
207 x64/assembler-x64.cc
208 x64/builtins-x64.cc
ricow@chromium.org65fae842010-08-25 15:26:24 +0000209 x64/code-stubs-x64.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000210 x64/codegen-x64.cc
211 x64/cpu-x64.cc
212 x64/debug-x64.cc
kasperl@chromium.orga5551262010-12-07 12:49:48 +0000213 x64/deoptimizer-x64.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000214 x64/disasm-x64.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000215 x64/frames-x64.cc
sgjesse@chromium.orgb302e562010-02-03 11:26:59 +0000216 x64/full-codegen-x64.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000217 x64/ic-x64.cc
sgjesse@chromium.orgc6c57182011-01-17 12:24:25 +0000218 x64/lithium-codegen-x64.cc
ager@chromium.org0ee099b2011-01-25 14:06:47 +0000219 x64/lithium-gap-resolver-x64.cc
220 x64/lithium-x64.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000221 x64/macro-assembler-x64.cc
222 x64/regexp-macro-assembler-x64.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000223 x64/stub-cache-x64.cc
christian.plesner.hansen@gmail.com9d58c2b2009-10-16 11:48:38 +0000224 """),
ager@chromium.org3a37e9b2009-04-27 09:26:21 +0000225 'simulator:arm': ['arm/simulator-arm.cc'],
ager@chromium.org5c838252010-02-19 08:53:10 +0000226 'simulator:mips': ['mips/simulator-mips.cc'],
ager@chromium.orgbb29dc92009-03-24 13:25:23 +0000227 'os:freebsd': ['platform-freebsd.cc', 'platform-posix.cc'],
sgjesse@chromium.orgac6aa172009-12-04 12:29:05 +0000228 'os:openbsd': ['platform-openbsd.cc', 'platform-posix.cc'],
ager@chromium.orgbb29dc92009-03-24 13:25:23 +0000229 'os:linux': ['platform-linux.cc', 'platform-posix.cc'],
230 'os:android': ['platform-linux.cc', 'platform-posix.cc'],
231 'os:macos': ['platform-macos.cc', 'platform-posix.cc'],
sgjesse@chromium.orgb302e562010-02-03 11:26:59 +0000232 'os:solaris': ['platform-solaris.cc', 'platform-posix.cc'],
fschneider@chromium.org3a5fd782011-02-24 10:10:44 +0000233 'os:cygwin': ['platform-cygwin.cc', 'platform-posix.cc'],
ager@chromium.orga74f0da2008-12-03 16:05:52 +0000234 'os:nullos': ['platform-nullos.cc'],
ricow@chromium.org55ee8072011-09-08 16:33:10 +0000235 'os:win32': ['platform-win32.cc', 'win32-math.cc'],
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +0000236 'mode:release': [],
ager@chromium.orga74f0da2008-12-03 16:05:52 +0000237 'mode:debug': [
ager@chromium.org0ee099b2011-01-25 14:06:47 +0000238 'objects-debug.cc', 'prettyprinter.cc', 'regexp-macro-assembler-tracer.cc'
239 ]
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000240}
241
242
lrn@chromium.org7516f052011-03-30 08:52:27 +0000243PREPARSER_SOURCES = {
244 'all': Split("""
245 allocation.cc
ricow@chromium.org55ee8072011-09-08 16:33:10 +0000246 bignum.cc
247 bignum-dtoa.cc
248 cached-powers.cc
249 conversions.cc
250 diy-fp.cc
251 dtoa.cc
252 fast-dtoa.cc
253 fixed-dtoa.cc
lrn@chromium.org7516f052011-03-30 08:52:27 +0000254 preparse-data.cc
255 preparser.cc
256 preparser-api.cc
ricow@chromium.org55ee8072011-09-08 16:33:10 +0000257 scanner.cc
258 strtod.cc
lrn@chromium.org7516f052011-03-30 08:52:27 +0000259 token.cc
260 unicode.cc
jkummerow@chromium.orgddda9e82011-07-06 11:27:02 +0000261 utils.cc
ricow@chromium.org55ee8072011-09-08 16:33:10 +0000262 """),
263 'os:win32': ['win32-math.cc']
lrn@chromium.org7516f052011-03-30 08:52:27 +0000264}
265
266
svenpanne@chromium.org84bcc552011-07-18 09:50:57 +0000267D8_LIGHT_FILES = {
268 'all': [
269 'd8.cc'
270 ]
271}
272
273
274D8_FULL_FILES = {
kasperl@chromium.org5a8ca6c2008-10-23 13:57:19 +0000275 'all': [
christian.plesner.hansen@gmail.com37abdec2009-01-06 14:43:28 +0000276 'd8.cc', 'd8-debug.cc'
kasperl@chromium.org5a8ca6c2008-10-23 13:57:19 +0000277 ],
ager@chromium.org41826e72009-03-30 13:30:57 +0000278 'os:linux': [
279 'd8-posix.cc'
280 ],
281 'os:macos': [
282 'd8-posix.cc'
283 ],
284 'os:android': [
285 'd8-posix.cc'
286 ],
287 'os:freebsd': [
288 'd8-posix.cc'
289 ],
sgjesse@chromium.orgac6aa172009-12-04 12:29:05 +0000290 'os:openbsd': [
291 'd8-posix.cc'
292 ],
sgjesse@chromium.orgb302e562010-02-03 11:26:59 +0000293 'os:solaris': [
294 'd8-posix.cc'
295 ],
fschneider@chromium.org3a5fd782011-02-24 10:10:44 +0000296 'os:cygwin': [
297 'd8-posix.cc'
298 ],
ager@chromium.org71daaf62009-04-01 07:22:49 +0000299 'os:win32': [
ager@chromium.org41826e72009-03-30 13:30:57 +0000300 'd8-windows.cc'
301 ],
302 'os:nullos': [
303 'd8-windows.cc' # Empty implementation at the moment.
304 ],
kasperl@chromium.org5a8ca6c2008-10-23 13:57:19 +0000305 'console:readline': [
306 'd8-readline.cc'
307 ]
308}
309
310
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000311LIBRARY_FILES = '''
312runtime.js
313v8natives.js
314array.js
315string.js
316uri.js
317math.js
318messages.js
319apinatives.js
kmillikin@chromium.org5d8f0e62010-03-24 08:21:20 +0000320date.js
321regexp.js
322json.js
323liveedit-debugger.js
324mirror-debugger.js
325debug-debugger.js
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000326'''.split()
327
328
danno@chromium.org160a7b02011-04-18 15:51:38 +0000329EXPERIMENTAL_LIBRARY_FILES = '''
yangguo@chromium.org4a9f6552013-03-04 14:46:33 +0000330symbol.js
danno@chromium.org160a7b02011-04-18 15:51:38 +0000331proxy.js
erik.corry@gmail.com394dbcf2011-10-27 07:38:48 +0000332collection.js
danno@chromium.org160a7b02011-04-18 15:51:38 +0000333'''.split()
334
335
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000336def Abort(message):
337 print message
338 sys.exit(1)
339
340
kasper.lund7276f142008-07-30 08:49:36 +0000341def ConfigureObjectFiles():
kmillikin@chromium.orgc36ce6e2011-04-04 08:25:31 +0000342 env = Environment(tools=tools)
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +0000343 env.Replace(**context.flags['v8'])
ager@chromium.org9258b6b2008-09-11 09:11:10 +0000344 context.ApplyEnvOverrides(env)
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000345 env['BUILDERS']['JS2C'] = Builder(action=js2c.JS2C)
whesse@chromium.org030d38e2011-07-13 13:23:34 +0000346 env['BUILDERS']['Snapshot'] = Builder(action='$SOURCE $TARGET --logfile "$LOGFILE" --log-snapshot-positions')
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000347
jkummerow@chromium.orge297f592011-06-08 10:05:15 +0000348 def BuildJS2CEnv(type):
349 js2c_env = { 'TYPE': type, 'COMPRESSION': 'off' }
350 if 'COMPRESS_STARTUP_DATA_BZ2' in env['CPPDEFINES']:
351 js2c_env['COMPRESSION'] = 'bz2'
352 return js2c_env
353
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000354 # Build the standard platform-independent source files.
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +0000355 source_files = context.GetRelevantSources(SOURCES)
jkummerow@chromium.orge297f592011-06-08 10:05:15 +0000356 d8_js = env.JS2C('d8-js.cc', 'd8.js', **{'TYPE': 'D8', 'COMPRESSION': 'off'})
kasperl@chromium.org5a8ca6c2008-10-23 13:57:19 +0000357 d8_js_obj = context.ConfigureObject(env, d8_js, CPPPATH=['.'])
svenpanne@chromium.org84bcc552011-07-18 09:50:57 +0000358 if context.options['library'] == 'shared':
359 d8_files = context.GetRelevantSources(D8_LIGHT_FILES)
360 d8_objs = []
361 else:
362 d8_files = context.GetRelevantSources(D8_FULL_FILES)
363 d8_objs = [d8_js_obj]
kmillikin@chromium.org7c2628c2011-08-10 11:27:35 +0000364 d8_objs.append(context.ConfigureObject(d8_env, [d8_files]))
kasperl@chromium.org5a8ca6c2008-10-23 13:57:19 +0000365
kasper.lund7276f142008-07-30 08:49:36 +0000366 # Combine the JavaScript library files into a single C++ file and
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000367 # compile it.
368 library_files = [s for s in LIBRARY_FILES]
369 library_files.append('macros.py')
jkummerow@chromium.orge297f592011-06-08 10:05:15 +0000370 libraries_src = env.JS2C(
371 ['libraries.cc'], library_files, **BuildJS2CEnv('CORE'))
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +0000372 libraries_obj = context.ConfigureObject(env, libraries_src, CPPPATH=['.'])
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000373
danno@chromium.org160a7b02011-04-18 15:51:38 +0000374 # Combine the experimental JavaScript library files into a C++ file
375 # and compile it.
376 experimental_library_files = [ s for s in EXPERIMENTAL_LIBRARY_FILES ]
377 experimental_library_files.append('macros.py')
jkummerow@chromium.orge297f592011-06-08 10:05:15 +0000378 experimental_libraries_src = env.JS2C(['experimental-libraries.cc'],
379 experimental_library_files,
380 **BuildJS2CEnv('EXPERIMENTAL'))
danno@chromium.org160a7b02011-04-18 15:51:38 +0000381 experimental_libraries_obj = context.ConfigureObject(env, experimental_libraries_src, CPPPATH=['.'])
382
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +0000383 source_objs = context.ConfigureObject(env, source_files)
vegorov@chromium.org21b5e952010-11-23 10:24:40 +0000384 non_snapshot_files = [source_objs]
kasperl@chromium.orgb9123622008-09-17 14:05:56 +0000385
lrn@chromium.org7516f052011-03-30 08:52:27 +0000386 preparser_source_files = context.GetRelevantSources(PREPARSER_SOURCES)
387 preparser_objs = context.ConfigureObject(env, preparser_source_files)
388
whesse@chromium.orgb6e43bb2010-04-14 09:36:28 +0000389 # Create snapshot if necessary. For cross compilation you should either
390 # do without snapshots and take the performance hit or you should build a
391 # host VM with the simulator=arm and snapshot=on options and then take the
392 # resulting snapshot.cc file from obj/release and put it in the src
393 # directory. Then rebuild the VM with the cross compiler and specify
394 # snapshot=nobuild on the scons command line.
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +0000395 empty_snapshot_obj = context.ConfigureObject(env, 'snapshot-empty.cc')
iposva@chromium.org245aa852009-02-10 00:49:54 +0000396 mksnapshot_env = env.Copy()
397 mksnapshot_env.Replace(**context.flags['mksnapshot'])
398 mksnapshot_src = 'mksnapshot.cc'
danno@chromium.org160a7b02011-04-18 15:51:38 +0000399 mksnapshot = mksnapshot_env.Program('mksnapshot', [mksnapshot_src, libraries_obj, experimental_libraries_obj, non_snapshot_files, empty_snapshot_obj], PDB='mksnapshot.exe.pdb')
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +0000400 if context.use_snapshot:
iposva@chromium.org245aa852009-02-10 00:49:54 +0000401 if context.build_snapshot:
402 snapshot_cc = env.Snapshot('snapshot.cc', mksnapshot, LOGFILE=File('snapshot.log').abspath)
403 else:
whesse@chromium.orgb6e43bb2010-04-14 09:36:28 +0000404 snapshot_cc = 'snapshot.cc'
mads.s.ager@gmail.com9a4089a2008-09-01 08:55:01 +0000405 snapshot_obj = context.ConfigureObject(env, snapshot_cc, CPPPATH=['.'])
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000406 else:
407 snapshot_obj = empty_snapshot_obj
danno@chromium.org160a7b02011-04-18 15:51:38 +0000408 library_objs = [non_snapshot_files, libraries_obj, experimental_libraries_obj, snapshot_obj]
lrn@chromium.org7516f052011-03-30 08:52:27 +0000409 return (library_objs, d8_objs, [mksnapshot], preparser_objs)
christian.plesner.hansen43d26ec2008-07-03 15:10:15 +0000410
411
lrn@chromium.org7516f052011-03-30 08:52:27 +0000412(library_objs, d8_objs, mksnapshot, preparser_objs) = ConfigureObjectFiles()
413Return('library_objs d8_objs mksnapshot preparser_objs')