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  'variables': {
30    'icu_use_data_file_flag%': 0,
31    'v8_code': 1,
32    'v8_random_seed%': 314159265,
33  },
34  'includes': ['../../build/toolchain.gypi', '../../build/features.gypi'],
35  'targets': [
36    {
37      'target_name': 'v8',
38      'dependencies_traverse': 1,
39      'conditions': [
40        ['want_separate_host_toolset==1', {
41          'toolsets': ['host', 'target'],
42        }, {
43          'toolsets': ['target'],
44        }],
45
46        ['v8_use_snapshot=="true" and v8_use_external_startup_data==0', {
47          # The dependency on v8_base should come from a transitive
48          # dependency however the Android toolchain requires libv8_base.a
49          # to appear before libv8_snapshot.a so it's listed explicitly.
50          'dependencies': ['v8_base', 'v8_snapshot'],
51        }],
52        ['v8_use_snapshot!="true" and v8_use_external_startup_data==0', {
53          # The dependency on v8_base should come from a transitive
54          # dependency however the Android toolchain requires libv8_base.a
55          # to appear before libv8_snapshot.a so it's listed explicitly.
56          'dependencies': ['v8_base', 'v8_nosnapshot'],
57        }],
58        ['v8_use_external_startup_data==1 and want_separate_host_toolset==1', {
59          'dependencies': ['v8_base', 'v8_external_snapshot'],
60          'target_conditions': [
61            ['_toolset=="host"', {
62              'inputs': [
63                '<(PRODUCT_DIR)/snapshot_blob_host.bin',
64              ],
65            }, {
66              'inputs': [
67                '<(PRODUCT_DIR)/snapshot_blob.bin',
68              ],
69            }],
70          ],
71        }],
72        ['v8_use_external_startup_data==1 and want_separate_host_toolset==0', {
73          'dependencies': ['v8_base', 'v8_external_snapshot'],
74          'inputs': [ '<(PRODUCT_DIR)/snapshot_blob.bin', ],
75        }],
76        ['component=="shared_library"', {
77          'type': '<(component)',
78          'sources': [
79            # Note: on non-Windows we still build this file so that gyp
80            # has some sources to link into the component.
81            '../../src/v8dll-main.cc',
82          ],
83          'include_dirs': [
84            '../..',
85          ],
86          'defines': [
87            'V8_SHARED',
88            'BUILDING_V8_SHARED',
89          ],
90          'direct_dependent_settings': {
91            'defines': [
92              'V8_SHARED',
93              'USING_V8_SHARED',
94            ],
95          },
96          'target_conditions': [
97            ['OS=="android" and _toolset=="target"', {
98              'libraries': [
99                '-llog',
100              ],
101              'include_dirs': [
102                'src/common/android/include',
103              ],
104            }],
105          ],
106          'conditions': [
107            ['OS=="mac"', {
108              'xcode_settings': {
109                'OTHER_LDFLAGS': ['-dynamiclib', '-all_load']
110              },
111            }],
112            ['soname_version!=""', {
113              'product_extension': 'so.<(soname_version)',
114            }],
115          ],
116        },
117        {
118          'type': 'none',
119        }],
120      ],
121      'direct_dependent_settings': {
122        'include_dirs': [
123          '../../include',
124        ],
125      },
126    },
127    {
128      'target_name': 'v8_snapshot',
129      'type': 'static_library',
130      'conditions': [
131        ['want_separate_host_toolset==1', {
132          'toolsets': ['host', 'target'],
133          'dependencies': [
134            'mksnapshot#host',
135            'js2c#host',
136          ],
137        }, {
138          'toolsets': ['target'],
139          'dependencies': [
140            'mksnapshot',
141            'js2c',
142          ],
143        }],
144        ['component=="shared_library"', {
145          'defines': [
146            'V8_SHARED',
147            'BUILDING_V8_SHARED',
148          ],
149          'direct_dependent_settings': {
150            'defines': [
151              'V8_SHARED',
152              'USING_V8_SHARED',
153            ],
154          },
155        }],
156      ],
157      'dependencies': [
158        'v8_base',
159      ],
160      'include_dirs+': [
161        '../..',
162      ],
163      'sources': [
164        '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
165        '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
166        '<(INTERMEDIATE_DIR)/snapshot.cc',
167        '../../src/snapshot-common.cc',
168      ],
169      'actions': [
170        {
171          'action_name': 'run_mksnapshot',
172          'inputs': [
173            '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)',
174          ],
175          'outputs': [
176            '<(INTERMEDIATE_DIR)/snapshot.cc',
177          ],
178          'variables': {
179            'mksnapshot_flags': [
180              '--log-snapshot-positions',
181              '--logfile', '<(INTERMEDIATE_DIR)/snapshot.log',
182            ],
183            'conditions': [
184              ['v8_random_seed!=0', {
185                'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
186              }],
187            ],
188          },
189          'action': [
190            '<@(_inputs)',
191            '<@(mksnapshot_flags)',
192            '<@(INTERMEDIATE_DIR)/snapshot.cc'
193          ],
194        },
195      ],
196    },
197    {
198      'target_name': 'v8_nosnapshot',
199      'type': 'static_library',
200      'dependencies': [
201        'v8_base',
202      ],
203      'include_dirs+': [
204        '../..',
205      ],
206      'sources': [
207        '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
208        '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
209        '../../src/snapshot-common.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_external_snapshot',
230      'type': 'static_library',
231      'conditions': [
232        ['want_separate_host_toolset==1', {
233          'toolsets': ['host', 'target'],
234          'dependencies': [
235            'mksnapshot#host',
236            'js2c#host',
237            'natives_blob',
238        ]}, {
239          'toolsets': ['target'],
240          'dependencies': [
241            'mksnapshot',
242            'js2c',
243            'natives_blob',
244          ],
245        }],
246        ['component=="shared_library"', {
247          'defines': [
248            'V8_SHARED',
249            'BUILDING_V8_SHARED',
250          ],
251          'direct_dependent_settings': {
252            'defines': [
253              'V8_SHARED',
254              'USING_V8_SHARED',
255            ],
256          },
257        }],
258      ],
259      'dependencies': [
260        'v8_base',
261      ],
262      'include_dirs+': [
263        '../..',
264      ],
265      'sources': [
266        '../../src/natives-external.cc',
267        '../../src/snapshot-external.cc',
268      ],
269      'actions': [
270        {
271          'action_name': 'run_mksnapshot (external)',
272          'inputs': [
273            '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)',
274          ],
275          'conditions': [
276            ['want_separate_host_toolset==1', {
277              'target_conditions': [
278                ['_toolset=="host"', {
279                  'outputs': [
280                    '<(INTERMEDIATE_DIR)/snapshot.cc',
281                    '<(PRODUCT_DIR)/snapshot_blob_host.bin',
282                  ],
283                }, {
284                  'outputs': [
285                    '<(INTERMEDIATE_DIR)/snapshot.cc',
286                    '<(PRODUCT_DIR)/snapshot_blob.bin',
287                  ],
288                }],
289              ],
290            }, {
291              'outputs': [
292                '<(INTERMEDIATE_DIR)/snapshot.cc',
293                '<(PRODUCT_DIR)/snapshot_blob.bin',
294              ],
295            }],
296          ],
297          'variables': {
298            'mksnapshot_flags': [
299              '--log-snapshot-positions',
300              '--logfile', '<(INTERMEDIATE_DIR)/snapshot.log',
301            ],
302            'conditions': [
303              ['v8_random_seed!=0', {
304                'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
305              }],
306            ],
307          },
308          'action': [
309            '<@(_inputs)',
310            '<@(mksnapshot_flags)',
311            '<@(INTERMEDIATE_DIR)/snapshot.cc',
312            '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob.bin',
313          ],
314        },
315      ],
316    },
317    {
318      'target_name': 'v8_base',
319      'type': 'static_library',
320      'dependencies': [
321        'v8_libbase',
322      ],
323      'variables': {
324        'optimize': 'max',
325      },
326      'include_dirs+': [
327        '../..',
328      ],
329      'sources': [  ### gcmole(all) ###
330        '../../src/accessors.cc',
331        '../../src/accessors.h',
332        '../../src/allocation.cc',
333        '../../src/allocation.h',
334        '../../src/allocation-site-scopes.cc',
335        '../../src/allocation-site-scopes.h',
336        '../../src/allocation-tracker.cc',
337        '../../src/allocation-tracker.h',
338        '../../src/api.cc',
339        '../../src/api.h',
340        '../../src/arguments.cc',
341        '../../src/arguments.h',
342        '../../src/assembler.cc',
343        '../../src/assembler.h',
344        '../../src/assert-scope.h',
345        '../../src/assert-scope.cc',
346        '../../src/ast-value-factory.cc',
347        '../../src/ast-value-factory.h',
348        '../../src/ast.cc',
349        '../../src/ast.h',
350        '../../src/background-parsing-task.cc',
351        '../../src/background-parsing-task.h',
352        '../../src/bailout-reason.cc',
353        '../../src/bailout-reason.h',
354        '../../src/bignum-dtoa.cc',
355        '../../src/bignum-dtoa.h',
356        '../../src/bignum.cc',
357        '../../src/bignum.h',
358        '../../src/bootstrapper.cc',
359        '../../src/bootstrapper.h',
360        '../../src/builtins.cc',
361        '../../src/builtins.h',
362        '../../src/bytecodes-irregexp.h',
363        '../../src/cached-powers.cc',
364        '../../src/cached-powers.h',
365        '../../src/char-predicates-inl.h',
366        '../../src/char-predicates.h',
367        '../../src/checks.cc',
368        '../../src/checks.h',
369        '../../src/circular-queue-inl.h',
370        '../../src/circular-queue.h',
371        '../../src/code-factory.cc',
372        '../../src/code-factory.h',
373        '../../src/code-stubs.cc',
374        '../../src/code-stubs.h',
375        '../../src/code-stubs-hydrogen.cc',
376        '../../src/code.h',
377        '../../src/codegen.cc',
378        '../../src/codegen.h',
379        '../../src/compilation-cache.cc',
380        '../../src/compilation-cache.h',
381        '../../src/compiler/access-builder.cc',
382        '../../src/compiler/access-builder.h',
383        '../../src/compiler/ast-graph-builder.cc',
384        '../../src/compiler/ast-graph-builder.h',
385        '../../src/compiler/change-lowering.cc',
386        '../../src/compiler/change-lowering.h',
387        '../../src/compiler/code-generator-impl.h',
388        '../../src/compiler/code-generator.cc',
389        '../../src/compiler/code-generator.h',
390        '../../src/compiler/common-node-cache.h',
391        '../../src/compiler/common-operator.cc',
392        '../../src/compiler/common-operator.h',
393        '../../src/compiler/control-builders.cc',
394        '../../src/compiler/control-builders.h',
395        '../../src/compiler/frame.h',
396        '../../src/compiler/gap-resolver.cc',
397        '../../src/compiler/gap-resolver.h',
398        '../../src/compiler/generic-algorithm-inl.h',
399        '../../src/compiler/generic-algorithm.h',
400        '../../src/compiler/generic-graph.h',
401        '../../src/compiler/generic-node-inl.h',
402        '../../src/compiler/generic-node.h',
403        '../../src/compiler/graph-builder.cc',
404        '../../src/compiler/graph-builder.h',
405        '../../src/compiler/graph-inl.h',
406        '../../src/compiler/graph-reducer.cc',
407        '../../src/compiler/graph-reducer.h',
408        '../../src/compiler/graph-replay.cc',
409        '../../src/compiler/graph-replay.h',
410        '../../src/compiler/graph-visualizer.cc',
411        '../../src/compiler/graph-visualizer.h',
412        '../../src/compiler/graph.cc',
413        '../../src/compiler/graph.h',
414        '../../src/compiler/instruction-codes.h',
415        '../../src/compiler/instruction-selector-impl.h',
416        '../../src/compiler/instruction-selector.cc',
417        '../../src/compiler/instruction-selector.h',
418        '../../src/compiler/instruction.cc',
419        '../../src/compiler/instruction.h',
420        '../../src/compiler/js-builtin-reducer.cc',
421        '../../src/compiler/js-builtin-reducer.h',
422        '../../src/compiler/js-context-specialization.cc',
423        '../../src/compiler/js-context-specialization.h',
424        '../../src/compiler/js-generic-lowering.cc',
425        '../../src/compiler/js-generic-lowering.h',
426        '../../src/compiler/js-graph.cc',
427        '../../src/compiler/js-graph.h',
428        '../../src/compiler/js-inlining.cc',
429        '../../src/compiler/js-inlining.h',
430        '../../src/compiler/js-operator.h',
431        '../../src/compiler/js-typed-lowering.cc',
432        '../../src/compiler/js-typed-lowering.h',
433        '../../src/compiler/linkage-impl.h',
434        '../../src/compiler/linkage.cc',
435        '../../src/compiler/linkage.h',
436        '../../src/compiler/machine-operator-reducer.cc',
437        '../../src/compiler/machine-operator-reducer.h',
438        '../../src/compiler/machine-operator.cc',
439        '../../src/compiler/machine-operator.h',
440        '../../src/compiler/machine-type.cc',
441        '../../src/compiler/machine-type.h',
442        '../../src/compiler/node-aux-data-inl.h',
443        '../../src/compiler/node-aux-data.h',
444        '../../src/compiler/node-cache.cc',
445        '../../src/compiler/node-cache.h',
446        '../../src/compiler/node-matchers.h',
447        '../../src/compiler/node-properties-inl.h',
448        '../../src/compiler/node-properties.h',
449        '../../src/compiler/node.cc',
450        '../../src/compiler/node.h',
451        '../../src/compiler/opcodes.h',
452        '../../src/compiler/operator-properties-inl.h',
453        '../../src/compiler/operator-properties.h',
454        '../../src/compiler/operator.cc',
455        '../../src/compiler/operator.h',
456        '../../src/compiler/phi-reducer.h',
457        '../../src/compiler/pipeline.cc',
458        '../../src/compiler/pipeline.h',
459        '../../src/compiler/raw-machine-assembler.cc',
460        '../../src/compiler/raw-machine-assembler.h',
461        '../../src/compiler/register-allocator.cc',
462        '../../src/compiler/register-allocator.h',
463        '../../src/compiler/representation-change.h',
464        '../../src/compiler/schedule.cc',
465        '../../src/compiler/schedule.h',
466        '../../src/compiler/scheduler.cc',
467        '../../src/compiler/scheduler.h',
468        '../../src/compiler/simplified-lowering.cc',
469        '../../src/compiler/simplified-lowering.h',
470        '../../src/compiler/simplified-operator-reducer.cc',
471        '../../src/compiler/simplified-operator-reducer.h',
472        '../../src/compiler/simplified-operator.cc',
473        '../../src/compiler/simplified-operator.h',
474        '../../src/compiler/source-position.cc',
475        '../../src/compiler/source-position.h',
476        '../../src/compiler/typer.cc',
477        '../../src/compiler/typer.h',
478        '../../src/compiler/value-numbering-reducer.cc',
479        '../../src/compiler/value-numbering-reducer.h',
480        '../../src/compiler/verifier.cc',
481        '../../src/compiler/verifier.h',
482        '../../src/compiler.cc',
483        '../../src/compiler.h',
484        '../../src/contexts.cc',
485        '../../src/contexts.h',
486        '../../src/conversions-inl.h',
487        '../../src/conversions.cc',
488        '../../src/conversions.h',
489        '../../src/counters.cc',
490        '../../src/counters.h',
491        '../../src/cpu-profiler-inl.h',
492        '../../src/cpu-profiler.cc',
493        '../../src/cpu-profiler.h',
494        '../../src/data-flow.cc',
495        '../../src/data-flow.h',
496        '../../src/date.cc',
497        '../../src/date.h',
498        '../../src/dateparser-inl.h',
499        '../../src/dateparser.cc',
500        '../../src/dateparser.h',
501        '../../src/debug.cc',
502        '../../src/debug.h',
503        '../../src/deoptimizer.cc',
504        '../../src/deoptimizer.h',
505        '../../src/disasm.h',
506        '../../src/disassembler.cc',
507        '../../src/disassembler.h',
508        '../../src/diy-fp.cc',
509        '../../src/diy-fp.h',
510        '../../src/double.h',
511        '../../src/dtoa.cc',
512        '../../src/dtoa.h',
513        '../../src/effects.h',
514        '../../src/elements-kind.cc',
515        '../../src/elements-kind.h',
516        '../../src/elements.cc',
517        '../../src/elements.h',
518        '../../src/execution.cc',
519        '../../src/execution.h',
520        '../../src/extensions/externalize-string-extension.cc',
521        '../../src/extensions/externalize-string-extension.h',
522        '../../src/extensions/free-buffer-extension.cc',
523        '../../src/extensions/free-buffer-extension.h',
524        '../../src/extensions/gc-extension.cc',
525        '../../src/extensions/gc-extension.h',
526        '../../src/extensions/statistics-extension.cc',
527        '../../src/extensions/statistics-extension.h',
528        '../../src/extensions/trigger-failure-extension.cc',
529        '../../src/extensions/trigger-failure-extension.h',
530        '../../src/factory.cc',
531        '../../src/factory.h',
532        '../../src/fast-dtoa.cc',
533        '../../src/fast-dtoa.h',
534        '../../src/feedback-slots.h',
535        '../../src/field-index.h',
536        '../../src/field-index-inl.h',
537        '../../src/fixed-dtoa.cc',
538        '../../src/fixed-dtoa.h',
539        '../../src/flag-definitions.h',
540        '../../src/flags.cc',
541        '../../src/flags.h',
542        '../../src/frames-inl.h',
543        '../../src/frames.cc',
544        '../../src/frames.h',
545        '../../src/full-codegen.cc',
546        '../../src/full-codegen.h',
547        '../../src/func-name-inferrer.cc',
548        '../../src/func-name-inferrer.h',
549        '../../src/gdb-jit.cc',
550        '../../src/gdb-jit.h',
551        '../../src/global-handles.cc',
552        '../../src/global-handles.h',
553        '../../src/globals.h',
554        '../../src/handles-inl.h',
555        '../../src/handles.cc',
556        '../../src/handles.h',
557        '../../src/hashmap.h',
558        '../../src/heap-profiler.cc',
559        '../../src/heap-profiler.h',
560        '../../src/heap-snapshot-generator-inl.h',
561        '../../src/heap-snapshot-generator.cc',
562        '../../src/heap-snapshot-generator.h',
563        '../../src/heap/gc-idle-time-handler.cc',
564        '../../src/heap/gc-idle-time-handler.h',
565        '../../src/heap/gc-tracer.cc',
566        '../../src/heap/gc-tracer.h',
567        '../../src/heap/heap-inl.h',
568        '../../src/heap/heap.cc',
569        '../../src/heap/heap.h',
570        '../../src/heap/incremental-marking-inl.h',
571        '../../src/heap/incremental-marking.cc',
572        '../../src/heap/incremental-marking.h',
573        '../../src/heap/mark-compact-inl.h',
574        '../../src/heap/mark-compact.cc',
575        '../../src/heap/mark-compact.h',
576        '../../src/heap/objects-visiting-inl.h',
577        '../../src/heap/objects-visiting.cc',
578        '../../src/heap/objects-visiting.h',
579        '../../src/heap/spaces-inl.h',
580        '../../src/heap/spaces.cc',
581        '../../src/heap/spaces.h',
582        '../../src/heap/store-buffer-inl.h',
583        '../../src/heap/store-buffer.cc',
584        '../../src/heap/store-buffer.h',
585        '../../src/heap/sweeper-thread.h',
586        '../../src/heap/sweeper-thread.cc',
587        '../../src/hydrogen-alias-analysis.h',
588        '../../src/hydrogen-bce.cc',
589        '../../src/hydrogen-bce.h',
590        '../../src/hydrogen-bch.cc',
591        '../../src/hydrogen-bch.h',
592        '../../src/hydrogen-canonicalize.cc',
593        '../../src/hydrogen-canonicalize.h',
594        '../../src/hydrogen-check-elimination.cc',
595        '../../src/hydrogen-check-elimination.h',
596        '../../src/hydrogen-dce.cc',
597        '../../src/hydrogen-dce.h',
598        '../../src/hydrogen-dehoist.cc',
599        '../../src/hydrogen-dehoist.h',
600        '../../src/hydrogen-environment-liveness.cc',
601        '../../src/hydrogen-environment-liveness.h',
602        '../../src/hydrogen-escape-analysis.cc',
603        '../../src/hydrogen-escape-analysis.h',
604        '../../src/hydrogen-flow-engine.h',
605        '../../src/hydrogen-instructions.cc',
606        '../../src/hydrogen-instructions.h',
607        '../../src/hydrogen.cc',
608        '../../src/hydrogen.h',
609        '../../src/hydrogen-gvn.cc',
610        '../../src/hydrogen-gvn.h',
611        '../../src/hydrogen-infer-representation.cc',
612        '../../src/hydrogen-infer-representation.h',
613        '../../src/hydrogen-infer-types.cc',
614        '../../src/hydrogen-infer-types.h',
615        '../../src/hydrogen-load-elimination.cc',
616        '../../src/hydrogen-load-elimination.h',
617        '../../src/hydrogen-mark-deoptimize.cc',
618        '../../src/hydrogen-mark-deoptimize.h',
619        '../../src/hydrogen-mark-unreachable.cc',
620        '../../src/hydrogen-mark-unreachable.h',
621        '../../src/hydrogen-osr.cc',
622        '../../src/hydrogen-osr.h',
623        '../../src/hydrogen-range-analysis.cc',
624        '../../src/hydrogen-range-analysis.h',
625        '../../src/hydrogen-redundant-phi.cc',
626        '../../src/hydrogen-redundant-phi.h',
627        '../../src/hydrogen-removable-simulates.cc',
628        '../../src/hydrogen-removable-simulates.h',
629        '../../src/hydrogen-representation-changes.cc',
630        '../../src/hydrogen-representation-changes.h',
631        '../../src/hydrogen-sce.cc',
632        '../../src/hydrogen-sce.h',
633        '../../src/hydrogen-store-elimination.cc',
634        '../../src/hydrogen-store-elimination.h',
635        '../../src/hydrogen-types.cc',
636        '../../src/hydrogen-types.h',
637        '../../src/hydrogen-uint32-analysis.cc',
638        '../../src/hydrogen-uint32-analysis.h',
639        '../../src/i18n.cc',
640        '../../src/i18n.h',
641        '../../src/icu_util.cc',
642        '../../src/icu_util.h',
643        '../../src/ic/access-compiler.cc',
644        '../../src/ic/access-compiler.h',
645        '../../src/ic/call-optimization.cc',
646        '../../src/ic/call-optimization.h',
647        '../../src/ic/handler-compiler.cc',
648        '../../src/ic/handler-compiler.h',
649        '../../src/ic/ic-inl.h',
650        '../../src/ic/ic-state.cc',
651        '../../src/ic/ic-state.h',
652        '../../src/ic/ic.cc',
653        '../../src/ic/ic.h',
654        '../../src/ic/ic-compiler.cc',
655        '../../src/ic/ic-compiler.h',
656        '../../src/interface.cc',
657        '../../src/interface.h',
658        '../../src/interface-descriptors.cc',
659        '../../src/interface-descriptors.h',
660        '../../src/interpreter-irregexp.cc',
661        '../../src/interpreter-irregexp.h',
662        '../../src/isolate.cc',
663        '../../src/isolate.h',
664        '../../src/json-parser.h',
665        '../../src/json-stringifier.h',
666        '../../src/jsregexp-inl.h',
667        '../../src/jsregexp.cc',
668        '../../src/jsregexp.h',
669        '../../src/list-inl.h',
670        '../../src/list.h',
671        '../../src/lithium-allocator-inl.h',
672        '../../src/lithium-allocator.cc',
673        '../../src/lithium-allocator.h',
674        '../../src/lithium-codegen.cc',
675        '../../src/lithium-codegen.h',
676        '../../src/lithium.cc',
677        '../../src/lithium.h',
678        '../../src/lithium-inl.h',
679        '../../src/liveedit.cc',
680        '../../src/liveedit.h',
681        '../../src/log-inl.h',
682        '../../src/log-utils.cc',
683        '../../src/log-utils.h',
684        '../../src/log.cc',
685        '../../src/log.h',
686        '../../src/lookup-inl.h',
687        '../../src/lookup.cc',
688        '../../src/lookup.h',
689        '../../src/macro-assembler.h',
690        '../../src/messages.cc',
691        '../../src/messages.h',
692        '../../src/msan.h',
693        '../../src/natives.h',
694        '../../src/objects-debug.cc',
695        '../../src/objects-inl.h',
696        '../../src/objects-printer.cc',
697        '../../src/objects.cc',
698        '../../src/objects.h',
699        '../../src/optimizing-compiler-thread.cc',
700        '../../src/optimizing-compiler-thread.h',
701        '../../src/ostreams.cc',
702        '../../src/ostreams.h',
703        '../../src/parser.cc',
704        '../../src/parser.h',
705        '../../src/perf-jit.cc',
706        '../../src/perf-jit.h',
707        '../../src/preparse-data-format.h',
708        '../../src/preparse-data.cc',
709        '../../src/preparse-data.h',
710        '../../src/preparser.cc',
711        '../../src/preparser.h',
712        '../../src/prettyprinter.cc',
713        '../../src/prettyprinter.h',
714        '../../src/profile-generator-inl.h',
715        '../../src/profile-generator.cc',
716        '../../src/profile-generator.h',
717        '../../src/property-details.h',
718        '../../src/property.cc',
719        '../../src/property.h',
720        '../../src/prototype.h',
721        '../../src/regexp-macro-assembler-irregexp-inl.h',
722        '../../src/regexp-macro-assembler-irregexp.cc',
723        '../../src/regexp-macro-assembler-irregexp.h',
724        '../../src/regexp-macro-assembler-tracer.cc',
725        '../../src/regexp-macro-assembler-tracer.h',
726        '../../src/regexp-macro-assembler.cc',
727        '../../src/regexp-macro-assembler.h',
728        '../../src/regexp-stack.cc',
729        '../../src/regexp-stack.h',
730        '../../src/rewriter.cc',
731        '../../src/rewriter.h',
732        '../../src/runtime-profiler.cc',
733        '../../src/runtime-profiler.h',
734        '../../src/runtime.cc',
735        '../../src/runtime.h',
736        '../../src/safepoint-table.cc',
737        '../../src/safepoint-table.h',
738        '../../src/sampler.cc',
739        '../../src/sampler.h',
740        '../../src/scanner-character-streams.cc',
741        '../../src/scanner-character-streams.h',
742        '../../src/scanner.cc',
743        '../../src/scanner.h',
744        '../../src/scopeinfo.cc',
745        '../../src/scopeinfo.h',
746        '../../src/scopes.cc',
747        '../../src/scopes.h',
748        '../../src/serialize.cc',
749        '../../src/serialize.h',
750        '../../src/small-pointer-list.h',
751        '../../src/smart-pointers.h',
752        '../../src/snapshot.h',
753        '../../src/snapshot-source-sink.cc',
754        '../../src/snapshot-source-sink.h',
755        '../../src/string-search.cc',
756        '../../src/string-search.h',
757        '../../src/string-stream.cc',
758        '../../src/string-stream.h',
759        '../../src/strtod.cc',
760        '../../src/strtod.h',
761        '../../src/ic/stub-cache.cc',
762        '../../src/ic/stub-cache.h',
763        '../../src/token.cc',
764        '../../src/token.h',
765        '../../src/transitions-inl.h',
766        '../../src/transitions.cc',
767        '../../src/transitions.h',
768        '../../src/type-feedback-vector-inl.h',
769        '../../src/type-feedback-vector.cc',
770        '../../src/type-feedback-vector.h',
771        '../../src/type-info.cc',
772        '../../src/type-info.h',
773        '../../src/types-inl.h',
774        '../../src/types.cc',
775        '../../src/types.h',
776        '../../src/typing.cc',
777        '../../src/typing.h',
778        '../../src/unbound-queue-inl.h',
779        '../../src/unbound-queue.h',
780        '../../src/unicode-inl.h',
781        '../../src/unicode.cc',
782        '../../src/unicode.h',
783        '../../src/unique.h',
784        '../../src/uri.h',
785        '../../src/utils-inl.h',
786        '../../src/utils.cc',
787        '../../src/utils.h',
788        '../../src/v8.cc',
789        '../../src/v8.h',
790        '../../src/v8memory.h',
791        '../../src/v8threads.cc',
792        '../../src/v8threads.h',
793        '../../src/variables.cc',
794        '../../src/variables.h',
795        '../../src/vector.h',
796        '../../src/version.cc',
797        '../../src/version.h',
798        '../../src/vm-state-inl.h',
799        '../../src/vm-state.h',
800        '../../src/zone-inl.h',
801        '../../src/zone.cc',
802        '../../src/zone.h',
803        '../../third_party/fdlibm/fdlibm.cc',
804        '../../third_party/fdlibm/fdlibm.h',
805      ],
806      'conditions': [
807        ['want_separate_host_toolset==1', {
808          'toolsets': ['host', 'target'],
809        }, {
810          'toolsets': ['target'],
811        }],
812        ['v8_target_arch=="arm"', {
813          'sources': [  ### gcmole(arch:arm) ###
814            '../../src/arm/assembler-arm-inl.h',
815            '../../src/arm/assembler-arm.cc',
816            '../../src/arm/assembler-arm.h',
817            '../../src/arm/builtins-arm.cc',
818            '../../src/arm/code-stubs-arm.cc',
819            '../../src/arm/code-stubs-arm.h',
820            '../../src/arm/codegen-arm.cc',
821            '../../src/arm/codegen-arm.h',
822            '../../src/arm/constants-arm.h',
823            '../../src/arm/constants-arm.cc',
824            '../../src/arm/cpu-arm.cc',
825            '../../src/arm/debug-arm.cc',
826            '../../src/arm/deoptimizer-arm.cc',
827            '../../src/arm/disasm-arm.cc',
828            '../../src/arm/frames-arm.cc',
829            '../../src/arm/frames-arm.h',
830            '../../src/arm/full-codegen-arm.cc',
831            '../../src/arm/interface-descriptors-arm.cc',
832            '../../src/arm/interface-descriptors-arm.h',
833            '../../src/arm/lithium-arm.cc',
834            '../../src/arm/lithium-arm.h',
835            '../../src/arm/lithium-codegen-arm.cc',
836            '../../src/arm/lithium-codegen-arm.h',
837            '../../src/arm/lithium-gap-resolver-arm.cc',
838            '../../src/arm/lithium-gap-resolver-arm.h',
839            '../../src/arm/macro-assembler-arm.cc',
840            '../../src/arm/macro-assembler-arm.h',
841            '../../src/arm/regexp-macro-assembler-arm.cc',
842            '../../src/arm/regexp-macro-assembler-arm.h',
843            '../../src/arm/simulator-arm.cc',
844            '../../src/compiler/arm/code-generator-arm.cc',
845            '../../src/compiler/arm/instruction-codes-arm.h',
846            '../../src/compiler/arm/instruction-selector-arm.cc',
847            '../../src/compiler/arm/linkage-arm.cc',
848            '../../src/ic/arm/access-compiler-arm.cc',
849            '../../src/ic/arm/handler-compiler-arm.cc',
850            '../../src/ic/arm/ic-arm.cc',
851            '../../src/ic/arm/ic-compiler-arm.cc',
852            '../../src/ic/arm/stub-cache-arm.cc',
853          ],
854        }],
855        ['v8_target_arch=="arm64"', {
856          'sources': [  ### gcmole(arch:arm64) ###
857            '../../src/arm64/assembler-arm64.cc',
858            '../../src/arm64/assembler-arm64.h',
859            '../../src/arm64/assembler-arm64-inl.h',
860            '../../src/arm64/builtins-arm64.cc',
861            '../../src/arm64/codegen-arm64.cc',
862            '../../src/arm64/codegen-arm64.h',
863            '../../src/arm64/code-stubs-arm64.cc',
864            '../../src/arm64/code-stubs-arm64.h',
865            '../../src/arm64/constants-arm64.h',
866            '../../src/arm64/cpu-arm64.cc',
867            '../../src/arm64/debug-arm64.cc',
868            '../../src/arm64/decoder-arm64.cc',
869            '../../src/arm64/decoder-arm64.h',
870            '../../src/arm64/decoder-arm64-inl.h',
871            '../../src/arm64/delayed-masm-arm64.cc',
872            '../../src/arm64/delayed-masm-arm64.h',
873            '../../src/arm64/delayed-masm-arm64-inl.h',
874            '../../src/arm64/deoptimizer-arm64.cc',
875            '../../src/arm64/disasm-arm64.cc',
876            '../../src/arm64/disasm-arm64.h',
877            '../../src/arm64/frames-arm64.cc',
878            '../../src/arm64/frames-arm64.h',
879            '../../src/arm64/full-codegen-arm64.cc',
880            '../../src/arm64/instructions-arm64.cc',
881            '../../src/arm64/instructions-arm64.h',
882            '../../src/arm64/instrument-arm64.cc',
883            '../../src/arm64/instrument-arm64.h',
884            '../../src/arm64/interface-descriptors-arm64.cc',
885            '../../src/arm64/interface-descriptors-arm64.h',
886            '../../src/arm64/lithium-arm64.cc',
887            '../../src/arm64/lithium-arm64.h',
888            '../../src/arm64/lithium-codegen-arm64.cc',
889            '../../src/arm64/lithium-codegen-arm64.h',
890            '../../src/arm64/lithium-gap-resolver-arm64.cc',
891            '../../src/arm64/lithium-gap-resolver-arm64.h',
892            '../../src/arm64/macro-assembler-arm64.cc',
893            '../../src/arm64/macro-assembler-arm64.h',
894            '../../src/arm64/macro-assembler-arm64-inl.h',
895            '../../src/arm64/regexp-macro-assembler-arm64.cc',
896            '../../src/arm64/regexp-macro-assembler-arm64.h',
897            '../../src/arm64/simulator-arm64.cc',
898            '../../src/arm64/simulator-arm64.h',
899            '../../src/arm64/utils-arm64.cc',
900            '../../src/arm64/utils-arm64.h',
901            '../../src/compiler/arm64/code-generator-arm64.cc',
902            '../../src/compiler/arm64/instruction-codes-arm64.h',
903            '../../src/compiler/arm64/instruction-selector-arm64.cc',
904            '../../src/compiler/arm64/linkage-arm64.cc',
905            '../../src/ic/arm64/access-compiler-arm64.cc',
906            '../../src/ic/arm64/handler-compiler-arm64.cc',
907            '../../src/ic/arm64/ic-arm64.cc',
908            '../../src/ic/arm64/ic-compiler-arm64.cc',
909            '../../src/ic/arm64/stub-cache-arm64.cc',
910          ],
911        }],
912        ['v8_target_arch=="ia32"', {
913          'sources': [  ### gcmole(arch:ia32) ###
914            '../../src/ia32/assembler-ia32-inl.h',
915            '../../src/ia32/assembler-ia32.cc',
916            '../../src/ia32/assembler-ia32.h',
917            '../../src/ia32/builtins-ia32.cc',
918            '../../src/ia32/code-stubs-ia32.cc',
919            '../../src/ia32/code-stubs-ia32.h',
920            '../../src/ia32/codegen-ia32.cc',
921            '../../src/ia32/codegen-ia32.h',
922            '../../src/ia32/cpu-ia32.cc',
923            '../../src/ia32/debug-ia32.cc',
924            '../../src/ia32/deoptimizer-ia32.cc',
925            '../../src/ia32/disasm-ia32.cc',
926            '../../src/ia32/frames-ia32.cc',
927            '../../src/ia32/frames-ia32.h',
928            '../../src/ia32/full-codegen-ia32.cc',
929            '../../src/ia32/interface-descriptors-ia32.cc',
930            '../../src/ia32/lithium-codegen-ia32.cc',
931            '../../src/ia32/lithium-codegen-ia32.h',
932            '../../src/ia32/lithium-gap-resolver-ia32.cc',
933            '../../src/ia32/lithium-gap-resolver-ia32.h',
934            '../../src/ia32/lithium-ia32.cc',
935            '../../src/ia32/lithium-ia32.h',
936            '../../src/ia32/macro-assembler-ia32.cc',
937            '../../src/ia32/macro-assembler-ia32.h',
938            '../../src/ia32/regexp-macro-assembler-ia32.cc',
939            '../../src/ia32/regexp-macro-assembler-ia32.h',
940            '../../src/compiler/ia32/code-generator-ia32.cc',
941            '../../src/compiler/ia32/instruction-codes-ia32.h',
942            '../../src/compiler/ia32/instruction-selector-ia32.cc',
943            '../../src/compiler/ia32/linkage-ia32.cc',
944            '../../src/ic/ia32/access-compiler-ia32.cc',
945            '../../src/ic/ia32/handler-compiler-ia32.cc',
946            '../../src/ic/ia32/ic-ia32.cc',
947            '../../src/ic/ia32/ic-compiler-ia32.cc',
948            '../../src/ic/ia32/stub-cache-ia32.cc',
949          ],
950        }],
951        ['v8_target_arch=="x87"', {
952          'sources': [  ### gcmole(arch:x87) ###
953            '../../src/x87/assembler-x87-inl.h',
954            '../../src/x87/assembler-x87.cc',
955            '../../src/x87/assembler-x87.h',
956            '../../src/x87/builtins-x87.cc',
957            '../../src/x87/code-stubs-x87.cc',
958            '../../src/x87/code-stubs-x87.h',
959            '../../src/x87/codegen-x87.cc',
960            '../../src/x87/codegen-x87.h',
961            '../../src/x87/cpu-x87.cc',
962            '../../src/x87/debug-x87.cc',
963            '../../src/x87/deoptimizer-x87.cc',
964            '../../src/x87/disasm-x87.cc',
965            '../../src/x87/frames-x87.cc',
966            '../../src/x87/frames-x87.h',
967            '../../src/x87/full-codegen-x87.cc',
968            '../../src/x87/interface-descriptors-x87.cc',
969            '../../src/x87/lithium-codegen-x87.cc',
970            '../../src/x87/lithium-codegen-x87.h',
971            '../../src/x87/lithium-gap-resolver-x87.cc',
972            '../../src/x87/lithium-gap-resolver-x87.h',
973            '../../src/x87/lithium-x87.cc',
974            '../../src/x87/lithium-x87.h',
975            '../../src/x87/macro-assembler-x87.cc',
976            '../../src/x87/macro-assembler-x87.h',
977            '../../src/x87/regexp-macro-assembler-x87.cc',
978            '../../src/x87/regexp-macro-assembler-x87.h',
979            '../../src/ic/x87/access-compiler-x87.cc',
980            '../../src/ic/x87/handler-compiler-x87.cc',
981            '../../src/ic/x87/ic-x87.cc',
982            '../../src/ic/x87/ic-compiler-x87.cc',
983            '../../src/ic/x87/stub-cache-x87.cc',
984          ],
985        }],
986        ['v8_target_arch=="mips" or v8_target_arch=="mipsel"', {
987          'sources': [  ### gcmole(arch:mipsel) ###
988            '../../src/mips/assembler-mips.cc',
989            '../../src/mips/assembler-mips.h',
990            '../../src/mips/assembler-mips-inl.h',
991            '../../src/mips/builtins-mips.cc',
992            '../../src/mips/codegen-mips.cc',
993            '../../src/mips/codegen-mips.h',
994            '../../src/mips/code-stubs-mips.cc',
995            '../../src/mips/code-stubs-mips.h',
996            '../../src/mips/constants-mips.cc',
997            '../../src/mips/constants-mips.h',
998            '../../src/mips/cpu-mips.cc',
999            '../../src/mips/debug-mips.cc',
1000            '../../src/mips/deoptimizer-mips.cc',
1001            '../../src/mips/disasm-mips.cc',
1002            '../../src/mips/frames-mips.cc',
1003            '../../src/mips/frames-mips.h',
1004            '../../src/mips/full-codegen-mips.cc',
1005            '../../src/mips/interface-descriptors-mips.cc',
1006            '../../src/mips/lithium-codegen-mips.cc',
1007            '../../src/mips/lithium-codegen-mips.h',
1008            '../../src/mips/lithium-gap-resolver-mips.cc',
1009            '../../src/mips/lithium-gap-resolver-mips.h',
1010            '../../src/mips/lithium-mips.cc',
1011            '../../src/mips/lithium-mips.h',
1012            '../../src/mips/macro-assembler-mips.cc',
1013            '../../src/mips/macro-assembler-mips.h',
1014            '../../src/mips/regexp-macro-assembler-mips.cc',
1015            '../../src/mips/regexp-macro-assembler-mips.h',
1016            '../../src/mips/simulator-mips.cc',
1017            '../../src/ic/mips/access-compiler-mips.cc',
1018            '../../src/ic/mips/handler-compiler-mips.cc',
1019            '../../src/ic/mips/ic-mips.cc',
1020            '../../src/ic/mips/ic-compiler-mips.cc',
1021            '../../src/ic/mips/stub-cache-mips.cc',
1022          ],
1023        }],
1024        ['v8_target_arch=="mips64el"', {
1025          'sources': [  ### gcmole(arch:mips64el) ###
1026            '../../src/mips64/assembler-mips64.cc',
1027            '../../src/mips64/assembler-mips64.h',
1028            '../../src/mips64/assembler-mips64-inl.h',
1029            '../../src/mips64/builtins-mips64.cc',
1030            '../../src/mips64/codegen-mips64.cc',
1031            '../../src/mips64/codegen-mips64.h',
1032            '../../src/mips64/code-stubs-mips64.cc',
1033            '../../src/mips64/code-stubs-mips64.h',
1034            '../../src/mips64/constants-mips64.cc',
1035            '../../src/mips64/constants-mips64.h',
1036            '../../src/mips64/cpu-mips64.cc',
1037            '../../src/mips64/debug-mips64.cc',
1038            '../../src/mips64/deoptimizer-mips64.cc',
1039            '../../src/mips64/disasm-mips64.cc',
1040            '../../src/mips64/frames-mips64.cc',
1041            '../../src/mips64/frames-mips64.h',
1042            '../../src/mips64/full-codegen-mips64.cc',
1043            '../../src/mips64/interface-descriptors-mips64.cc',
1044            '../../src/mips64/lithium-codegen-mips64.cc',
1045            '../../src/mips64/lithium-codegen-mips64.h',
1046            '../../src/mips64/lithium-gap-resolver-mips64.cc',
1047            '../../src/mips64/lithium-gap-resolver-mips64.h',
1048            '../../src/mips64/lithium-mips64.cc',
1049            '../../src/mips64/lithium-mips64.h',
1050            '../../src/mips64/macro-assembler-mips64.cc',
1051            '../../src/mips64/macro-assembler-mips64.h',
1052            '../../src/mips64/regexp-macro-assembler-mips64.cc',
1053            '../../src/mips64/regexp-macro-assembler-mips64.h',
1054            '../../src/mips64/simulator-mips64.cc',
1055            '../../src/ic/mips64/access-compiler-mips64.cc',
1056            '../../src/ic/mips64/handler-compiler-mips64.cc',
1057            '../../src/ic/mips64/ic-mips64.cc',
1058            '../../src/ic/mips64/ic-compiler-mips64.cc',
1059            '../../src/ic/mips64/stub-cache-mips64.cc',
1060          ],
1061        }],
1062        ['v8_target_arch=="x64" or v8_target_arch=="x32"', {
1063          'sources': [  ### gcmole(arch:x64) ###
1064            '../../src/x64/assembler-x64-inl.h',
1065            '../../src/x64/assembler-x64.cc',
1066            '../../src/x64/assembler-x64.h',
1067            '../../src/x64/builtins-x64.cc',
1068            '../../src/x64/code-stubs-x64.cc',
1069            '../../src/x64/code-stubs-x64.h',
1070            '../../src/x64/codegen-x64.cc',
1071            '../../src/x64/codegen-x64.h',
1072            '../../src/x64/cpu-x64.cc',
1073            '../../src/x64/debug-x64.cc',
1074            '../../src/x64/deoptimizer-x64.cc',
1075            '../../src/x64/disasm-x64.cc',
1076            '../../src/x64/frames-x64.cc',
1077            '../../src/x64/frames-x64.h',
1078            '../../src/x64/full-codegen-x64.cc',
1079            '../../src/x64/interface-descriptors-x64.cc',
1080            '../../src/x64/lithium-codegen-x64.cc',
1081            '../../src/x64/lithium-codegen-x64.h',
1082            '../../src/x64/lithium-gap-resolver-x64.cc',
1083            '../../src/x64/lithium-gap-resolver-x64.h',
1084            '../../src/x64/lithium-x64.cc',
1085            '../../src/x64/lithium-x64.h',
1086            '../../src/x64/macro-assembler-x64.cc',
1087            '../../src/x64/macro-assembler-x64.h',
1088            '../../src/x64/regexp-macro-assembler-x64.cc',
1089            '../../src/x64/regexp-macro-assembler-x64.h',
1090            '../../src/compiler/x64/code-generator-x64.cc',
1091            '../../src/compiler/x64/instruction-codes-x64.h',
1092            '../../src/compiler/x64/instruction-selector-x64.cc',
1093            '../../src/compiler/x64/linkage-x64.cc',
1094            '../../src/ic/x64/access-compiler-x64.cc',
1095            '../../src/ic/x64/handler-compiler-x64.cc',
1096            '../../src/ic/x64/ic-x64.cc',
1097            '../../src/ic/x64/ic-compiler-x64.cc',
1098            '../../src/ic/x64/stub-cache-x64.cc',
1099          ],
1100        }],
1101        ['OS=="linux"', {
1102            'link_settings': {
1103              'conditions': [
1104                ['v8_compress_startup_data=="bz2"', {
1105                  'libraries': [
1106                    '-lbz2',
1107                  ]
1108                }],
1109              ],
1110            },
1111          }
1112        ],
1113        ['OS=="win"', {
1114          'variables': {
1115            'gyp_generators': '<!(echo $GYP_GENERATORS)',
1116          },
1117          'msvs_disabled_warnings': [4351, 4355, 4800],
1118        }],
1119        ['component=="shared_library"', {
1120          'defines': [
1121            'BUILDING_V8_SHARED',
1122            'V8_SHARED',
1123          ],
1124        }],
1125        ['v8_postmortem_support=="true"', {
1126          'sources': [
1127            '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
1128          ]
1129        }],
1130        ['v8_enable_i18n_support==1', {
1131          'dependencies': [
1132            '<(icu_gyp_path):icui18n',
1133            '<(icu_gyp_path):icuuc',
1134          ]
1135        }, {  # v8_enable_i18n_support==0
1136          'sources!': [
1137            '../../src/i18n.cc',
1138            '../../src/i18n.h',
1139          ],
1140        }],
1141        ['OS=="win" and v8_enable_i18n_support==1', {
1142          'dependencies': [
1143            '<(icu_gyp_path):icudata',
1144          ],
1145        }],
1146        ['icu_use_data_file_flag==1', {
1147          'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'],
1148        }, { # else icu_use_data_file_flag !=1
1149          'conditions': [
1150            ['OS=="win"', {
1151              'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'],
1152            }, {
1153              'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'],
1154            }],
1155          ],
1156        }],
1157      ],
1158    },
1159    {
1160      'target_name': 'v8_libbase',
1161      'type': 'static_library',
1162      'variables': {
1163        'optimize': 'max',
1164      },
1165      'include_dirs+': [
1166        '../..',
1167      ],
1168      'sources': [
1169        '../../src/base/atomicops.h',
1170        '../../src/base/atomicops_internals_arm64_gcc.h',
1171        '../../src/base/atomicops_internals_arm_gcc.h',
1172        '../../src/base/atomicops_internals_atomicword_compat.h',
1173        '../../src/base/atomicops_internals_mac.h',
1174        '../../src/base/atomicops_internals_mips_gcc.h',
1175        '../../src/base/atomicops_internals_tsan.h',
1176        '../../src/base/atomicops_internals_x86_gcc.cc',
1177        '../../src/base/atomicops_internals_x86_gcc.h',
1178        '../../src/base/atomicops_internals_x86_msvc.h',
1179        '../../src/base/bits.cc',
1180        '../../src/base/bits.h',
1181        '../../src/base/build_config.h',
1182        '../../src/base/compiler-specific.h',
1183        '../../src/base/cpu.cc',
1184        '../../src/base/cpu.h',
1185        '../../src/base/division-by-constant.cc',
1186        '../../src/base/division-by-constant.h',
1187        '../../src/base/flags.h',
1188        '../../src/base/lazy-instance.h',
1189        '../../src/base/logging.cc',
1190        '../../src/base/logging.h',
1191        '../../src/base/macros.h',
1192        '../../src/base/once.cc',
1193        '../../src/base/once.h',
1194        '../../src/base/platform/elapsed-timer.h',
1195        '../../src/base/platform/time.cc',
1196        '../../src/base/platform/time.h',
1197        '../../src/base/platform/condition-variable.cc',
1198        '../../src/base/platform/condition-variable.h',
1199        '../../src/base/platform/mutex.cc',
1200        '../../src/base/platform/mutex.h',
1201        '../../src/base/platform/platform.h',
1202        '../../src/base/platform/semaphore.cc',
1203        '../../src/base/platform/semaphore.h',
1204        '../../src/base/safe_conversions.h',
1205        '../../src/base/safe_conversions_impl.h',
1206        '../../src/base/safe_math.h',
1207        '../../src/base/safe_math_impl.h',
1208        '../../src/base/sys-info.cc',
1209        '../../src/base/sys-info.h',
1210        '../../src/base/utils/random-number-generator.cc',
1211        '../../src/base/utils/random-number-generator.h',
1212      ],
1213      'conditions': [
1214        ['want_separate_host_toolset==1', {
1215          'toolsets': ['host', 'target'],
1216        }, {
1217          'toolsets': ['target'],
1218        }],
1219        ['OS=="linux"', {
1220            'link_settings': {
1221              'libraries': [
1222                '-lrt'
1223              ]
1224            },
1225            'sources': [
1226              '../../src/base/platform/platform-linux.cc',
1227              '../../src/base/platform/platform-posix.cc'
1228            ],
1229          }
1230        ],
1231        ['OS=="android"', {
1232            'sources': [
1233              '../../src/base/platform/platform-posix.cc'
1234            ],
1235            'conditions': [
1236              ['host_os=="mac"', {
1237                'target_conditions': [
1238                  ['_toolset=="host"', {
1239                    'sources': [
1240                      '../../src/base/platform/platform-macos.cc'
1241                    ]
1242                  }, {
1243                    'sources': [
1244                      '../../src/base/platform/platform-linux.cc'
1245                    ]
1246                  }],
1247                ],
1248              }, {
1249                # TODO(bmeurer): What we really want here, is this:
1250                #
1251                # 'link_settings': {
1252                #   'target_conditions': [
1253                #     ['_toolset=="host"', {
1254                #       'libraries': [
1255                #         '-lrt'
1256                #       ]
1257                #     }]
1258                #   ]
1259                # },
1260                #
1261                # but we can't do this right now, as the AOSP does not support
1262                # linking against the host librt, so we need to work around this
1263                # for now, using the following hack (see platform/time.cc):
1264                'target_conditions': [
1265                  ['_toolset=="host"', {
1266                    'defines': [
1267                      'V8_LIBRT_NOT_AVAILABLE=1',
1268                    ],
1269                  }],
1270                ],
1271                'sources': [
1272                  '../../src/base/platform/platform-linux.cc'
1273                ]
1274              }],
1275            ],
1276          },
1277        ],
1278        ['OS=="qnx"', {
1279            'link_settings': {
1280              'target_conditions': [
1281                ['_toolset=="host" and host_os=="linux"', {
1282                  'libraries': [
1283                    '-lrt'
1284                  ],
1285                }],
1286                ['_toolset=="target"', {
1287                  'libraries': [
1288                    '-lbacktrace'
1289                  ],
1290                }],
1291              ],
1292            },
1293            'sources': [
1294              '../../src/base/platform/platform-posix.cc',
1295              '../../src/base/qnx-math.h',
1296            ],
1297            'target_conditions': [
1298              ['_toolset=="host" and host_os=="linux"', {
1299                'sources': [
1300                  '../../src/base/platform/platform-linux.cc'
1301                ],
1302              }],
1303              ['_toolset=="host" and host_os=="mac"', {
1304                'sources': [
1305                  '../../src/base/platform/platform-macos.cc'
1306                ],
1307              }],
1308              ['_toolset=="target"', {
1309                'sources': [
1310                  '../../src/base/platform/platform-qnx.cc'
1311                ],
1312              }],
1313            ],
1314          },
1315        ],
1316        ['OS=="freebsd"', {
1317            'link_settings': {
1318              'libraries': [
1319                '-L/usr/local/lib -lexecinfo',
1320            ]},
1321            'sources': [
1322              '../../src/base/platform/platform-freebsd.cc',
1323              '../../src/base/platform/platform-posix.cc'
1324            ],
1325          }
1326        ],
1327        ['OS=="openbsd"', {
1328            'link_settings': {
1329              'libraries': [
1330                '-L/usr/local/lib -lexecinfo',
1331            ]},
1332            'sources': [
1333              '../../src/base/platform/platform-openbsd.cc',
1334              '../../src/base/platform/platform-posix.cc'
1335            ],
1336          }
1337        ],
1338        ['OS=="netbsd"', {
1339            'link_settings': {
1340              'libraries': [
1341                '-L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lexecinfo',
1342            ]},
1343            'sources': [
1344              '../../src/base/platform/platform-openbsd.cc',
1345              '../../src/base/platform/platform-posix.cc'
1346            ],
1347          }
1348        ],
1349        ['OS=="solaris"', {
1350            'link_settings': {
1351              'libraries': [
1352                '-lnsl',
1353            ]},
1354            'sources': [
1355              '../../src/base/platform/platform-solaris.cc',
1356              '../../src/base/platform/platform-posix.cc'
1357            ],
1358          }
1359        ],
1360        ['OS=="mac"', {
1361          'sources': [
1362            '../../src/base/platform/platform-macos.cc',
1363            '../../src/base/platform/platform-posix.cc'
1364          ]},
1365        ],
1366        ['OS=="win"', {
1367          'defines': [
1368            '_CRT_RAND_S'  # for rand_s()
1369          ],
1370          'variables': {
1371            'gyp_generators': '<!(echo $GYP_GENERATORS)',
1372          },
1373          'conditions': [
1374            ['gyp_generators=="make"', {
1375              'variables': {
1376                'build_env': '<!(uname -o)',
1377              },
1378              'conditions': [
1379                ['build_env=="Cygwin"', {
1380                  'sources': [
1381                    '../../src/base/platform/platform-cygwin.cc',
1382                    '../../src/base/platform/platform-posix.cc'
1383                  ],
1384                }, {
1385                  'sources': [
1386                    '../../src/base/platform/platform-win32.cc',
1387                    '../../src/base/win32-headers.h',
1388                    '../../src/base/win32-math.cc',
1389                    '../../src/base/win32-math.h'
1390                  ],
1391                }],
1392              ],
1393              'link_settings':  {
1394                'libraries': [ '-lwinmm', '-lws2_32' ],
1395              },
1396            }, {
1397              'sources': [
1398                '../../src/base/platform/platform-win32.cc',
1399                '../../src/base/win32-headers.h',
1400                '../../src/base/win32-math.cc',
1401                '../../src/base/win32-math.h'
1402              ],
1403              'msvs_disabled_warnings': [4351, 4355, 4800],
1404              'link_settings':  {
1405                'libraries': [ '-lwinmm.lib', '-lws2_32.lib' ],
1406              },
1407            }],
1408          ],
1409        }],
1410      ],
1411    },
1412    {
1413      'target_name': 'v8_libplatform',
1414      'type': 'static_library',
1415      'variables': {
1416        'optimize': 'max',
1417      },
1418      'dependencies': [
1419        'v8_libbase',
1420      ],
1421      'include_dirs+': [
1422        '../..',
1423      ],
1424      'sources': [
1425        '../../include/libplatform/libplatform.h',
1426        '../../src/libplatform/default-platform.cc',
1427        '../../src/libplatform/default-platform.h',
1428        '../../src/libplatform/task-queue.cc',
1429        '../../src/libplatform/task-queue.h',
1430        '../../src/libplatform/worker-thread.cc',
1431        '../../src/libplatform/worker-thread.h',
1432      ],
1433      'conditions': [
1434        ['want_separate_host_toolset==1', {
1435          'toolsets': ['host', 'target'],
1436        }, {
1437          'toolsets': ['target'],
1438        }],
1439      ],
1440    },
1441    {
1442      'target_name': 'natives_blob',
1443      'type': 'none',
1444      'conditions': [
1445        [ 'v8_use_external_startup_data==1', {
1446          'conditions': [
1447            ['want_separate_host_toolset==1', {
1448              'dependencies': ['js2c#host'],
1449            }, {
1450              'dependencies': ['js2c'],
1451            }],
1452          ],
1453          'actions': [{
1454            'action_name': 'concatenate_natives_blob',
1455            'inputs': [
1456              '../../tools/concatenate-files.py',
1457              '<(SHARED_INTERMEDIATE_DIR)/libraries.bin',
1458              '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental.bin',
1459            ],
1460            'conditions': [
1461              ['want_separate_host_toolset==1', {
1462                'target_conditions': [
1463                  ['_toolset=="host"', {
1464                    'outputs': [
1465                      '<(PRODUCT_DIR)/natives_blob_host.bin',
1466                    ],
1467                    'action': [
1468                      'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_host.bin'
1469                    ],
1470                  }, {
1471                    'outputs': [
1472                      '<(PRODUCT_DIR)/natives_blob.bin',
1473                    ],
1474                    'action': [
1475                      'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob.bin'
1476                    ],
1477                  }],
1478                ],
1479              }, {
1480                'outputs': [
1481                  '<(PRODUCT_DIR)/natives_blob.bin',
1482                ],
1483                'action': [
1484                  'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob.bin'
1485                ],
1486              }],
1487            ],
1488          }],
1489        }],
1490        ['want_separate_host_toolset==1', {
1491          'toolsets': ['host', 'target'],
1492        }, {
1493          'toolsets': ['target'],
1494        }],
1495      ]
1496    },
1497    {
1498      'target_name': 'js2c',
1499      'type': 'none',
1500      'conditions': [
1501        ['want_separate_host_toolset==1', {
1502          'toolsets': ['host'],
1503        }, {
1504          'toolsets': ['target'],
1505        }],
1506        ['v8_enable_i18n_support==1', {
1507          'variables': {
1508            'i18n_library_files': [
1509              '../../src/i18n.js',
1510            ],
1511          },
1512        }, {
1513          'variables': {
1514            'i18n_library_files': [],
1515          },
1516        }],
1517      ],
1518      'variables': {
1519        'library_files': [
1520          '../../src/runtime.js',
1521          '../../src/v8natives.js',
1522          '../../src/symbol.js',
1523          '../../src/array.js',
1524          '../../src/string.js',
1525          '../../src/uri.js',
1526          '../../third_party/fdlibm/fdlibm.js',
1527          '../../src/math.js',
1528          '../../src/apinatives.js',
1529          '../../src/date.js',
1530          '../../src/regexp.js',
1531          '../../src/arraybuffer.js',
1532          '../../src/typedarray.js',
1533          '../../src/generator.js',
1534          '../../src/object-observe.js',
1535          '../../src/collection.js',
1536          '../../src/weak-collection.js',
1537          '../../src/collection-iterator.js',
1538          '../../src/promise.js',
1539          '../../src/messages.js',
1540          '../../src/json.js',
1541          '../../src/array-iterator.js',
1542          '../../src/string-iterator.js',
1543          '../../src/debug-debugger.js',
1544          '../../src/mirror-debugger.js',
1545          '../../src/liveedit-debugger.js',
1546          '../../src/macros.py',
1547        ],
1548        'experimental_library_files': [
1549          '../../src/macros.py',
1550          '../../src/proxy.js',
1551          '../../src/generator.js',
1552          '../../src/harmony-string.js',
1553          '../../src/harmony-array.js',
1554          '../../src/harmony-classes.js',
1555        ],
1556        'libraries_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries.bin',
1557        'libraries_experimental_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental.bin',
1558      },
1559      'actions': [
1560        {
1561          'action_name': 'js2c',
1562          'inputs': [
1563            '../../tools/js2c.py',
1564            '<@(library_files)',
1565            '<@(i18n_library_files)',
1566          ],
1567          'outputs': [
1568            '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
1569          ],
1570          'action': [
1571            'python',
1572            '../../tools/js2c.py',
1573            '<(SHARED_INTERMEDIATE_DIR)/libraries.cc',
1574            'CORE',
1575            '<(v8_compress_startup_data)',
1576            '<@(library_files)',
1577            '<@(i18n_library_files)',
1578          ],
1579          'conditions': [
1580            [ 'v8_use_external_startup_data==1', {
1581              'outputs': ['<@(libraries_bin_file)'],
1582              'action': [
1583                '--startup_blob', '<@(libraries_bin_file)',
1584              ],
1585            }],
1586          ],
1587        },
1588        {
1589          'action_name': 'js2c_experimental',
1590          'inputs': [
1591            '../../tools/js2c.py',
1592            '<@(experimental_library_files)',
1593          ],
1594          'outputs': [
1595            '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
1596          ],
1597          'action': [
1598            'python',
1599            '../../tools/js2c.py',
1600            '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc',
1601            'EXPERIMENTAL',
1602            '<(v8_compress_startup_data)',
1603            '<@(experimental_library_files)'
1604          ],
1605          'conditions': [
1606            [ 'v8_use_external_startup_data==1', {
1607              'outputs': ['<@(libraries_experimental_bin_file)'],
1608              'action': [
1609                '--startup_blob', '<@(libraries_experimental_bin_file)'
1610              ],
1611            }],
1612          ],
1613        },
1614      ],
1615    },
1616    {
1617      'target_name': 'postmortem-metadata',
1618      'type': 'none',
1619      'variables': {
1620        'heapobject_files': [
1621            '../../src/objects.h',
1622            '../../src/objects-inl.h',
1623        ],
1624      },
1625      'actions': [
1626          {
1627            'action_name': 'gen-postmortem-metadata',
1628            'inputs': [
1629              '../../tools/gen-postmortem-metadata.py',
1630              '<@(heapobject_files)',
1631            ],
1632            'outputs': [
1633              '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
1634            ],
1635            'action': [
1636              'python',
1637              '../../tools/gen-postmortem-metadata.py',
1638              '<@(_outputs)',
1639              '<@(heapobject_files)'
1640            ]
1641          }
1642        ]
1643    },
1644    {
1645      'target_name': 'mksnapshot',
1646      'type': 'executable',
1647      'dependencies': ['v8_base', 'v8_nosnapshot', 'v8_libplatform'],
1648      'include_dirs+': [
1649        '../..',
1650      ],
1651      'sources': [
1652        '../../src/mksnapshot.cc',
1653      ],
1654      'conditions': [
1655        ['want_separate_host_toolset==1', {
1656          'toolsets': ['host'],
1657        }, {
1658          'toolsets': ['target'],
1659        }],
1660        ['v8_compress_startup_data=="bz2"', {
1661          'libraries': [
1662            '-lbz2',
1663          ]
1664        }],
1665      ],
1666    },
1667  ],
1668}
1669