utils.py revision 3ef787dbeca8a5fb1086949cda830dccee07bfbd
1# Copyright 2012 the V8 project authors. All rights reserved.
2# 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
28{
29  'includes': ['../../build/common.gypi'],
30  'conditions': [
31    ['use_system_v8==0', {
32      'targets': [
33        {
34          'target_name': 'v8',
35          'dependencies_traverse': 1,
36          'conditions': [
37            ['want_separate_host_toolset==1', {
38              'toolsets': ['host', 'target'],
39            }, {
40              'toolsets': ['target'],
41            }],
42            ['v8_use_snapshot=="true"', {
43              # The dependency on v8_base should come from a transitive
44              # dependency however the Android toolchain requires libv8_base.a
45              # to appear before libv8_snapshot.a so it's listed explicitly.
46              'dependencies': ['v8_base', 'v8_snapshot'],
47            },
48            {
49              # The dependency on v8_base should come from a transitive
50              # dependency however the Android toolchain requires libv8_base.a
51              # to appear before libv8_snapshot.a so it's listed explicitly.
52              'dependencies': ['v8_base', 'v8_nosnapshot'],
53            }],
54            ['component=="shared_library"', {
55              'type': '<(component)',
56              'sources': [
57                # Note: on non-Windows we still build this file so that gyp
58                # has some sources to link into the component.
59                '../../src/v8dll-main.cc',
60              ],
61              'conditions': [
62                ['OS=="win"', {
63                  'defines': [
64                    'BUILDING_V8_SHARED',
65                  ],
66                  'direct_dependent_settings': {
67                    'defines': [
68                      'USING_V8_SHARED',
69                    ],
70                  },
71                }, {
72                  'defines': [
73                    'V8_SHARED',
74                  ],
75                  'direct_dependent_settings': {
76                    'defines': [
77                      'V8_SHARED',
78                    ],
79                  },
80                }],
81                ['soname_version!=""', {
82                  'product_extension': 'so.<(soname_version)',
83                }],
84              ],
85            },
86            {
87              'type': 'none',
88            }],
89          ],
90          'direct_dependent_settings': {
91            'include_dirs': [
92              '../../include',
93            ],
94          },
95        },
96        {
97          'target_name': 'v8_snapshot',
98          'type': '<(library)',
99          'conditions': [
100            ['want_separate_host_toolset==1', {
101              'toolsets': ['host', 'target'],
102              'dependencies': ['mksnapshot#host', 'js2c#host'],
103            }, {
104              'toolsets': ['target'],
105              'dependencies': ['mksnapshot', 'js2c'],
106            }],
107            ['component=="shared_library"', {
108              'conditions': [
109                ['OS=="win"', {
110                  'defines': [
111                    'BUILDING_V8_SHARED',
112                  ],
113                  'direct_dependent_settings': {
114                    'defines': [
115                      'USING_V8_SHARED',
116                    ],
117                  },
118                }, {
119                  'defines': [
120                    'V8_SHARED',
121                  ],
122                  'direct_dependent_settings': {
123                    'defines': [
124                      'V8_SHARED',
125                    ],
126                  },
127                }],
128              ],
129            }],
130          ],
131          'dependencies': [
132            'v8_base',
133          ],
134          'include_dirs+': [
135            '../../src',
136          ],
137          'sources': [
138            '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
139            '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
140            '<(INTERMEDIATE_DIR)/snapshot.cc',
141          ],
142          'actions': [
143            {
144              'action_name': 'run_mksnapshot',
145              'inputs': [
146                '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)',
147              ],
148              'outputs': [
149                '<(INTERMEDIATE_DIR)/snapshot.cc',
150              ],
151              'variables': {
152                'mksnapshot_flags': [
153                  '--log-snapshot-positions',
154                  '--logfile', '<(INTERMEDIATE_DIR)/snapshot.log',
155                ],
156              },
157              'conditions': [
158                ['v8_target_arch=="arm"', {
159                  # The following rules should be consistent with chromium's
160                  # common.gypi and V8's runtime rule to ensure they all generate
161                  # the same correct machine code. The following issue is about
162                  # V8's runtime rule about vfpv3 and neon:
163                  # http://code.google.com/p/v8/issues/detail?id=914
164                  'conditions': [
165                    ['armv7==1', {
166                      # The ARM Architecture Manual mandates VFPv3 if NEON is
167                      # available.
168                      # The current V8 doesn't use d16-d31, so for vfpv3-d16, we can
169                      # also enable vfp3 for the better performance.
170                      'conditions': [
171                        ['arm_neon!=1 and arm_fpu!="vfpv3" and arm_fpu!="vfpv3-d16"', {
172                          'variables': {
173                            'mksnapshot_flags': [
174                              '--noenable_vfp3',
175                            ],
176                          },
177                        }],
178                      ],
179                    },{ # else: armv7!=1
180                      'variables': {
181                        'mksnapshot_flags': [
182                          '--noenable_armv7',
183                          '--noenable_vfp3',
184                        ],
185                      },
186                    }],
187                  ],
188                }],
189              ],
190              'action': [
191                '<@(_inputs)',
192                '<@(mksnapshot_flags)',
193                '<@(_outputs)'
194              ],
195            },
196          ],
197        },
198        {
199          'target_name': 'v8_nosnapshot',
200          'type': '<(library)',
201          'dependencies': [
202            'v8_base',
203          ],
204          'include_dirs+': [
205            '../../src',
206          ],
207          'sources': [
208            '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
209            '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
210            '../../src/snapshot-empty.cc',
211          ],
212          'conditions': [
213            ['want_separate_host_toolset==1', {
214              'toolsets': ['host', 'target'],
215              'dependencies': ['js2c#host'],
216            }, {
217              'toolsets': ['target'],
218              'dependencies': ['js2c'],
219            }],
220            ['component=="shared_library"', {
221              'defines': [
222                'BUILDING_V8_SHARED',
223                'V8_SHARED',
224              ],
225            }],
226          ]
227        },
228        {
229          'target_name': 'v8_base',
230          'type': '<(library)',
231          'variables': {
232            'optimize': 'max',
233          },
234          'include_dirs+': [
235            '../../src',
236          ],
237          'sources': [
238            '../../src/accessors.cc',
239            '../../src/accessors.h',
240            '../../src/allocation.cc',
241            '../../src/allocation.h',
242            '../../src/api.cc',
243            '../../src/api.h',
244            '../../src/apiutils.h',
245            '../../src/arguments.h',
246            '../../src/assembler.cc',
247            '../../src/assembler.h',
248            '../../src/ast.cc',
249            '../../src/ast.h',
250            '../../src/atomicops.h',
251            '../../src/atomicops_internals_x86_gcc.cc',
252            '../../src/bignum.cc',
253            '../../src/bignum.h',
254            '../../src/bignum-dtoa.cc',
255            '../../src/bignum-dtoa.h',
256            '../../src/bootstrapper.cc',
257            '../../src/bootstrapper.h',
258            '../../src/builtins.cc',
259            '../../src/builtins.h',
260            '../../src/bytecodes-irregexp.h',
261            '../../src/cached-powers.cc',
262            '../../src/cached-powers.h',
263            '../../src/char-predicates-inl.h',
264            '../../src/char-predicates.h',
265            '../../src/checks.cc',
266            '../../src/checks.h',
267            '../../src/circular-queue-inl.h',
268            '../../src/circular-queue.cc',
269            '../../src/circular-queue.h',
270            '../../src/code-stubs.cc',
271            '../../src/code-stubs.h',
272            '../../src/code.h',
273            '../../src/codegen.cc',
274            '../../src/codegen.h',
275            '../../src/compilation-cache.cc',
276            '../../src/compilation-cache.h',
277            '../../src/compiler.cc',
278            '../../src/compiler.h',
279            '../../src/contexts.cc',
280            '../../src/contexts.h',
281            '../../src/conversions-inl.h',
282            '../../src/conversions.cc',
283            '../../src/conversions.h',
284            '../../src/counters.cc',
285            '../../src/counters.h',
286            '../../src/cpu.h',
287            '../../src/cpu-profiler-inl.h',
288            '../../src/cpu-profiler.cc',
289            '../../src/cpu-profiler.h',
290            '../../src/data-flow.cc',
291            '../../src/data-flow.h',
292            '../../src/date.cc',
293            '../../src/date.h',
294            '../../src/dateparser.cc',
295            '../../src/dateparser.h',
296            '../../src/dateparser-inl.h',
297            '../../src/debug.cc',
298            '../../src/debug.h',
299            '../../src/debug-agent.cc',
300            '../../src/debug-agent.h',
301            '../../src/deoptimizer.cc',
302            '../../src/deoptimizer.h',
303            '../../src/disasm.h',
304            '../../src/disassembler.cc',
305            '../../src/disassembler.h',
306            '../../src/diy-fp.cc',
307            '../../src/diy-fp.h',
308            '../../src/double.h',
309            '../../src/dtoa.cc',
310            '../../src/dtoa.h',
311            '../../src/elements.cc',
312            '../../src/elements.h',
313            '../../src/execution.cc',
314            '../../src/execution.h',
315            '../../src/factory.cc',
316            '../../src/factory.h',
317            '../../src/fast-dtoa.cc',
318            '../../src/fast-dtoa.h',
319            '../../src/flag-definitions.h',
320            '../../src/fixed-dtoa.cc',
321            '../../src/fixed-dtoa.h',
322            '../../src/flags.cc',
323            '../../src/flags.h',
324            '../../src/frames-inl.h',
325            '../../src/frames.cc',
326            '../../src/frames.h',
327            '../../src/full-codegen.cc',
328            '../../src/full-codegen.h',
329            '../../src/func-name-inferrer.cc',
330            '../../src/func-name-inferrer.h',
331            '../../src/global-handles.cc',
332            '../../src/global-handles.h',
333            '../../src/globals.h',
334            '../../src/handles-inl.h',
335            '../../src/handles.cc',
336            '../../src/handles.h',
337            '../../src/hashmap.h',
338            '../../src/heap-inl.h',
339            '../../src/heap.cc',
340            '../../src/heap.h',
341            '../../src/heap-profiler.cc',
342            '../../src/heap-profiler.h',
343            '../../src/hydrogen.cc',
344            '../../src/hydrogen.h',
345            '../../src/hydrogen-instructions.cc',
346            '../../src/hydrogen-instructions.h',
347            '../../src/ic-inl.h',
348            '../../src/ic.cc',
349            '../../src/ic.h',
350            '../../src/incremental-marking.cc',
351            '../../src/incremental-marking.h',
352            '../../src/inspector.cc',
353            '../../src/inspector.h',
354            '../../src/interface.cc',
355            '../../src/interface.h',
356            '../../src/interpreter-irregexp.cc',
357            '../../src/interpreter-irregexp.h',
358            '../../src/json-parser.h',
359            '../../src/jsregexp.cc',
360            '../../src/jsregexp.h',
361            '../../src/isolate.cc',
362            '../../src/isolate.h',
363            '../../src/lazy-instance.h'
364            '../../src/list-inl.h',
365            '../../src/list.h',
366            '../../src/lithium.cc',
367            '../../src/lithium.h',
368            '../../src/lithium-allocator.cc',
369            '../../src/lithium-allocator.h',
370            '../../src/lithium-allocator-inl.h',
371            '../../src/liveedit.cc',
372            '../../src/liveedit.h',
373            '../../src/liveobjectlist-inl.h',
374            '../../src/liveobjectlist.cc',
375            '../../src/liveobjectlist.h',
376            '../../src/log-inl.h',
377            '../../src/log-utils.cc',
378            '../../src/log-utils.h',
379            '../../src/log.cc',
380            '../../src/log.h',
381            '../../src/macro-assembler.h',
382            '../../src/mark-compact.cc',
383            '../../src/mark-compact.h',
384            '../../src/messages.cc',
385            '../../src/messages.h',
386            '../../src/natives.h',
387            '../../src/objects-debug.cc',
388            '../../src/objects-printer.cc',
389            '../../src/objects-inl.h',
390            '../../src/objects-visiting.cc',
391            '../../src/objects-visiting.h',
392            '../../src/objects.cc',
393            '../../src/objects.h',
394            '../../src/once.cc',
395            '../../src/once.h',
396            '../../src/parser.cc',
397            '../../src/parser.h',
398            '../../src/platform-posix.h',
399            '../../src/platform-tls-mac.h',
400            '../../src/platform-tls-win32.h',
401            '../../src/platform-tls.h',
402            '../../src/platform.h',
403            '../../src/preparse-data-format.h',
404            '../../src/preparse-data.cc',
405            '../../src/preparse-data.h',
406            '../../src/preparser.cc',
407            '../../src/preparser.h',
408            '../../src/prettyprinter.cc',
409            '../../src/prettyprinter.h',
410            '../../src/property.cc',
411            '../../src/property.h',
412            '../../src/property-details.h',
413            '../../src/profile-generator-inl.h',
414            '../../src/profile-generator.cc',
415            '../../src/profile-generator.h',
416            '../../src/regexp-macro-assembler-irregexp-inl.h',
417            '../../src/regexp-macro-assembler-irregexp.cc',
418            '../../src/regexp-macro-assembler-irregexp.h',
419            '../../src/regexp-macro-assembler-tracer.cc',
420            '../../src/regexp-macro-assembler-tracer.h',
421            '../../src/regexp-macro-assembler.cc',
422            '../../src/regexp-macro-assembler.h',
423            '../../src/regexp-stack.cc',
424            '../../src/regexp-stack.h',
425            '../../src/rewriter.cc',
426            '../../src/rewriter.h',
427            '../../src/runtime.cc',
428            '../../src/runtime.h',
429            '../../src/runtime-profiler.cc',
430            '../../src/runtime-profiler.h',
431            '../../src/safepoint-table.cc',
432            '../../src/safepoint-table.h',
433            '../../src/scanner.cc',
434            '../../src/scanner.h',
435            '../../src/scanner-character-streams.cc',
436            '../../src/scanner-character-streams.h',
437            '../../src/scopeinfo.cc',
438            '../../src/scopeinfo.h',
439            '../../src/scopes.cc',
440            '../../src/scopes.h',
441            '../../src/serialize.cc',
442            '../../src/serialize.h',
443            '../../src/small-pointer-list.h',
444            '../../src/smart-array-pointer.h',
445            '../../src/snapshot-common.cc',
446            '../../src/snapshot.h',
447            '../../src/spaces-inl.h',
448            '../../src/spaces.cc',
449            '../../src/spaces.h',
450            '../../src/store-buffer-inl.h',
451            '../../src/store-buffer.cc',
452            '../../src/store-buffer.h',
453            '../../src/string-search.cc',
454            '../../src/string-search.h',
455            '../../src/string-stream.cc',
456            '../../src/string-stream.h',
457            '../../src/strtod.cc',
458            '../../src/strtod.h',
459            '../../src/stub-cache.cc',
460            '../../src/stub-cache.h',
461            '../../src/token.cc',
462            '../../src/token.h',
463            '../../src/type-info.cc',
464            '../../src/type-info.h',
465            '../../src/unbound-queue-inl.h',
466            '../../src/unbound-queue.h',
467            '../../src/unicode-inl.h',
468            '../../src/unicode.cc',
469            '../../src/unicode.h',
470            '../../src/utils-inl.h',
471            '../../src/utils.cc',
472            '../../src/utils.h',
473            '../../src/v8-counters.cc',
474            '../../src/v8-counters.h',
475            '../../src/v8.cc',
476            '../../src/v8.h',
477            '../../src/v8checks.h',
478            '../../src/v8conversions.cc',
479            '../../src/v8conversions.h',
480            '../../src/v8globals.h',
481            '../../src/v8memory.h',
482            '../../src/v8threads.cc',
483            '../../src/v8threads.h',
484            '../../src/v8utils.cc',
485            '../../src/v8utils.h',
486            '../../src/variables.cc',
487            '../../src/variables.h',
488            '../../src/version.cc',
489            '../../src/version.h',
490            '../../src/vm-state-inl.h',
491            '../../src/vm-state.h',
492            '../../src/zone-inl.h',
493            '../../src/zone.cc',
494            '../../src/zone.h',
495            '../../src/extensions/externalize-string-extension.cc',
496            '../../src/extensions/externalize-string-extension.h',
497            '../../src/extensions/gc-extension.cc',
498            '../../src/extensions/gc-extension.h',
499          ],
500          'conditions': [
501            ['want_separate_host_toolset==1', {
502              'toolsets': ['host', 'target'],
503            }, {
504              'toolsets': ['target'],
505            }],
506            ['v8_target_arch=="arm"', {
507              'sources': [
508                '../../src/arm/assembler-arm-inl.h',
509                '../../src/arm/assembler-arm.cc',
510                '../../src/arm/assembler-arm.h',
511                '../../src/arm/builtins-arm.cc',
512                '../../src/arm/code-stubs-arm.cc',
513                '../../src/arm/code-stubs-arm.h',
514                '../../src/arm/codegen-arm.cc',
515                '../../src/arm/codegen-arm.h',
516                '../../src/arm/constants-arm.h',
517                '../../src/arm/constants-arm.cc',
518                '../../src/arm/cpu-arm.cc',
519                '../../src/arm/debug-arm.cc',
520                '../../src/arm/deoptimizer-arm.cc',
521                '../../src/arm/disasm-arm.cc',
522                '../../src/arm/frames-arm.cc',
523                '../../src/arm/frames-arm.h',
524                '../../src/arm/full-codegen-arm.cc',
525                '../../src/arm/ic-arm.cc',
526                '../../src/arm/lithium-arm.cc',
527                '../../src/arm/lithium-arm.h',
528                '../../src/arm/lithium-codegen-arm.cc',
529                '../../src/arm/lithium-codegen-arm.h',
530                '../../src/arm/lithium-gap-resolver-arm.cc',
531                '../../src/arm/lithium-gap-resolver-arm.h',
532                '../../src/arm/macro-assembler-arm.cc',
533                '../../src/arm/macro-assembler-arm.h',
534                '../../src/arm/regexp-macro-assembler-arm.cc',
535                '../../src/arm/regexp-macro-assembler-arm.h',
536                '../../src/arm/simulator-arm.cc',
537                '../../src/arm/stub-cache-arm.cc',
538              ],
539            }],
540            ['v8_target_arch=="ia32" or v8_target_arch=="mac" or OS=="mac"', {
541              'sources': [
542                '../../src/ia32/assembler-ia32-inl.h',
543                '../../src/ia32/assembler-ia32.cc',
544                '../../src/ia32/assembler-ia32.h',
545                '../../src/ia32/builtins-ia32.cc',
546                '../../src/ia32/code-stubs-ia32.cc',
547                '../../src/ia32/code-stubs-ia32.h',
548                '../../src/ia32/codegen-ia32.cc',
549                '../../src/ia32/codegen-ia32.h',
550                '../../src/ia32/cpu-ia32.cc',
551                '../../src/ia32/debug-ia32.cc',
552                '../../src/ia32/deoptimizer-ia32.cc',
553                '../../src/ia32/disasm-ia32.cc',
554                '../../src/ia32/frames-ia32.cc',
555                '../../src/ia32/frames-ia32.h',
556                '../../src/ia32/full-codegen-ia32.cc',
557                '../../src/ia32/ic-ia32.cc',
558                '../../src/ia32/lithium-codegen-ia32.cc',
559                '../../src/ia32/lithium-codegen-ia32.h',
560                '../../src/ia32/lithium-gap-resolver-ia32.cc',
561                '../../src/ia32/lithium-gap-resolver-ia32.h',
562                '../../src/ia32/lithium-ia32.cc',
563                '../../src/ia32/lithium-ia32.h',
564                '../../src/ia32/macro-assembler-ia32.cc',
565                '../../src/ia32/macro-assembler-ia32.h',
566                '../../src/ia32/regexp-macro-assembler-ia32.cc',
567                '../../src/ia32/regexp-macro-assembler-ia32.h',
568                '../../src/ia32/stub-cache-ia32.cc',
569              ],
570            }],
571            ['v8_target_arch=="mips"', {
572              'sources': [
573                '../../src/mips/assembler-mips.cc',
574                '../../src/mips/assembler-mips.h',
575                '../../src/mips/assembler-mips-inl.h',
576                '../../src/mips/builtins-mips.cc',
577                '../../src/mips/codegen-mips.cc',
578                '../../src/mips/codegen-mips.h',
579                '../../src/mips/code-stubs-mips.cc',
580                '../../src/mips/code-stubs-mips.h',
581                '../../src/mips/constants-mips.cc',
582                '../../src/mips/constants-mips.h',
583                '../../src/mips/cpu-mips.cc',
584                '../../src/mips/debug-mips.cc',
585                '../../src/mips/deoptimizer-mips.cc',
586                '../../src/mips/disasm-mips.cc',
587                '../../src/mips/frames-mips.cc',
588                '../../src/mips/frames-mips.h',
589                '../../src/mips/full-codegen-mips.cc',
590                '../../src/mips/ic-mips.cc',
591                '../../src/mips/lithium-codegen-mips.cc',
592                '../../src/mips/lithium-codegen-mips.h',
593                '../../src/mips/lithium-gap-resolver-mips.cc',
594                '../../src/mips/lithium-gap-resolver-mips.h',
595                '../../src/mips/lithium-mips.cc',
596                '../../src/mips/lithium-mips.h',
597                '../../src/mips/macro-assembler-mips.cc',
598                '../../src/mips/macro-assembler-mips.h',
599                '../../src/mips/regexp-macro-assembler-mips.cc',
600                '../../src/mips/regexp-macro-assembler-mips.h',
601                '../../src/mips/simulator-mips.cc',
602                '../../src/mips/stub-cache-mips.cc',
603              ],
604            }],
605            ['v8_target_arch=="x64" or v8_target_arch=="mac" or OS=="mac"', {
606              'sources': [
607                '../../src/x64/assembler-x64-inl.h',
608                '../../src/x64/assembler-x64.cc',
609                '../../src/x64/assembler-x64.h',
610                '../../src/x64/builtins-x64.cc',
611                '../../src/x64/code-stubs-x64.cc',
612                '../../src/x64/code-stubs-x64.h',
613                '../../src/x64/codegen-x64.cc',
614                '../../src/x64/codegen-x64.h',
615                '../../src/x64/cpu-x64.cc',
616                '../../src/x64/debug-x64.cc',
617                '../../src/x64/deoptimizer-x64.cc',
618                '../../src/x64/disasm-x64.cc',
619                '../../src/x64/frames-x64.cc',
620                '../../src/x64/frames-x64.h',
621                '../../src/x64/full-codegen-x64.cc',
622                '../../src/x64/ic-x64.cc',
623                '../../src/x64/lithium-codegen-x64.cc',
624                '../../src/x64/lithium-codegen-x64.h',
625                '../../src/x64/lithium-gap-resolver-x64.cc',
626                '../../src/x64/lithium-gap-resolver-x64.h',
627                '../../src/x64/lithium-x64.cc',
628                '../../src/x64/lithium-x64.h',
629                '../../src/x64/macro-assembler-x64.cc',
630                '../../src/x64/macro-assembler-x64.h',
631                '../../src/x64/regexp-macro-assembler-x64.cc',
632                '../../src/x64/regexp-macro-assembler-x64.h',
633                '../../src/x64/stub-cache-x64.cc',
634              ],
635            }],
636            ['OS=="linux"', {
637                'link_settings': {
638                  'conditions': [
639                    ['v8_compress_startup_data=="bz2"', {
640                      'libraries': [
641                        '-lbz2',
642                      ]
643                    }],
644                  ],
645                },
646                'sources': [
647                  '../../src/platform-linux.cc',
648                  '../../src/platform-posix.cc'
649                ],
650              }
651            ],
652            ['OS=="android"', {
653                'defines': [
654                  'CAN_USE_VFP_INSTRUCTIONS',
655                ],
656                'sources': [
657                  '../../src/platform-posix.cc',
658                ],
659                'conditions': [
660                  ['host_os=="mac"', {
661                    'target_conditions': [
662                      ['_toolset=="host"', {
663                        'sources': [
664                          '../../src/platform-macos.cc'
665                        ]
666                      }, {
667                        'sources': [
668                          '../../src/platform-linux.cc'
669                        ]
670                      }],
671                    ],
672                  }, {
673                    'sources': [
674                      '../../src/platform-linux.cc'
675                    ]
676                  }],
677                ],
678              },
679            ],
680            ['OS=="freebsd"', {
681                'link_settings': {
682                  'libraries': [
683                    '-L/usr/local/lib -lexecinfo',
684                ]},
685                'sources': [
686                  '../../src/platform-freebsd.cc',
687                  '../../src/platform-posix.cc'
688                ],
689              }
690            ],
691            ['OS=="openbsd"', {
692                'link_settings': {
693                  'libraries': [
694                    '-L/usr/local/lib -lexecinfo',
695                ]},
696                'sources': [
697                  '../../src/platform-openbsd.cc',
698                  '../../src/platform-posix.cc'
699                ],
700              }
701            ],
702            ['OS=="netbsd"', {
703                'link_settings': {
704                  'libraries': [
705                    '-L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lexecinfo',
706                ]},
707                'sources': [
708                  '../../src/platform-openbsd.cc',
709                  '../../src/platform-posix.cc'
710                ],
711              }
712            ],
713            ['OS=="solaris"', {
714                'link_settings': {
715                  'libraries': [
716                    '-lsocket -lnsl',
717                ]},
718                'sources': [
719                  '../../src/platform-solaris.cc',
720                  '../../src/platform-posix.cc',
721                ],
722              }
723            ],
724            ['OS=="mac"', {
725              'sources': [
726                '../../src/platform-macos.cc',
727                '../../src/platform-posix.cc'
728              ]},
729            ],
730            ['OS=="win"', {
731              'sources': [
732                '../../src/platform-win32.cc',
733                '../../src/win32-math.cc',
734                '../../src/win32-math.h',
735              ],
736              'msvs_disabled_warnings': [4351, 4355, 4800],
737              'link_settings':  {
738                'libraries': [ '-lwinmm.lib', '-lws2_32.lib' ],
739              },
740            }],
741            ['component=="shared_library"', {
742              'defines': [
743                'BUILDING_V8_SHARED',
744                'V8_SHARED',
745              ],
746            }],
747            ['v8_postmortem_support=="true"', {
748              'sources': [
749                '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
750              ]
751            }],
752          ],
753        },
754        {
755          'target_name': 'js2c',
756          'type': 'none',
757          'conditions': [
758            ['want_separate_host_toolset==1', {
759              'toolsets': ['host'],
760            }, {
761              'toolsets': ['target'],
762            }],
763          ],
764          'variables': {
765            'library_files': [
766              '../../src/runtime.js',
767              '../../src/v8natives.js',
768              '../../src/array.js',
769              '../../src/string.js',
770              '../../src/uri.js',
771              '../../src/math.js',
772              '../../src/messages.js',
773              '../../src/apinatives.js',
774              '../../src/debug-debugger.js',
775              '../../src/mirror-debugger.js',
776              '../../src/liveedit-debugger.js',
777              '../../src/date.js',
778              '../../src/json.js',
779              '../../src/regexp.js',
780              '../../src/macros.py',
781            ],
782            'experimental_library_files': [
783              '../../src/macros.py',
784              '../../src/proxy.js',
785              '../../src/collection.js',
786            ],
787          },
788          'actions': [
789            {
790              'action_name': 'js2c',
791              'inputs': [
792                '../../tools/js2c.py',
793                '<@(library_files)',
794              ],
795              'outputs': [
796                '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
797              ],
798              'action': [
799                'python',
800                '../../tools/js2c.py',
801                '<@(_outputs)',
802                'CORE',
803                '<(v8_compress_startup_data)',
804                '<@(library_files)'
805              ],
806            },
807            {
808              'action_name': 'js2c_experimental',
809              'inputs': [
810                '../../tools/js2c.py',
811                '<@(experimental_library_files)',
812              ],
813              'outputs': [
814                '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
815              ],
816              'action': [
817                'python',
818                '../../tools/js2c.py',
819                '<@(_outputs)',
820                'EXPERIMENTAL',
821                '<(v8_compress_startup_data)',
822                '<@(experimental_library_files)'
823              ],
824            },
825          ],
826        },
827        {
828          'target_name': 'postmortem-metadata',
829          'type': 'none',
830          'variables': {
831            'heapobject_files': [
832                '../../src/objects.h',
833                '../../src/objects-inl.h',
834            ],
835          },
836          'actions': [
837              {
838                'action_name': 'gen-postmortem-metadata',
839                'inputs': [
840                  '../../tools/gen-postmortem-metadata.py',
841                  '<@(heapobject_files)',
842                ],
843                'outputs': [
844                  '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
845                ],
846                'action': [
847                  'python',
848                  '../../tools/gen-postmortem-metadata.py',
849                  '<@(_outputs)',
850                  '<@(heapobject_files)'
851                ]
852              }
853           ]
854        },
855        {
856          'target_name': 'mksnapshot',
857          'type': 'executable',
858          'dependencies': [
859            'v8_base',
860            'v8_nosnapshot',
861          ],
862          'include_dirs+': [
863            '../../src',
864          ],
865          'sources': [
866            '../../src/mksnapshot.cc',
867          ],
868          'conditions': [
869            ['want_separate_host_toolset==1', {
870              'toolsets': ['host'],
871            }, {
872              'toolsets': ['target'],
873            }],
874            ['v8_compress_startup_data=="bz2"', {
875              'libraries': [
876                '-lbz2',
877              ]
878            }],
879          ],
880        },
881        {
882          'target_name': 'v8_shell',
883          'type': 'executable',
884          'dependencies': [
885            'v8'
886          ],
887          'sources': [
888            '../../samples/shell.cc',
889          ],
890          'conditions': [
891            ['want_separate_host_toolset==1', {
892              'toolsets': ['host'],
893            }, {
894              'toolsets': ['target'],
895            }],
896            ['OS=="win"', {
897              # This could be gotten by not setting chromium_code, if that's OK.
898              'defines': ['_CRT_SECURE_NO_WARNINGS'],
899            }],
900            ['v8_compress_startup_data=="bz2"', {
901              'libraries': [
902                '-lbz2',
903              ]
904            }],
905          ],
906        },
907        {
908          'target_name': 'preparser_lib',
909          'type': '<(library)',
910          'include_dirs+': [
911            '../../src',
912          ],
913          'sources': [
914            '../../include/v8-preparser.h',
915            '../../include/v8stdint.h',
916            '../../src/allocation.cc',
917            '../../src/allocation.h',
918            '../../src/atomicops.h',
919            '../../src/atomicops_internals_x86_gcc.cc',
920            '../../src/bignum.cc',
921            '../../src/bignum.h',
922            '../../src/bignum-dtoa.cc',
923            '../../src/bignum-dtoa.h',
924            '../../src/cached-powers.cc',
925            '../../src/cached-powers.h',
926            '../../src/char-predicates-inl.h',
927            '../../src/char-predicates.h',
928            '../../src/checks.h',
929            '../../src/conversions-inl.h',
930            '../../src/conversions.cc',
931            '../../src/conversions.h',
932            '../../src/diy-fp.cc',
933            '../../src/diy-fp.h',
934            '../../src/double.h',
935            '../../src/dtoa.cc',
936            '../../src/dtoa.h',
937            '../../src/fast-dtoa.cc',
938            '../../src/fast-dtoa.h',
939            '../../src/fixed-dtoa.cc',
940            '../../src/fixed-dtoa.h',
941            '../../src/globals.h',
942            '../../src/hashmap.h',
943            '../../src/list-inl.h',
944            '../../src/list.h',
945            '../../src/once.cc',
946            '../../src/once.h',
947            '../../src/preparse-data-format.h',
948            '../../src/preparse-data.cc',
949            '../../src/preparse-data.h',
950            '../../src/preparser.cc',
951            '../../src/preparser.h',
952            '../../src/preparser-api.cc',
953            '../../src/scanner.cc',
954            '../../src/scanner.h',
955            '../../src/strtod.cc',
956            '../../src/strtod.h',
957            '../../src/token.cc',
958            '../../src/token.h',
959            '../../src/unicode-inl.h',
960            '../../src/unicode.cc',
961            '../../src/unicode.h',
962            '../../src/utils-inl.h',
963            '../../src/utils.cc',
964            '../../src/utils.h',
965          ],
966          'conditions': [
967            ['OS=="win"', {
968              'sources': [
969                '../../src/win32-math.cc',
970                '../../src/win32-math.h',
971              ]}],
972          ],
973        },
974      ],
975    }, { # use_system_v8 != 0
976      'targets': [
977        {
978          'target_name': 'v8',
979          'type': 'none',
980          'conditions': [
981            ['want_separate_host_toolset==1', {
982              'toolsets': ['host', 'target'],
983            }, {
984              'toolsets': ['target'],
985            }],
986          ],
987          'link_settings': {
988            'libraries': [
989              '-lv8',
990            ],
991          },
992        },
993        {
994          'target_name': 'v8_shell',
995          'type': 'none',
996          'conditions': [
997            ['want_separate_host_toolset==1', {
998              'toolsets': ['host'],
999            }, {
1000              'toolsets': ['target'],
1001            }],
1002          ],
1003          'dependencies': [
1004            'v8'
1005          ],
1006        },
1007      ],
1008    }],
1009  ],
1010}
1011