1# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/config/android/config.gni")
6import("//build/config/arm.gni")
7import("//build/config/dcheck_always_on.gni")
8import("//build/config/mips.gni")
9import("//build/config/sanitizers/sanitizers.gni")
10
11if (is_android) {
12  import("//build/config/android/rules.gni")
13}
14
15import("gni/v8.gni")
16import("gni/isolate.gni")
17import("//build_overrides/v8.gni")
18
19import("snapshot_toolchain.gni")
20
21declare_args() {
22  # Print to stdout on Android.
23  v8_android_log_stdout = false
24
25  # Sets -DVERIFY_HEAP.
26  v8_enable_verify_heap = false
27
28  # Enable compiler warnings when using V8_DEPRECATED apis.
29  v8_deprecation_warnings = false
30
31  # Enable compiler warnings when using V8_DEPRECATE_SOON apis.
32  v8_imminent_deprecation_warnings = ""
33
34  # Embeds the given script into the snapshot.
35  v8_embed_script = ""
36
37  # Sets -dENABLE_DISASSEMBLER.
38  v8_enable_disassembler = ""
39
40  # Sets -dENABLE_GDB_JIT_INTERFACE.
41  v8_enable_gdbjit = ""
42
43  # Sets -dENABLE_HANDLE_ZAPPING.
44  v8_enable_handle_zapping = is_debug
45
46  # Enable slow dchecks.
47  v8_enable_slow_dchecks = false
48
49  # Interpreted regexp engine exists as platform-independent alternative
50  # based where the regular expression is compiled to a bytecode.
51  v8_interpreted_regexp = false
52
53  # Sets -dOBJECT_PRINT.
54  v8_object_print = ""
55
56  # With post mortem support enabled, metadata is embedded into libv8 that
57  # describes various parameters of the VM for use by debuggers. See
58  # tools/gen-postmortem-metadata.py for details.
59  v8_postmortem_support = false
60
61  # Switches off inlining in V8.
62  v8_no_inline = false
63
64  # Override OS page size when generating snapshot
65  v8_os_page_size = "0"
66
67  # Similar to vfp but on MIPS.
68  v8_can_use_fpu_instructions = true
69
70  # Similar to the ARM hard float ABI but on MIPS.
71  v8_use_mips_abi_hardfloat = true
72}
73
74# Set project-specific defaults for some args if not provided in args.gn. The
75# defaults can be set in the respective build_overrides files.
76if (v8_imminent_deprecation_warnings == "") {
77  if (defined(v8_imminent_deprecation_warnings_default)) {
78    v8_imminent_deprecation_warnings = v8_imminent_deprecation_warnings_default
79  } else {
80    v8_imminent_deprecation_warnings = false
81  }
82}
83if (v8_enable_gdbjit == "") {
84  if (defined(v8_enable_gdbjit_default)) {
85    v8_enable_gdbjit = v8_enable_gdbjit_default
86  } else {
87    v8_enable_gdbjit = false
88  }
89}
90
91# Derived defaults.
92if (v8_object_print == "") {
93  v8_object_print = is_debug && !v8_optimized_debug
94}
95if (v8_enable_disassembler == "") {
96  v8_enable_disassembler = is_debug && !v8_optimized_debug
97}
98
99# Specifies if the target build is a simulator build. Comparing target cpu
100# with v8 target cpu to not affect simulator builds for making cross-compile
101# snapshots.
102is_target_simulator = target_cpu != v8_target_cpu
103
104v8_generated_peephole_source = "$target_gen_dir/bytecode-peephole-table.cc"
105v8_random_seed = "314159265"
106v8_toolset_for_shell = "host"
107
108###############################################################################
109# Configurations
110#
111config("internal_config") {
112  visibility = [ ":*" ]  # Only targets in this file can depend on this.
113
114  include_dirs = [ "." ]
115
116  if (is_component_build) {
117    defines = [ "BUILDING_V8_SHARED" ]
118  }
119}
120
121config("internal_config_base") {
122  visibility = [ ":*" ]  # Only targets in this file can depend on this.
123
124  include_dirs = [ "." ]
125}
126
127# This config should be applied to code using the libplatform.
128config("libplatform_config") {
129  include_dirs = [ "include" ]
130  if (is_component_build) {
131    defines = [ "USING_V8_PLATFORM_SHARED" ]
132  }
133}
134
135# This config should be applied to code using the libbase.
136config("libbase_config") {
137  if (is_component_build) {
138    defines = [ "USING_V8_BASE_SHARED" ]
139  }
140  libs = []
141  if (is_android && current_toolchain != host_toolchain) {
142    libs += [ "log" ]
143  }
144}
145
146# This config should be applied to code using the libsampler.
147config("libsampler_config") {
148  include_dirs = [ "include" ]
149}
150
151# This config should only be applied to code using V8 and not any V8 code
152# itself.
153config("external_config") {
154  if (is_component_build) {
155    defines = [ "USING_V8_SHARED" ]
156  }
157  include_dirs = [ "include" ]
158  if (v8_enable_inspector_override) {
159    include_dirs += [ "$target_gen_dir/include" ]
160  }
161}
162
163# This config should only be applied to code that needs to be explicitly
164# aware of whether we are using startup data or not.
165config("external_startup_data") {
166  if (v8_use_external_startup_data) {
167    defines = [ "V8_USE_EXTERNAL_STARTUP_DATA" ]
168  }
169}
170
171config("features") {
172  visibility = [ ":*" ]  # Only targets in this file can depend on this.
173
174  defines = []
175
176  if (v8_enable_disassembler) {
177    defines += [ "ENABLE_DISASSEMBLER" ]
178  }
179  if (v8_enable_gdbjit) {
180    defines += [ "ENABLE_GDB_JIT_INTERFACE" ]
181  }
182  if (v8_object_print) {
183    defines += [ "OBJECT_PRINT" ]
184  }
185  if (v8_enable_verify_heap) {
186    defines += [ "VERIFY_HEAP" ]
187  }
188  if (v8_interpreted_regexp) {
189    defines += [ "V8_INTERPRETED_REGEXP" ]
190  }
191  if (v8_deprecation_warnings) {
192    defines += [ "V8_DEPRECATION_WARNINGS" ]
193  }
194  if (v8_imminent_deprecation_warnings) {
195    defines += [ "V8_IMMINENT_DEPRECATION_WARNINGS" ]
196  }
197  if (v8_enable_i18n_support) {
198    defines += [ "V8_I18N_SUPPORT" ]
199  }
200  if (v8_enable_handle_zapping) {
201    defines += [ "ENABLE_HANDLE_ZAPPING" ]
202  }
203  if (v8_use_external_startup_data) {
204    defines += [ "V8_USE_EXTERNAL_STARTUP_DATA" ]
205  }
206}
207
208config("toolchain") {
209  visibility = [ ":*" ]  # Only targets in this file can depend on this.
210
211  defines = []
212  cflags = []
213  ldflags = []
214
215  if (v8_current_cpu == "arm") {
216    defines += [ "V8_TARGET_ARCH_ARM" ]
217    if (arm_version >= 7) {
218      defines += [ "CAN_USE_ARMV7_INSTRUCTIONS" ]
219    }
220    if (arm_fpu == "vfpv3-d16") {
221      defines += [ "CAN_USE_VFP3_INSTRUCTIONS" ]
222    } else if (arm_fpu == "vfpv3") {
223      defines += [
224        "CAN_USE_VFP3_INSTRUCTIONS",
225        "CAN_USE_VFP32DREGS",
226      ]
227    } else if (arm_fpu == "neon") {
228      defines += [
229        "CAN_USE_VFP3_INSTRUCTIONS",
230        "CAN_USE_VFP32DREGS",
231        "CAN_USE_NEON",
232      ]
233    }
234
235    # TODO(jochen): Add support for arm_test_noprobe.
236
237    if (current_cpu != "arm") {
238      # These defines ares used for the ARM simulator.
239      if (arm_float_abi == "hard") {
240        defines += [ "USE_EABI_HARDFLOAT=1" ]
241      } else if (arm_float_abi == "softfp") {
242        defines += [ "USE_EABI_HARDFLOAT=0" ]
243      }
244    }
245  }
246  if (v8_current_cpu == "arm64") {
247    defines += [ "V8_TARGET_ARCH_ARM64" ]
248  }
249
250  # Mips64el/mipsel simulators.
251  if (is_target_simulator &&
252      (v8_current_cpu == "mipsel" || v8_current_cpu == "mips64el")) {
253    defines += [ "_MIPS_TARGET_SIMULATOR" ]
254  }
255
256  # TODO(jochen): Add support for mips.
257  if (v8_current_cpu == "mipsel") {
258    defines += [ "V8_TARGET_ARCH_MIPS" ]
259    if (v8_can_use_fpu_instructions) {
260      defines += [ "CAN_USE_FPU_INSTRUCTIONS" ]
261    }
262    if (v8_use_mips_abi_hardfloat) {
263      defines += [
264        "__mips_hard_float=1",
265        "CAN_USE_FPU_INSTRUCTIONS",
266      ]
267    } else {
268      defines += [ "__mips_soft_float=1" ]
269    }
270    if (mips_arch_variant == "r6") {
271      defines += [
272        "_MIPS_ARCH_MIPS32R6",
273        "FPU_MODE_FP64",
274      ]
275    } else if (mips_arch_variant == "r2") {
276      defines += [ "_MIPS_ARCH_MIPS32R2" ]
277      if (mips_fpu_mode == "fp64") {
278        defines += [ "FPU_MODE_FP64" ]
279      } else if (mips_fpu_mode == "fpxx") {
280        defines += [ "FPU_MODE_FPXX" ]
281      } else if (mips_fpu_mode == "fp32") {
282        defines += [ "FPU_MODE_FP32" ]
283      }
284    } else if (mips_arch_variant == "r1") {
285      defines += [ "FPU_MODE_FP32" ]
286    }
287
288    # TODO(jochen): Add support for mips_arch_variant rx and loongson.
289  }
290
291  # TODO(jochen): Add support for mips64.
292  if (v8_current_cpu == "mips64el") {
293    defines += [ "V8_TARGET_ARCH_MIPS64" ]
294    if (v8_can_use_fpu_instructions) {
295      defines += [ "CAN_USE_FPU_INSTRUCTIONS" ]
296    }
297
298    # TODO(jochen): Add support for big endian host byteorder.
299    defines += [ "V8_TARGET_ARCH_MIPS64_LE" ]
300    if (v8_use_mips_abi_hardfloat) {
301      defines += [
302        "__mips_hard_float=1",
303        "CAN_USE_FPU_INSTRUCTIONS",
304      ]
305    } else {
306      defines += [ "__mips_soft_float=1" ]
307    }
308    if (mips_arch_variant == "r6") {
309      defines += [ "_MIPS_ARCH_MIPS64R6" ]
310    } else if (mips_arch_variant == "r2") {
311      defines += [ "_MIPS_ARCH_MIPS64R2" ]
312    }
313  }
314  if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") {
315    defines += [ "V8_TARGET_ARCH_S390" ]
316    if (v8_current_cpu == "s390x") {
317      defines += [ "V8_TARGET_ARCH_S390X" ]
318    }
319    if (host_cpu == "x64" || host_cpu == "x86") {
320      defines += [ "V8_TARGET_ARCH_S390_LE_SIM" ]
321    }
322  }
323  if (v8_current_cpu == "x86") {
324    defines += [ "V8_TARGET_ARCH_IA32" ]
325    if (is_win) {
326      # Ensure no surprising artifacts from 80bit double math with x86.
327      cflags += [ "/arch:SSE2" ]
328    }
329  }
330  if (v8_current_cpu == "x64") {
331    defines += [ "V8_TARGET_ARCH_X64" ]
332    if (is_win) {
333      # Increase the initial stack size. The default is 1MB, this is 2MB. This
334      # applies only to executables and shared libraries produced by V8 since
335      # ldflags are not pushed to dependants.
336      ldflags += [ "/STACK:2097152" ]
337    }
338  }
339  if (is_android && v8_android_log_stdout) {
340    defines += [ "V8_ANDROID_LOG_STDOUT" ]
341  }
342
343  # TODO(jochen): Support v8_enable_prof on Windows.
344  # TODO(jochen): Add support for compiling with simulators.
345
346  if (is_debug) {
347    if (is_linux && v8_enable_backtrace) {
348      ldflags += [ "-rdynamic" ]
349    }
350
351    # TODO(jochen): Add support for different debug optimization levels.
352    defines += [
353      "ENABLE_DISASSEMBLER",
354      "V8_ENABLE_CHECKS",
355      "OBJECT_PRINT",
356      "VERIFY_HEAP",
357      "DEBUG",
358      "TRACE_MAPS",
359    ]
360    if (v8_enable_slow_dchecks) {
361      defines += [ "ENABLE_SLOW_DCHECKS" ]
362    }
363  } else if (dcheck_always_on) {
364    defines += [ "DEBUG" ]
365  }
366
367  if (v8_no_inline) {
368    cflags += [
369      "-fno-inline-functions",
370      "-fno-inline",
371    ]
372  }
373
374  if (is_clang) {
375    cflags += [
376      "-Wsign-compare",
377
378      # TODO(hans): Remove once http://crbug.com/428099 is resolved.
379      "-Winconsistent-missing-override",
380    ]
381
382    if (v8_current_cpu == "x64" || v8_current_cpu == "arm64" ||
383        v8_current_cpu == "mips64el") {
384      cflags += [ "-Wshorten-64-to-32" ]
385    }
386  }
387}
388
389###############################################################################
390# Actions
391#
392
393action("js2c") {
394  visibility = [ ":*" ]  # Only targets in this file can depend on this.
395
396  script = "tools/js2c.py"
397
398  # The script depends on this other script, this rule causes a rebuild if it
399  # changes.
400  inputs = [
401    "tools/jsmin.py",
402  ]
403
404  # NOSORT
405  sources = [
406    "src/js/macros.py",
407    "src/messages.h",
408    "src/js/prologue.js",
409    "src/js/runtime.js",
410    "src/js/v8natives.js",
411    "src/js/symbol.js",
412    "src/js/array.js",
413    "src/js/string.js",
414    "src/js/arraybuffer.js",
415    "src/js/typedarray.js",
416    "src/js/collection.js",
417    "src/js/weak-collection.js",
418    "src/js/collection-iterator.js",
419    "src/js/promise.js",
420    "src/js/messages.js",
421    "src/js/templates.js",
422    "src/js/spread.js",
423    "src/js/proxy.js",
424    "src/js/async-await.js",
425    "src/debug/mirrors.js",
426    "src/debug/debug.js",
427    "src/debug/liveedit.js",
428  ]
429
430  outputs = [
431    "$target_gen_dir/libraries.cc",
432  ]
433
434  if (v8_enable_i18n_support) {
435    sources += [ "src/js/i18n.js" ]
436  }
437
438  args = [
439           rebase_path("$target_gen_dir/libraries.cc", root_build_dir),
440           "CORE",
441         ] + rebase_path(sources, root_build_dir)
442
443  if (v8_use_external_startup_data) {
444    outputs += [ "$target_gen_dir/libraries.bin" ]
445    args += [
446      "--startup_blob",
447      rebase_path("$target_gen_dir/libraries.bin", root_build_dir),
448    ]
449  }
450}
451
452action("js2c_experimental") {
453  visibility = [ ":*" ]  # Only targets in this file can depend on this.
454
455  script = "tools/js2c.py"
456
457  # The script depends on this other script, this rule causes a rebuild if it
458  # changes.
459  inputs = [
460    "tools/jsmin.py",
461  ]
462
463  # NOSORT
464  sources = [
465    "src/js/macros.py",
466    "src/messages.h",
467    "src/js/harmony-atomics.js",
468    "src/js/harmony-simd.js",
469    "src/js/harmony-string-padding.js",
470  ]
471
472  outputs = [
473    "$target_gen_dir/experimental-libraries.cc",
474  ]
475
476  if (v8_enable_i18n_support) {
477    sources += [
478      "src/js/datetime-format-to-parts.js",
479      "src/js/icu-case-mapping.js",
480    ]
481  }
482
483  args = [
484           rebase_path("$target_gen_dir/experimental-libraries.cc",
485                       root_build_dir),
486           "EXPERIMENTAL",
487         ] + rebase_path(sources, root_build_dir)
488
489  if (v8_use_external_startup_data) {
490    outputs += [ "$target_gen_dir/libraries_experimental.bin" ]
491    args += [
492      "--startup_blob",
493      rebase_path("$target_gen_dir/libraries_experimental.bin", root_build_dir),
494    ]
495  }
496}
497
498action("js2c_extras") {
499  visibility = [ ":*" ]  # Only targets in this file can depend on this.
500
501  script = "tools/js2c.py"
502
503  # The script depends on this other script, this rule causes a rebuild if it
504  # changes.
505  inputs = [
506    "tools/jsmin.py",
507  ]
508
509  sources = v8_extra_library_files
510
511  outputs = [
512    "$target_gen_dir/extras-libraries.cc",
513  ]
514
515  args = [
516           rebase_path("$target_gen_dir/extras-libraries.cc", root_build_dir),
517           "EXTRAS",
518         ] + rebase_path(sources, root_build_dir)
519
520  if (v8_use_external_startup_data) {
521    outputs += [ "$target_gen_dir/libraries_extras.bin" ]
522    args += [
523      "--startup_blob",
524      rebase_path("$target_gen_dir/libraries_extras.bin", root_build_dir),
525    ]
526  }
527}
528
529action("js2c_experimental_extras") {
530  visibility = [ ":*" ]  # Only targets in this file can depend on this.
531
532  script = "tools/js2c.py"
533
534  # The script depends on this other script, this rule causes a rebuild if it
535  # changes.
536  inputs = [
537    "tools/jsmin.py",
538  ]
539
540  sources = v8_experimental_extra_library_files
541
542  outputs = [
543    "$target_gen_dir/experimental-extras-libraries.cc",
544  ]
545
546  args = [
547           rebase_path("$target_gen_dir/experimental-extras-libraries.cc",
548                       root_build_dir),
549           "EXPERIMENTAL_EXTRAS",
550         ] + rebase_path(sources, root_build_dir)
551
552  if (v8_use_external_startup_data) {
553    outputs += [ "$target_gen_dir/libraries_experimental_extras.bin" ]
554    args += [
555      "--startup_blob",
556      rebase_path("$target_gen_dir/libraries_experimental_extras.bin",
557                  root_build_dir),
558    ]
559  }
560}
561
562action("d8_js2c") {
563  visibility = [ ":*" ]  # Only targets in this file can depend on this.
564
565  script = "tools/js2c.py"
566
567  # NOSORT
568  inputs = [
569    "src/d8.js",
570    "src/js/macros.py",
571  ]
572
573  outputs = [
574    "$target_gen_dir/d8-js.cc",
575  ]
576
577  args = rebase_path(outputs, root_build_dir) + [ "D8" ] +
578         rebase_path(inputs, root_build_dir)
579}
580
581if (is_android && enable_java_templates) {
582  android_assets("v8_external_startup_data_assets") {
583    if (v8_use_external_startup_data) {
584      deps = [
585        "//v8",
586      ]
587      sources = [
588        "$root_out_dir/natives_blob.bin",
589      ]
590      renaming_sources = [ "$root_out_dir/snapshot_blob.bin" ]
591      if (current_cpu == "arm" || current_cpu == "x86" ||
592          current_cpu == "mipsel") {
593        renaming_destinations = [ "snapshot_blob_32.bin" ]
594      } else {
595        renaming_destinations = [ "snapshot_blob_64.bin" ]
596      }
597      disable_compression = true
598    }
599  }
600}
601
602if (v8_use_external_startup_data) {
603  action("natives_blob") {
604    visibility = [ ":*" ]  # Only targets in this file can depend on this.
605
606    deps = [
607      ":js2c",
608      ":js2c_experimental",
609      ":js2c_experimental_extras",
610      ":js2c_extras",
611    ]
612
613    # NOSORT
614    sources = [
615      "$target_gen_dir/libraries.bin",
616      "$target_gen_dir/libraries_experimental.bin",
617      "$target_gen_dir/libraries_extras.bin",
618      "$target_gen_dir/libraries_experimental_extras.bin",
619    ]
620
621    outputs = [
622      "$root_out_dir/natives_blob.bin",
623    ]
624
625    script = "tools/concatenate-files.py"
626
627    args = rebase_path(sources + outputs, root_build_dir)
628  }
629}
630
631action("postmortem-metadata") {
632  # Only targets in this file and the top-level visibility target can
633  # depend on this.
634  visibility = [
635    ":*",
636    "//:gn_visibility",
637  ]
638
639  script = "tools/gen-postmortem-metadata.py"
640
641  # NOSORT
642  sources = [
643    "src/objects.h",
644    "src/objects-inl.h",
645  ]
646
647  outputs = [
648    "$target_gen_dir/debug-support.cc",
649  ]
650
651  args = rebase_path(outputs, root_build_dir) +
652         rebase_path(sources, root_build_dir)
653}
654
655action("run_mksnapshot") {
656  visibility = [ ":*" ]  # Only targets in this file can depend on this.
657
658  deps = [
659    ":mksnapshot($v8_snapshot_toolchain)",
660  ]
661
662  script = "tools/run.py"
663
664  sources = []
665
666  outputs = [
667    "$target_gen_dir/snapshot.cc",
668  ]
669
670  args = [
671    "./" + rebase_path(get_label_info(":mksnapshot($v8_snapshot_toolchain)",
672                                      "root_out_dir") + "/mksnapshot",
673                       root_build_dir),
674    "--startup_src",
675    rebase_path("$target_gen_dir/snapshot.cc", root_build_dir),
676  ]
677
678  if (v8_random_seed != "0") {
679    args += [
680      "--random-seed",
681      v8_random_seed,
682    ]
683  }
684
685  if (v8_os_page_size != "0") {
686    args += [
687      "--v8_os_page_size",
688      v8_os_page_size,
689    ]
690  }
691
692  if (v8_use_external_startup_data) {
693    outputs += [ "$root_out_dir/snapshot_blob.bin" ]
694    args += [
695      "--startup_blob",
696      rebase_path("$root_out_dir/snapshot_blob.bin", root_build_dir),
697    ]
698  }
699
700  if (v8_embed_script != "") {
701    sources += [ v8_embed_script ]
702    args += [ rebase_path(v8_embed_script, root_build_dir) ]
703  }
704}
705
706action("run_mkpeephole") {
707  visibility = [ ":*" ]  # Only targets in this file can depend on this.
708
709  deps = [
710    ":mkpeephole($v8_snapshot_toolchain)",
711  ]
712
713  outputs = [
714    v8_generated_peephole_source,
715  ]
716
717  sources = []
718
719  script = "tools/run.py"
720
721  args = [
722    "./" + rebase_path(get_label_info(":mkpeephole($v8_snapshot_toolchain)",
723                                      "root_out_dir") + "/mkpeephole",
724                       root_build_dir),
725    rebase_path(v8_generated_peephole_source, root_build_dir),
726  ]
727}
728
729action("v8_dump_build_config") {
730  script = "tools/testrunner/utils/dump_build_config.py"
731  outputs = [
732    "$root_out_dir/v8_build_config.json",
733  ]
734  args = [
735    rebase_path("$root_out_dir/v8_build_config.json", root_build_dir),
736    "dcheck_always_on=$dcheck_always_on",
737    "is_asan=$is_asan",
738    "is_cfi=$is_cfi",
739    "is_component_build=$is_component_build",
740    "is_debug=$is_debug",
741    "is_msan=$is_msan",
742    "is_tsan=$is_tsan",
743    "target_cpu=\"$target_cpu\"",
744    "v8_enable_i18n_support=$v8_enable_i18n_support",
745    "v8_enable_inspector=$v8_enable_inspector_override",
746    "v8_target_cpu=\"$v8_target_cpu\"",
747    "v8_use_snapshot=$v8_use_snapshot",
748  ]
749}
750
751###############################################################################
752# Source Sets (aka static libraries)
753#
754
755source_set("v8_maybe_snapshot") {
756  if (v8_use_snapshot && v8_use_external_startup_data) {
757    public_deps = [
758      ":v8_external_snapshot",
759    ]
760  } else if (v8_use_snapshot) {
761    public_deps = [
762      ":v8_snapshot",
763    ]
764  } else {
765    # Ignore v8_use_external_startup_data setting if no snapshot is used.
766    public_deps = [
767      ":v8_nosnapshot",
768    ]
769  }
770}
771
772v8_source_set("v8_nosnapshot") {
773  visibility = [ ":*" ]  # Only targets in this file can depend on this.
774
775  deps = [
776    ":js2c",
777    ":js2c_experimental",
778    ":js2c_experimental_extras",
779    ":js2c_extras",
780    ":v8_base",
781  ]
782
783  sources = [
784    "$target_gen_dir/experimental-extras-libraries.cc",
785    "$target_gen_dir/experimental-libraries.cc",
786    "$target_gen_dir/extras-libraries.cc",
787    "$target_gen_dir/libraries.cc",
788    "src/snapshot/snapshot-empty.cc",
789  ]
790
791  configs = [ ":internal_config" ]
792}
793
794v8_source_set("v8_snapshot") {
795  # Only targets in this file and the top-level visibility target can
796  # depend on this.
797  visibility = [
798    ":*",
799    "//:gn_visibility",
800  ]
801
802  deps = [
803    ":js2c",
804    ":js2c_experimental",
805    ":js2c_experimental_extras",
806    ":js2c_extras",
807    ":v8_base",
808  ]
809  public_deps = [
810    # This should be public so downstream targets can declare the snapshot
811    # output file as their inputs.
812    ":run_mksnapshot",
813  ]
814
815  sources = [
816    "$target_gen_dir/experimental-extras-libraries.cc",
817    "$target_gen_dir/experimental-libraries.cc",
818    "$target_gen_dir/extras-libraries.cc",
819    "$target_gen_dir/libraries.cc",
820    "$target_gen_dir/snapshot.cc",
821  ]
822
823  configs = [ ":internal_config" ]
824}
825
826if (v8_use_external_startup_data) {
827  v8_source_set("v8_external_snapshot") {
828    visibility = [ ":*" ]  # Only targets in this file can depend on this.
829
830    deps = [
831      ":js2c",
832      ":js2c_experimental",
833      ":js2c_experimental_extras",
834      ":js2c_extras",
835      ":v8_base",
836    ]
837    public_deps = [
838      ":natives_blob",
839      ":run_mksnapshot",
840    ]
841
842    sources = [
843      "src/snapshot/natives-external.cc",
844      "src/snapshot/snapshot-external.cc",
845    ]
846
847    configs = [ ":internal_config" ]
848  }
849}
850
851v8_source_set("v8_base") {
852  visibility = [ ":*" ]  # Only targets in this file can depend on this.
853
854  sources = [
855    "//base/trace_event/common/trace_event_common.h",
856
857    ### gcmole(all) ###
858    "include/v8-debug.h",
859    "include/v8-experimental.h",
860    "include/v8-platform.h",
861    "include/v8-profiler.h",
862    "include/v8-testing.h",
863    "include/v8-util.h",
864    "include/v8-version.h",
865    "include/v8.h",
866    "include/v8config.h",
867    "src/accessors.cc",
868    "src/accessors.h",
869    "src/address-map.cc",
870    "src/address-map.h",
871    "src/allocation-site-scopes.cc",
872    "src/allocation-site-scopes.h",
873    "src/allocation.cc",
874    "src/allocation.h",
875    "src/api-arguments-inl.h",
876    "src/api-arguments.cc",
877    "src/api-arguments.h",
878    "src/api-experimental.cc",
879    "src/api-experimental.h",
880    "src/api-natives.cc",
881    "src/api-natives.h",
882    "src/api.cc",
883    "src/api.h",
884    "src/arguments.cc",
885    "src/arguments.h",
886    "src/asmjs/asm-js.cc",
887    "src/asmjs/asm-js.h",
888    "src/asmjs/asm-typer.cc",
889    "src/asmjs/asm-typer.h",
890    "src/asmjs/asm-types.cc",
891    "src/asmjs/asm-types.h",
892    "src/asmjs/asm-wasm-builder.cc",
893    "src/asmjs/asm-wasm-builder.h",
894    "src/asmjs/switch-logic.cc",
895    "src/asmjs/switch-logic.h",
896    "src/assembler.cc",
897    "src/assembler.h",
898    "src/assert-scope.cc",
899    "src/assert-scope.h",
900    "src/ast/ast-expression-rewriter.cc",
901    "src/ast/ast-expression-rewriter.h",
902    "src/ast/ast-literal-reindexer.cc",
903    "src/ast/ast-literal-reindexer.h",
904    "src/ast/ast-numbering.cc",
905    "src/ast/ast-numbering.h",
906    "src/ast/ast-traversal-visitor.h",
907    "src/ast/ast-type-bounds.h",
908    "src/ast/ast-types.cc",
909    "src/ast/ast-types.h",
910    "src/ast/ast-value-factory.cc",
911    "src/ast/ast-value-factory.h",
912    "src/ast/ast.cc",
913    "src/ast/ast.h",
914    "src/ast/compile-time-value.cc",
915    "src/ast/compile-time-value.h",
916    "src/ast/context-slot-cache.cc",
917    "src/ast/context-slot-cache.h",
918    "src/ast/modules.cc",
919    "src/ast/modules.h",
920    "src/ast/prettyprinter.cc",
921    "src/ast/prettyprinter.h",
922    "src/ast/scopeinfo.cc",
923    "src/ast/scopes.cc",
924    "src/ast/scopes.h",
925    "src/ast/variables.cc",
926    "src/ast/variables.h",
927    "src/background-parsing-task.cc",
928    "src/background-parsing-task.h",
929    "src/bailout-reason.cc",
930    "src/bailout-reason.h",
931    "src/basic-block-profiler.cc",
932    "src/basic-block-profiler.h",
933    "src/bignum-dtoa.cc",
934    "src/bignum-dtoa.h",
935    "src/bignum.cc",
936    "src/bignum.h",
937    "src/bit-vector.cc",
938    "src/bit-vector.h",
939    "src/bootstrapper.cc",
940    "src/bootstrapper.h",
941    "src/builtins/builtins-api.cc",
942    "src/builtins/builtins-array.cc",
943    "src/builtins/builtins-arraybuffer.cc",
944    "src/builtins/builtins-boolean.cc",
945    "src/builtins/builtins-call.cc",
946    "src/builtins/builtins-callsite.cc",
947    "src/builtins/builtins-conversion.cc",
948    "src/builtins/builtins-dataview.cc",
949    "src/builtins/builtins-date.cc",
950    "src/builtins/builtins-debug.cc",
951    "src/builtins/builtins-error.cc",
952    "src/builtins/builtins-function.cc",
953    "src/builtins/builtins-generator.cc",
954    "src/builtins/builtins-global.cc",
955    "src/builtins/builtins-handler.cc",
956    "src/builtins/builtins-internal.cc",
957    "src/builtins/builtins-interpreter.cc",
958    "src/builtins/builtins-iterator.cc",
959    "src/builtins/builtins-json.cc",
960    "src/builtins/builtins-math.cc",
961    "src/builtins/builtins-number.cc",
962    "src/builtins/builtins-object.cc",
963    "src/builtins/builtins-promise.cc",
964    "src/builtins/builtins-proxy.cc",
965    "src/builtins/builtins-reflect.cc",
966    "src/builtins/builtins-regexp.cc",
967    "src/builtins/builtins-sharedarraybuffer.cc",
968    "src/builtins/builtins-string.cc",
969    "src/builtins/builtins-symbol.cc",
970    "src/builtins/builtins-typedarray.cc",
971    "src/builtins/builtins-utils.h",
972    "src/builtins/builtins.cc",
973    "src/builtins/builtins.h",
974    "src/cached-powers.cc",
975    "src/cached-powers.h",
976    "src/cancelable-task.cc",
977    "src/cancelable-task.h",
978    "src/char-predicates-inl.h",
979    "src/char-predicates.cc",
980    "src/char-predicates.h",
981    "src/checks.h",
982    "src/code-events.h",
983    "src/code-factory.cc",
984    "src/code-factory.h",
985    "src/code-stub-assembler.cc",
986    "src/code-stub-assembler.h",
987    "src/code-stubs-hydrogen.cc",
988    "src/code-stubs.cc",
989    "src/code-stubs.h",
990    "src/codegen.cc",
991    "src/codegen.h",
992    "src/collector.h",
993    "src/compilation-cache.cc",
994    "src/compilation-cache.h",
995    "src/compilation-dependencies.cc",
996    "src/compilation-dependencies.h",
997    "src/compilation-info.cc",
998    "src/compilation-info.h",
999    "src/compilation-statistics.cc",
1000    "src/compilation-statistics.h",
1001    "src/compiler-dispatcher/compiler-dispatcher-job.cc",
1002    "src/compiler-dispatcher/compiler-dispatcher-job.h",
1003    "src/compiler-dispatcher/compiler-dispatcher-tracer.cc",
1004    "src/compiler-dispatcher/compiler-dispatcher-tracer.h",
1005    "src/compiler-dispatcher/optimizing-compile-dispatcher.cc",
1006    "src/compiler-dispatcher/optimizing-compile-dispatcher.h",
1007    "src/compiler.cc",
1008    "src/compiler.h",
1009    "src/compiler/access-builder.cc",
1010    "src/compiler/access-builder.h",
1011    "src/compiler/access-info.cc",
1012    "src/compiler/access-info.h",
1013    "src/compiler/all-nodes.cc",
1014    "src/compiler/all-nodes.h",
1015    "src/compiler/ast-graph-builder.cc",
1016    "src/compiler/ast-graph-builder.h",
1017    "src/compiler/ast-loop-assignment-analyzer.cc",
1018    "src/compiler/ast-loop-assignment-analyzer.h",
1019    "src/compiler/basic-block-instrumentor.cc",
1020    "src/compiler/basic-block-instrumentor.h",
1021    "src/compiler/branch-elimination.cc",
1022    "src/compiler/branch-elimination.h",
1023    "src/compiler/bytecode-branch-analysis.cc",
1024    "src/compiler/bytecode-branch-analysis.h",
1025    "src/compiler/bytecode-graph-builder.cc",
1026    "src/compiler/bytecode-graph-builder.h",
1027    "src/compiler/bytecode-loop-analysis.cc",
1028    "src/compiler/bytecode-loop-analysis.h",
1029    "src/compiler/c-linkage.cc",
1030    "src/compiler/checkpoint-elimination.cc",
1031    "src/compiler/checkpoint-elimination.h",
1032    "src/compiler/code-assembler.cc",
1033    "src/compiler/code-assembler.h",
1034    "src/compiler/code-generator-impl.h",
1035    "src/compiler/code-generator.cc",
1036    "src/compiler/code-generator.h",
1037    "src/compiler/common-node-cache.cc",
1038    "src/compiler/common-node-cache.h",
1039    "src/compiler/common-operator-reducer.cc",
1040    "src/compiler/common-operator-reducer.h",
1041    "src/compiler/common-operator.cc",
1042    "src/compiler/common-operator.h",
1043    "src/compiler/compiler-source-position-table.cc",
1044    "src/compiler/compiler-source-position-table.h",
1045    "src/compiler/control-builders.cc",
1046    "src/compiler/control-builders.h",
1047    "src/compiler/control-equivalence.cc",
1048    "src/compiler/control-equivalence.h",
1049    "src/compiler/control-flow-optimizer.cc",
1050    "src/compiler/control-flow-optimizer.h",
1051    "src/compiler/dead-code-elimination.cc",
1052    "src/compiler/dead-code-elimination.h",
1053    "src/compiler/diamond.h",
1054    "src/compiler/effect-control-linearizer.cc",
1055    "src/compiler/effect-control-linearizer.h",
1056    "src/compiler/escape-analysis-reducer.cc",
1057    "src/compiler/escape-analysis-reducer.h",
1058    "src/compiler/escape-analysis.cc",
1059    "src/compiler/escape-analysis.h",
1060    "src/compiler/frame-elider.cc",
1061    "src/compiler/frame-elider.h",
1062    "src/compiler/frame-states.cc",
1063    "src/compiler/frame-states.h",
1064    "src/compiler/frame.cc",
1065    "src/compiler/frame.h",
1066    "src/compiler/gap-resolver.cc",
1067    "src/compiler/gap-resolver.h",
1068    "src/compiler/graph-reducer.cc",
1069    "src/compiler/graph-reducer.h",
1070    "src/compiler/graph-replay.cc",
1071    "src/compiler/graph-replay.h",
1072    "src/compiler/graph-trimmer.cc",
1073    "src/compiler/graph-trimmer.h",
1074    "src/compiler/graph-visualizer.cc",
1075    "src/compiler/graph-visualizer.h",
1076    "src/compiler/graph.cc",
1077    "src/compiler/graph.h",
1078    "src/compiler/instruction-codes.h",
1079    "src/compiler/instruction-scheduler.cc",
1080    "src/compiler/instruction-scheduler.h",
1081    "src/compiler/instruction-selector-impl.h",
1082    "src/compiler/instruction-selector.cc",
1083    "src/compiler/instruction-selector.h",
1084    "src/compiler/instruction.cc",
1085    "src/compiler/instruction.h",
1086    "src/compiler/int64-lowering.cc",
1087    "src/compiler/int64-lowering.h",
1088    "src/compiler/js-builtin-reducer.cc",
1089    "src/compiler/js-builtin-reducer.h",
1090    "src/compiler/js-call-reducer.cc",
1091    "src/compiler/js-call-reducer.h",
1092    "src/compiler/js-context-specialization.cc",
1093    "src/compiler/js-context-specialization.h",
1094    "src/compiler/js-create-lowering.cc",
1095    "src/compiler/js-create-lowering.h",
1096    "src/compiler/js-frame-specialization.cc",
1097    "src/compiler/js-frame-specialization.h",
1098    "src/compiler/js-generic-lowering.cc",
1099    "src/compiler/js-generic-lowering.h",
1100    "src/compiler/js-global-object-specialization.cc",
1101    "src/compiler/js-global-object-specialization.h",
1102    "src/compiler/js-graph.cc",
1103    "src/compiler/js-graph.h",
1104    "src/compiler/js-inlining-heuristic.cc",
1105    "src/compiler/js-inlining-heuristic.h",
1106    "src/compiler/js-inlining.cc",
1107    "src/compiler/js-inlining.h",
1108    "src/compiler/js-intrinsic-lowering.cc",
1109    "src/compiler/js-intrinsic-lowering.h",
1110    "src/compiler/js-native-context-specialization.cc",
1111    "src/compiler/js-native-context-specialization.h",
1112    "src/compiler/js-operator.cc",
1113    "src/compiler/js-operator.h",
1114    "src/compiler/js-typed-lowering.cc",
1115    "src/compiler/js-typed-lowering.h",
1116    "src/compiler/jump-threading.cc",
1117    "src/compiler/jump-threading.h",
1118    "src/compiler/linkage.cc",
1119    "src/compiler/linkage.h",
1120    "src/compiler/live-range-separator.cc",
1121    "src/compiler/live-range-separator.h",
1122    "src/compiler/liveness-analyzer.cc",
1123    "src/compiler/liveness-analyzer.h",
1124    "src/compiler/load-elimination.cc",
1125    "src/compiler/load-elimination.h",
1126    "src/compiler/loop-analysis.cc",
1127    "src/compiler/loop-analysis.h",
1128    "src/compiler/loop-peeling.cc",
1129    "src/compiler/loop-peeling.h",
1130    "src/compiler/loop-variable-optimizer.cc",
1131    "src/compiler/loop-variable-optimizer.h",
1132    "src/compiler/machine-graph-verifier.cc",
1133    "src/compiler/machine-graph-verifier.h",
1134    "src/compiler/machine-operator-reducer.cc",
1135    "src/compiler/machine-operator-reducer.h",
1136    "src/compiler/machine-operator.cc",
1137    "src/compiler/machine-operator.h",
1138    "src/compiler/memory-optimizer.cc",
1139    "src/compiler/memory-optimizer.h",
1140    "src/compiler/move-optimizer.cc",
1141    "src/compiler/move-optimizer.h",
1142    "src/compiler/node-aux-data.h",
1143    "src/compiler/node-cache.cc",
1144    "src/compiler/node-cache.h",
1145    "src/compiler/node-marker.cc",
1146    "src/compiler/node-marker.h",
1147    "src/compiler/node-matchers.cc",
1148    "src/compiler/node-matchers.h",
1149    "src/compiler/node-properties.cc",
1150    "src/compiler/node-properties.h",
1151    "src/compiler/node.cc",
1152    "src/compiler/node.h",
1153    "src/compiler/opcodes.cc",
1154    "src/compiler/opcodes.h",
1155    "src/compiler/operation-typer.cc",
1156    "src/compiler/operation-typer.h",
1157    "src/compiler/operator-properties.cc",
1158    "src/compiler/operator-properties.h",
1159    "src/compiler/operator.cc",
1160    "src/compiler/operator.h",
1161    "src/compiler/osr.cc",
1162    "src/compiler/osr.h",
1163    "src/compiler/pipeline-statistics.cc",
1164    "src/compiler/pipeline-statistics.h",
1165    "src/compiler/pipeline.cc",
1166    "src/compiler/pipeline.h",
1167    "src/compiler/raw-machine-assembler.cc",
1168    "src/compiler/raw-machine-assembler.h",
1169    "src/compiler/redundancy-elimination.cc",
1170    "src/compiler/redundancy-elimination.h",
1171    "src/compiler/register-allocator-verifier.cc",
1172    "src/compiler/register-allocator-verifier.h",
1173    "src/compiler/register-allocator.cc",
1174    "src/compiler/register-allocator.h",
1175    "src/compiler/representation-change.cc",
1176    "src/compiler/representation-change.h",
1177    "src/compiler/schedule.cc",
1178    "src/compiler/schedule.h",
1179    "src/compiler/scheduler.cc",
1180    "src/compiler/scheduler.h",
1181    "src/compiler/select-lowering.cc",
1182    "src/compiler/select-lowering.h",
1183    "src/compiler/simd-scalar-lowering.cc",
1184    "src/compiler/simd-scalar-lowering.h",
1185    "src/compiler/simplified-lowering.cc",
1186    "src/compiler/simplified-lowering.h",
1187    "src/compiler/simplified-operator-reducer.cc",
1188    "src/compiler/simplified-operator-reducer.h",
1189    "src/compiler/simplified-operator.cc",
1190    "src/compiler/simplified-operator.h",
1191    "src/compiler/state-values-utils.cc",
1192    "src/compiler/state-values-utils.h",
1193    "src/compiler/store-store-elimination.cc",
1194    "src/compiler/store-store-elimination.h",
1195    "src/compiler/tail-call-optimization.cc",
1196    "src/compiler/tail-call-optimization.h",
1197    "src/compiler/type-cache.cc",
1198    "src/compiler/type-cache.h",
1199    "src/compiler/type-hint-analyzer.cc",
1200    "src/compiler/type-hint-analyzer.h",
1201    "src/compiler/typed-optimization.cc",
1202    "src/compiler/typed-optimization.h",
1203    "src/compiler/typer.cc",
1204    "src/compiler/typer.h",
1205    "src/compiler/types.cc",
1206    "src/compiler/types.h",
1207    "src/compiler/unwinding-info-writer.h",
1208    "src/compiler/value-numbering-reducer.cc",
1209    "src/compiler/value-numbering-reducer.h",
1210    "src/compiler/verifier.cc",
1211    "src/compiler/verifier.h",
1212    "src/compiler/wasm-compiler.cc",
1213    "src/compiler/wasm-compiler.h",
1214    "src/compiler/wasm-linkage.cc",
1215    "src/compiler/zone-stats.cc",
1216    "src/compiler/zone-stats.h",
1217    "src/context-measure.cc",
1218    "src/context-measure.h",
1219    "src/contexts-inl.h",
1220    "src/contexts.cc",
1221    "src/contexts.h",
1222    "src/conversions-inl.h",
1223    "src/conversions.cc",
1224    "src/conversions.h",
1225    "src/counters-inl.h",
1226    "src/counters.cc",
1227    "src/counters.h",
1228    "src/crankshaft/compilation-phase.cc",
1229    "src/crankshaft/compilation-phase.h",
1230    "src/crankshaft/hydrogen-alias-analysis.h",
1231    "src/crankshaft/hydrogen-bce.cc",
1232    "src/crankshaft/hydrogen-bce.h",
1233    "src/crankshaft/hydrogen-canonicalize.cc",
1234    "src/crankshaft/hydrogen-canonicalize.h",
1235    "src/crankshaft/hydrogen-check-elimination.cc",
1236    "src/crankshaft/hydrogen-check-elimination.h",
1237    "src/crankshaft/hydrogen-dce.cc",
1238    "src/crankshaft/hydrogen-dce.h",
1239    "src/crankshaft/hydrogen-dehoist.cc",
1240    "src/crankshaft/hydrogen-dehoist.h",
1241    "src/crankshaft/hydrogen-environment-liveness.cc",
1242    "src/crankshaft/hydrogen-environment-liveness.h",
1243    "src/crankshaft/hydrogen-escape-analysis.cc",
1244    "src/crankshaft/hydrogen-escape-analysis.h",
1245    "src/crankshaft/hydrogen-flow-engine.h",
1246    "src/crankshaft/hydrogen-gvn.cc",
1247    "src/crankshaft/hydrogen-gvn.h",
1248    "src/crankshaft/hydrogen-infer-representation.cc",
1249    "src/crankshaft/hydrogen-infer-representation.h",
1250    "src/crankshaft/hydrogen-infer-types.cc",
1251    "src/crankshaft/hydrogen-infer-types.h",
1252    "src/crankshaft/hydrogen-instructions.cc",
1253    "src/crankshaft/hydrogen-instructions.h",
1254    "src/crankshaft/hydrogen-load-elimination.cc",
1255    "src/crankshaft/hydrogen-load-elimination.h",
1256    "src/crankshaft/hydrogen-mark-unreachable.cc",
1257    "src/crankshaft/hydrogen-mark-unreachable.h",
1258    "src/crankshaft/hydrogen-osr.cc",
1259    "src/crankshaft/hydrogen-osr.h",
1260    "src/crankshaft/hydrogen-range-analysis.cc",
1261    "src/crankshaft/hydrogen-range-analysis.h",
1262    "src/crankshaft/hydrogen-redundant-phi.cc",
1263    "src/crankshaft/hydrogen-redundant-phi.h",
1264    "src/crankshaft/hydrogen-removable-simulates.cc",
1265    "src/crankshaft/hydrogen-removable-simulates.h",
1266    "src/crankshaft/hydrogen-representation-changes.cc",
1267    "src/crankshaft/hydrogen-representation-changes.h",
1268    "src/crankshaft/hydrogen-sce.cc",
1269    "src/crankshaft/hydrogen-sce.h",
1270    "src/crankshaft/hydrogen-store-elimination.cc",
1271    "src/crankshaft/hydrogen-store-elimination.h",
1272    "src/crankshaft/hydrogen-types.cc",
1273    "src/crankshaft/hydrogen-types.h",
1274    "src/crankshaft/hydrogen-uint32-analysis.cc",
1275    "src/crankshaft/hydrogen-uint32-analysis.h",
1276    "src/crankshaft/hydrogen.cc",
1277    "src/crankshaft/hydrogen.h",
1278    "src/crankshaft/lithium-allocator-inl.h",
1279    "src/crankshaft/lithium-allocator.cc",
1280    "src/crankshaft/lithium-allocator.h",
1281    "src/crankshaft/lithium-codegen.cc",
1282    "src/crankshaft/lithium-codegen.h",
1283    "src/crankshaft/lithium-inl.h",
1284    "src/crankshaft/lithium.cc",
1285    "src/crankshaft/lithium.h",
1286    "src/crankshaft/typing.cc",
1287    "src/crankshaft/typing.h",
1288    "src/crankshaft/unique.h",
1289    "src/date.cc",
1290    "src/date.h",
1291    "src/dateparser-inl.h",
1292    "src/dateparser.cc",
1293    "src/dateparser.h",
1294    "src/debug/debug-evaluate.cc",
1295    "src/debug/debug-evaluate.h",
1296    "src/debug/debug-frames.cc",
1297    "src/debug/debug-frames.h",
1298    "src/debug/debug-interface.h",
1299    "src/debug/debug-scopes.cc",
1300    "src/debug/debug-scopes.h",
1301    "src/debug/debug.cc",
1302    "src/debug/debug.h",
1303    "src/debug/liveedit.cc",
1304    "src/debug/liveedit.h",
1305    "src/deoptimize-reason.cc",
1306    "src/deoptimize-reason.h",
1307    "src/deoptimizer.cc",
1308    "src/deoptimizer.h",
1309    "src/disasm.h",
1310    "src/disassembler.cc",
1311    "src/disassembler.h",
1312    "src/diy-fp.cc",
1313    "src/diy-fp.h",
1314    "src/double.h",
1315    "src/dtoa.cc",
1316    "src/dtoa.h",
1317    "src/effects.h",
1318    "src/eh-frame.cc",
1319    "src/eh-frame.h",
1320    "src/elements-kind.cc",
1321    "src/elements-kind.h",
1322    "src/elements.cc",
1323    "src/elements.h",
1324    "src/execution.cc",
1325    "src/execution.h",
1326    "src/extensions/externalize-string-extension.cc",
1327    "src/extensions/externalize-string-extension.h",
1328    "src/extensions/free-buffer-extension.cc",
1329    "src/extensions/free-buffer-extension.h",
1330    "src/extensions/gc-extension.cc",
1331    "src/extensions/gc-extension.h",
1332    "src/extensions/ignition-statistics-extension.cc",
1333    "src/extensions/ignition-statistics-extension.h",
1334    "src/extensions/statistics-extension.cc",
1335    "src/extensions/statistics-extension.h",
1336    "src/extensions/trigger-failure-extension.cc",
1337    "src/extensions/trigger-failure-extension.h",
1338    "src/external-reference-table.cc",
1339    "src/external-reference-table.h",
1340    "src/factory.cc",
1341    "src/factory.h",
1342    "src/fast-accessor-assembler.cc",
1343    "src/fast-accessor-assembler.h",
1344    "src/fast-dtoa.cc",
1345    "src/fast-dtoa.h",
1346    "src/field-index-inl.h",
1347    "src/field-index.h",
1348    "src/field-type.cc",
1349    "src/field-type.h",
1350    "src/fixed-dtoa.cc",
1351    "src/fixed-dtoa.h",
1352    "src/flag-definitions.h",
1353    "src/flags.cc",
1354    "src/flags.h",
1355    "src/frames-inl.h",
1356    "src/frames.cc",
1357    "src/frames.h",
1358    "src/full-codegen/full-codegen.cc",
1359    "src/full-codegen/full-codegen.h",
1360    "src/futex-emulation.cc",
1361    "src/futex-emulation.h",
1362    "src/gdb-jit.cc",
1363    "src/gdb-jit.h",
1364    "src/global-handles.cc",
1365    "src/global-handles.h",
1366    "src/globals.h",
1367    "src/handles-inl.h",
1368    "src/handles.cc",
1369    "src/handles.h",
1370    "src/heap-symbols.h",
1371    "src/heap/array-buffer-tracker-inl.h",
1372    "src/heap/array-buffer-tracker.cc",
1373    "src/heap/array-buffer-tracker.h",
1374    "src/heap/code-stats.cc",
1375    "src/heap/code-stats.h",
1376    "src/heap/gc-idle-time-handler.cc",
1377    "src/heap/gc-idle-time-handler.h",
1378    "src/heap/gc-tracer.cc",
1379    "src/heap/gc-tracer.h",
1380    "src/heap/heap-inl.h",
1381    "src/heap/heap.cc",
1382    "src/heap/heap.h",
1383    "src/heap/incremental-marking-inl.h",
1384    "src/heap/incremental-marking-job.cc",
1385    "src/heap/incremental-marking-job.h",
1386    "src/heap/incremental-marking.cc",
1387    "src/heap/incremental-marking.h",
1388    "src/heap/mark-compact-inl.h",
1389    "src/heap/mark-compact.cc",
1390    "src/heap/mark-compact.h",
1391    "src/heap/marking.h",
1392    "src/heap/memory-reducer.cc",
1393    "src/heap/memory-reducer.h",
1394    "src/heap/object-stats.cc",
1395    "src/heap/object-stats.h",
1396    "src/heap/objects-visiting-inl.h",
1397    "src/heap/objects-visiting.cc",
1398    "src/heap/objects-visiting.h",
1399    "src/heap/page-parallel-job.h",
1400    "src/heap/remembered-set.h",
1401    "src/heap/scavenge-job.cc",
1402    "src/heap/scavenge-job.h",
1403    "src/heap/scavenger-inl.h",
1404    "src/heap/scavenger.cc",
1405    "src/heap/scavenger.h",
1406    "src/heap/slot-set.h",
1407    "src/heap/spaces-inl.h",
1408    "src/heap/spaces.cc",
1409    "src/heap/spaces.h",
1410    "src/heap/store-buffer.cc",
1411    "src/heap/store-buffer.h",
1412    "src/i18n.cc",
1413    "src/i18n.h",
1414    "src/ic/access-compiler-data.h",
1415    "src/ic/access-compiler.cc",
1416    "src/ic/access-compiler.h",
1417    "src/ic/call-optimization.cc",
1418    "src/ic/call-optimization.h",
1419    "src/ic/handler-compiler.cc",
1420    "src/ic/handler-compiler.h",
1421    "src/ic/handler-configuration-inl.h",
1422    "src/ic/handler-configuration.h",
1423    "src/ic/ic-compiler.cc",
1424    "src/ic/ic-compiler.h",
1425    "src/ic/ic-inl.h",
1426    "src/ic/ic-state.cc",
1427    "src/ic/ic-state.h",
1428    "src/ic/ic.cc",
1429    "src/ic/ic.h",
1430    "src/ic/keyed-store-generic.cc",
1431    "src/ic/keyed-store-generic.h",
1432    "src/ic/stub-cache.cc",
1433    "src/ic/stub-cache.h",
1434    "src/icu_util.cc",
1435    "src/icu_util.h",
1436    "src/identity-map.cc",
1437    "src/identity-map.h",
1438    "src/interface-descriptors.cc",
1439    "src/interface-descriptors.h",
1440    "src/interpreter/bytecode-array-builder.cc",
1441    "src/interpreter/bytecode-array-builder.h",
1442    "src/interpreter/bytecode-array-iterator.cc",
1443    "src/interpreter/bytecode-array-iterator.h",
1444    "src/interpreter/bytecode-array-writer.cc",
1445    "src/interpreter/bytecode-array-writer.h",
1446    "src/interpreter/bytecode-dead-code-optimizer.cc",
1447    "src/interpreter/bytecode-dead-code-optimizer.h",
1448    "src/interpreter/bytecode-decoder.cc",
1449    "src/interpreter/bytecode-decoder.h",
1450    "src/interpreter/bytecode-flags.cc",
1451    "src/interpreter/bytecode-flags.h",
1452    "src/interpreter/bytecode-generator.cc",
1453    "src/interpreter/bytecode-generator.h",
1454    "src/interpreter/bytecode-label.cc",
1455    "src/interpreter/bytecode-label.h",
1456    "src/interpreter/bytecode-operands.cc",
1457    "src/interpreter/bytecode-operands.h",
1458    "src/interpreter/bytecode-peephole-optimizer.cc",
1459    "src/interpreter/bytecode-peephole-optimizer.h",
1460    "src/interpreter/bytecode-peephole-table.h",
1461    "src/interpreter/bytecode-pipeline.cc",
1462    "src/interpreter/bytecode-pipeline.h",
1463    "src/interpreter/bytecode-register-allocator.h",
1464    "src/interpreter/bytecode-register-optimizer.cc",
1465    "src/interpreter/bytecode-register-optimizer.h",
1466    "src/interpreter/bytecode-register.cc",
1467    "src/interpreter/bytecode-register.h",
1468    "src/interpreter/bytecode-traits.h",
1469    "src/interpreter/bytecodes.cc",
1470    "src/interpreter/bytecodes.h",
1471    "src/interpreter/constant-array-builder.cc",
1472    "src/interpreter/constant-array-builder.h",
1473    "src/interpreter/control-flow-builders.cc",
1474    "src/interpreter/control-flow-builders.h",
1475    "src/interpreter/handler-table-builder.cc",
1476    "src/interpreter/handler-table-builder.h",
1477    "src/interpreter/interpreter-assembler.cc",
1478    "src/interpreter/interpreter-assembler.h",
1479    "src/interpreter/interpreter-intrinsics.cc",
1480    "src/interpreter/interpreter-intrinsics.h",
1481    "src/interpreter/interpreter.cc",
1482    "src/interpreter/interpreter.h",
1483    "src/isolate-inl.h",
1484    "src/isolate.cc",
1485    "src/isolate.h",
1486    "src/json-parser.cc",
1487    "src/json-parser.h",
1488    "src/json-stringifier.cc",
1489    "src/json-stringifier.h",
1490    "src/keys.cc",
1491    "src/keys.h",
1492    "src/layout-descriptor-inl.h",
1493    "src/layout-descriptor.cc",
1494    "src/layout-descriptor.h",
1495    "src/list-inl.h",
1496    "src/list.h",
1497    "src/locked-queue-inl.h",
1498    "src/locked-queue.h",
1499    "src/log-inl.h",
1500    "src/log-utils.cc",
1501    "src/log-utils.h",
1502    "src/log.cc",
1503    "src/log.h",
1504    "src/lookup-cache-inl.h",
1505    "src/lookup-cache.cc",
1506    "src/lookup-cache.h",
1507    "src/lookup.cc",
1508    "src/lookup.h",
1509    "src/machine-type.cc",
1510    "src/machine-type.h",
1511    "src/macro-assembler.h",
1512    "src/messages.cc",
1513    "src/messages.h",
1514    "src/msan.h",
1515    "src/objects-body-descriptors-inl.h",
1516    "src/objects-body-descriptors.h",
1517    "src/objects-debug.cc",
1518    "src/objects-inl.h",
1519    "src/objects-printer.cc",
1520    "src/objects.cc",
1521    "src/objects.h",
1522    "src/ostreams.cc",
1523    "src/ostreams.h",
1524    "src/parsing/duplicate-finder.cc",
1525    "src/parsing/duplicate-finder.h",
1526    "src/parsing/expression-classifier.h",
1527    "src/parsing/func-name-inferrer.cc",
1528    "src/parsing/func-name-inferrer.h",
1529    "src/parsing/parameter-initializer-rewriter.cc",
1530    "src/parsing/parameter-initializer-rewriter.h",
1531    "src/parsing/parse-info.cc",
1532    "src/parsing/parse-info.h",
1533    "src/parsing/parser-base.h",
1534    "src/parsing/parser.cc",
1535    "src/parsing/parser.h",
1536    "src/parsing/pattern-rewriter.cc",
1537    "src/parsing/preparse-data-format.h",
1538    "src/parsing/preparse-data.cc",
1539    "src/parsing/preparse-data.h",
1540    "src/parsing/preparser.cc",
1541    "src/parsing/preparser.h",
1542    "src/parsing/rewriter.cc",
1543    "src/parsing/rewriter.h",
1544    "src/parsing/scanner-character-streams.cc",
1545    "src/parsing/scanner-character-streams.h",
1546    "src/parsing/scanner.cc",
1547    "src/parsing/scanner.h",
1548    "src/parsing/token.cc",
1549    "src/parsing/token.h",
1550    "src/pending-compilation-error-handler.cc",
1551    "src/pending-compilation-error-handler.h",
1552    "src/perf-jit.cc",
1553    "src/perf-jit.h",
1554    "src/profiler/allocation-tracker.cc",
1555    "src/profiler/allocation-tracker.h",
1556    "src/profiler/circular-queue-inl.h",
1557    "src/profiler/circular-queue.h",
1558    "src/profiler/cpu-profiler-inl.h",
1559    "src/profiler/cpu-profiler.cc",
1560    "src/profiler/cpu-profiler.h",
1561    "src/profiler/heap-profiler.cc",
1562    "src/profiler/heap-profiler.h",
1563    "src/profiler/heap-snapshot-generator-inl.h",
1564    "src/profiler/heap-snapshot-generator.cc",
1565    "src/profiler/heap-snapshot-generator.h",
1566    "src/profiler/profile-generator-inl.h",
1567    "src/profiler/profile-generator.cc",
1568    "src/profiler/profile-generator.h",
1569    "src/profiler/profiler-listener.cc",
1570    "src/profiler/profiler-listener.h",
1571    "src/profiler/sampling-heap-profiler.cc",
1572    "src/profiler/sampling-heap-profiler.h",
1573    "src/profiler/strings-storage.cc",
1574    "src/profiler/strings-storage.h",
1575    "src/profiler/tick-sample.cc",
1576    "src/profiler/tick-sample.h",
1577    "src/profiler/tracing-cpu-profiler.cc",
1578    "src/profiler/tracing-cpu-profiler.h",
1579    "src/profiler/unbound-queue-inl.h",
1580    "src/profiler/unbound-queue.h",
1581    "src/promise-utils.cc",
1582    "src/promise-utils.h",
1583    "src/property-descriptor.cc",
1584    "src/property-descriptor.h",
1585    "src/property-details.h",
1586    "src/property.cc",
1587    "src/property.h",
1588    "src/prototype.h",
1589    "src/regexp/bytecodes-irregexp.h",
1590    "src/regexp/interpreter-irregexp.cc",
1591    "src/regexp/interpreter-irregexp.h",
1592    "src/regexp/jsregexp-inl.h",
1593    "src/regexp/jsregexp.cc",
1594    "src/regexp/jsregexp.h",
1595    "src/regexp/regexp-ast.cc",
1596    "src/regexp/regexp-ast.h",
1597    "src/regexp/regexp-macro-assembler-irregexp-inl.h",
1598    "src/regexp/regexp-macro-assembler-irregexp.cc",
1599    "src/regexp/regexp-macro-assembler-irregexp.h",
1600    "src/regexp/regexp-macro-assembler-tracer.cc",
1601    "src/regexp/regexp-macro-assembler-tracer.h",
1602    "src/regexp/regexp-macro-assembler.cc",
1603    "src/regexp/regexp-macro-assembler.h",
1604    "src/regexp/regexp-parser.cc",
1605    "src/regexp/regexp-parser.h",
1606    "src/regexp/regexp-stack.cc",
1607    "src/regexp/regexp-stack.h",
1608    "src/regexp/regexp-utils.cc",
1609    "src/regexp/regexp-utils.h",
1610    "src/register-configuration.cc",
1611    "src/register-configuration.h",
1612    "src/runtime-profiler.cc",
1613    "src/runtime-profiler.h",
1614    "src/runtime/runtime-array.cc",
1615    "src/runtime/runtime-atomics.cc",
1616    "src/runtime/runtime-classes.cc",
1617    "src/runtime/runtime-collections.cc",
1618    "src/runtime/runtime-compiler.cc",
1619    "src/runtime/runtime-date.cc",
1620    "src/runtime/runtime-debug.cc",
1621    "src/runtime/runtime-error.cc",
1622    "src/runtime/runtime-forin.cc",
1623    "src/runtime/runtime-function.cc",
1624    "src/runtime/runtime-futex.cc",
1625    "src/runtime/runtime-generator.cc",
1626    "src/runtime/runtime-i18n.cc",
1627    "src/runtime/runtime-internal.cc",
1628    "src/runtime/runtime-interpreter.cc",
1629    "src/runtime/runtime-literals.cc",
1630    "src/runtime/runtime-liveedit.cc",
1631    "src/runtime/runtime-maths.cc",
1632    "src/runtime/runtime-module.cc",
1633    "src/runtime/runtime-numbers.cc",
1634    "src/runtime/runtime-object.cc",
1635    "src/runtime/runtime-operators.cc",
1636    "src/runtime/runtime-promise.cc",
1637    "src/runtime/runtime-proxy.cc",
1638    "src/runtime/runtime-regexp.cc",
1639    "src/runtime/runtime-scopes.cc",
1640    "src/runtime/runtime-simd.cc",
1641    "src/runtime/runtime-strings.cc",
1642    "src/runtime/runtime-symbol.cc",
1643    "src/runtime/runtime-test.cc",
1644    "src/runtime/runtime-typedarray.cc",
1645    "src/runtime/runtime-utils.h",
1646    "src/runtime/runtime-wasm.cc",
1647    "src/runtime/runtime.cc",
1648    "src/runtime/runtime.h",
1649    "src/safepoint-table.cc",
1650    "src/safepoint-table.h",
1651    "src/signature.h",
1652    "src/simulator.h",
1653    "src/small-pointer-list.h",
1654    "src/snapshot/code-serializer.cc",
1655    "src/snapshot/code-serializer.h",
1656    "src/snapshot/deserializer.cc",
1657    "src/snapshot/deserializer.h",
1658    "src/snapshot/natives-common.cc",
1659    "src/snapshot/natives.h",
1660    "src/snapshot/partial-serializer.cc",
1661    "src/snapshot/partial-serializer.h",
1662    "src/snapshot/serializer-common.cc",
1663    "src/snapshot/serializer-common.h",
1664    "src/snapshot/serializer.cc",
1665    "src/snapshot/serializer.h",
1666    "src/snapshot/snapshot-common.cc",
1667    "src/snapshot/snapshot-source-sink.cc",
1668    "src/snapshot/snapshot-source-sink.h",
1669    "src/snapshot/snapshot.h",
1670    "src/snapshot/startup-serializer.cc",
1671    "src/snapshot/startup-serializer.h",
1672    "src/source-position-table.cc",
1673    "src/source-position-table.h",
1674    "src/source-position.cc",
1675    "src/source-position.h",
1676    "src/splay-tree-inl.h",
1677    "src/splay-tree.h",
1678    "src/startup-data-util.cc",
1679    "src/startup-data-util.h",
1680    "src/string-builder.cc",
1681    "src/string-builder.h",
1682    "src/string-search.h",
1683    "src/string-stream.cc",
1684    "src/string-stream.h",
1685    "src/strtod.cc",
1686    "src/strtod.h",
1687    "src/tracing/trace-event.cc",
1688    "src/tracing/trace-event.h",
1689    "src/tracing/traced-value.cc",
1690    "src/tracing/traced-value.h",
1691    "src/tracing/tracing-category-observer.cc",
1692    "src/tracing/tracing-category-observer.h",
1693    "src/transitions-inl.h",
1694    "src/transitions.cc",
1695    "src/transitions.h",
1696    "src/type-feedback-vector-inl.h",
1697    "src/type-feedback-vector.cc",
1698    "src/type-feedback-vector.h",
1699    "src/type-hints.cc",
1700    "src/type-hints.h",
1701    "src/type-info.cc",
1702    "src/type-info.h",
1703    "src/unicode-cache-inl.h",
1704    "src/unicode-cache.h",
1705    "src/unicode-decoder.cc",
1706    "src/unicode-decoder.h",
1707    "src/unicode-inl.h",
1708    "src/unicode.cc",
1709    "src/unicode.h",
1710    "src/uri.cc",
1711    "src/uri.h",
1712    "src/utils-inl.h",
1713    "src/utils.cc",
1714    "src/utils.h",
1715    "src/v8.cc",
1716    "src/v8.h",
1717    "src/v8memory.h",
1718    "src/v8threads.cc",
1719    "src/v8threads.h",
1720    "src/value-serializer.cc",
1721    "src/value-serializer.h",
1722    "src/vector.h",
1723    "src/version.cc",
1724    "src/version.h",
1725    "src/vm-state-inl.h",
1726    "src/vm-state.h",
1727    "src/wasm/ast-decoder.cc",
1728    "src/wasm/ast-decoder.h",
1729    "src/wasm/decoder.h",
1730    "src/wasm/leb-helper.h",
1731    "src/wasm/managed.h",
1732    "src/wasm/module-decoder.cc",
1733    "src/wasm/module-decoder.h",
1734    "src/wasm/signature-map.cc",
1735    "src/wasm/signature-map.h",
1736    "src/wasm/wasm-debug.cc",
1737    "src/wasm/wasm-external-refs.cc",
1738    "src/wasm/wasm-external-refs.h",
1739    "src/wasm/wasm-interpreter.cc",
1740    "src/wasm/wasm-interpreter.h",
1741    "src/wasm/wasm-js.cc",
1742    "src/wasm/wasm-js.h",
1743    "src/wasm/wasm-macro-gen.h",
1744    "src/wasm/wasm-module-builder.cc",
1745    "src/wasm/wasm-module-builder.h",
1746    "src/wasm/wasm-module.cc",
1747    "src/wasm/wasm-module.h",
1748    "src/wasm/wasm-objects.cc",
1749    "src/wasm/wasm-objects.h",
1750    "src/wasm/wasm-opcodes.cc",
1751    "src/wasm/wasm-opcodes.h",
1752    "src/wasm/wasm-result.cc",
1753    "src/wasm/wasm-result.h",
1754    "src/zone/accounting-allocator.cc",
1755    "src/zone/accounting-allocator.h",
1756    "src/zone/zone-allocator.h",
1757    "src/zone/zone-allocator.h",
1758    "src/zone/zone-chunk-list.h",
1759    "src/zone/zone-containers.h",
1760    "src/zone/zone-segment.cc",
1761    "src/zone/zone-segment.h",
1762    "src/zone/zone.cc",
1763    "src/zone/zone.h",
1764  ]
1765
1766  if (v8_current_cpu == "x86") {
1767    sources += [  ### gcmole(arch:ia32) ###
1768      "src/builtins/ia32/builtins-ia32.cc",
1769      "src/compiler/ia32/code-generator-ia32.cc",
1770      "src/compiler/ia32/instruction-codes-ia32.h",
1771      "src/compiler/ia32/instruction-scheduler-ia32.cc",
1772      "src/compiler/ia32/instruction-selector-ia32.cc",
1773      "src/crankshaft/ia32/lithium-codegen-ia32.cc",
1774      "src/crankshaft/ia32/lithium-codegen-ia32.h",
1775      "src/crankshaft/ia32/lithium-gap-resolver-ia32.cc",
1776      "src/crankshaft/ia32/lithium-gap-resolver-ia32.h",
1777      "src/crankshaft/ia32/lithium-ia32.cc",
1778      "src/crankshaft/ia32/lithium-ia32.h",
1779      "src/debug/ia32/debug-ia32.cc",
1780      "src/full-codegen/ia32/full-codegen-ia32.cc",
1781      "src/ia32/assembler-ia32-inl.h",
1782      "src/ia32/assembler-ia32.cc",
1783      "src/ia32/assembler-ia32.h",
1784      "src/ia32/code-stubs-ia32.cc",
1785      "src/ia32/code-stubs-ia32.h",
1786      "src/ia32/codegen-ia32.cc",
1787      "src/ia32/codegen-ia32.h",
1788      "src/ia32/cpu-ia32.cc",
1789      "src/ia32/deoptimizer-ia32.cc",
1790      "src/ia32/disasm-ia32.cc",
1791      "src/ia32/frames-ia32.cc",
1792      "src/ia32/frames-ia32.h",
1793      "src/ia32/interface-descriptors-ia32.cc",
1794      "src/ia32/macro-assembler-ia32.cc",
1795      "src/ia32/macro-assembler-ia32.h",
1796      "src/ia32/simulator-ia32.cc",
1797      "src/ia32/simulator-ia32.h",
1798      "src/ic/ia32/access-compiler-ia32.cc",
1799      "src/ic/ia32/handler-compiler-ia32.cc",
1800      "src/ic/ia32/ic-compiler-ia32.cc",
1801      "src/ic/ia32/ic-ia32.cc",
1802      "src/ic/ia32/stub-cache-ia32.cc",
1803      "src/regexp/ia32/regexp-macro-assembler-ia32.cc",
1804      "src/regexp/ia32/regexp-macro-assembler-ia32.h",
1805    ]
1806  } else if (v8_current_cpu == "x64") {
1807    sources += [  ### gcmole(arch:x64) ###
1808      "src/builtins/x64/builtins-x64.cc",
1809      "src/compiler/x64/code-generator-x64.cc",
1810      "src/compiler/x64/instruction-codes-x64.h",
1811      "src/compiler/x64/instruction-scheduler-x64.cc",
1812      "src/compiler/x64/instruction-selector-x64.cc",
1813      "src/compiler/x64/unwinding-info-writer-x64.cc",
1814      "src/compiler/x64/unwinding-info-writer-x64.h",
1815      "src/crankshaft/x64/lithium-codegen-x64.cc",
1816      "src/crankshaft/x64/lithium-codegen-x64.h",
1817      "src/crankshaft/x64/lithium-gap-resolver-x64.cc",
1818      "src/crankshaft/x64/lithium-gap-resolver-x64.h",
1819      "src/crankshaft/x64/lithium-x64.cc",
1820      "src/crankshaft/x64/lithium-x64.h",
1821      "src/debug/x64/debug-x64.cc",
1822      "src/full-codegen/x64/full-codegen-x64.cc",
1823      "src/ic/x64/access-compiler-x64.cc",
1824      "src/ic/x64/handler-compiler-x64.cc",
1825      "src/ic/x64/ic-compiler-x64.cc",
1826      "src/ic/x64/ic-x64.cc",
1827      "src/ic/x64/stub-cache-x64.cc",
1828      "src/regexp/x64/regexp-macro-assembler-x64.cc",
1829      "src/regexp/x64/regexp-macro-assembler-x64.h",
1830      "src/third_party/valgrind/valgrind.h",
1831      "src/x64/assembler-x64-inl.h",
1832      "src/x64/assembler-x64.cc",
1833      "src/x64/assembler-x64.h",
1834      "src/x64/code-stubs-x64.cc",
1835      "src/x64/code-stubs-x64.h",
1836      "src/x64/codegen-x64.cc",
1837      "src/x64/codegen-x64.h",
1838      "src/x64/cpu-x64.cc",
1839      "src/x64/deoptimizer-x64.cc",
1840      "src/x64/disasm-x64.cc",
1841      "src/x64/eh-frame-x64.cc",
1842      "src/x64/frames-x64.cc",
1843      "src/x64/frames-x64.h",
1844      "src/x64/interface-descriptors-x64.cc",
1845      "src/x64/macro-assembler-x64.cc",
1846      "src/x64/macro-assembler-x64.h",
1847      "src/x64/simulator-x64.cc",
1848      "src/x64/simulator-x64.h",
1849      "src/x64/sse-instr.h",
1850    ]
1851  } else if (v8_current_cpu == "arm") {
1852    sources += [  ### gcmole(arch:arm) ###
1853      "src/arm/assembler-arm-inl.h",
1854      "src/arm/assembler-arm.cc",
1855      "src/arm/assembler-arm.h",
1856      "src/arm/code-stubs-arm.cc",
1857      "src/arm/code-stubs-arm.h",
1858      "src/arm/codegen-arm.cc",
1859      "src/arm/codegen-arm.h",
1860      "src/arm/constants-arm.cc",
1861      "src/arm/constants-arm.h",
1862      "src/arm/cpu-arm.cc",
1863      "src/arm/deoptimizer-arm.cc",
1864      "src/arm/disasm-arm.cc",
1865      "src/arm/eh-frame-arm.cc",
1866      "src/arm/frames-arm.cc",
1867      "src/arm/frames-arm.h",
1868      "src/arm/interface-descriptors-arm.cc",
1869      "src/arm/interface-descriptors-arm.h",
1870      "src/arm/macro-assembler-arm.cc",
1871      "src/arm/macro-assembler-arm.h",
1872      "src/arm/simulator-arm.cc",
1873      "src/arm/simulator-arm.h",
1874      "src/builtins/arm/builtins-arm.cc",
1875      "src/compiler/arm/code-generator-arm.cc",
1876      "src/compiler/arm/instruction-codes-arm.h",
1877      "src/compiler/arm/instruction-scheduler-arm.cc",
1878      "src/compiler/arm/instruction-selector-arm.cc",
1879      "src/compiler/arm/unwinding-info-writer-arm.cc",
1880      "src/compiler/arm/unwinding-info-writer-arm.h",
1881      "src/crankshaft/arm/lithium-arm.cc",
1882      "src/crankshaft/arm/lithium-arm.h",
1883      "src/crankshaft/arm/lithium-codegen-arm.cc",
1884      "src/crankshaft/arm/lithium-codegen-arm.h",
1885      "src/crankshaft/arm/lithium-gap-resolver-arm.cc",
1886      "src/crankshaft/arm/lithium-gap-resolver-arm.h",
1887      "src/debug/arm/debug-arm.cc",
1888      "src/full-codegen/arm/full-codegen-arm.cc",
1889      "src/ic/arm/access-compiler-arm.cc",
1890      "src/ic/arm/handler-compiler-arm.cc",
1891      "src/ic/arm/ic-arm.cc",
1892      "src/ic/arm/ic-compiler-arm.cc",
1893      "src/ic/arm/stub-cache-arm.cc",
1894      "src/regexp/arm/regexp-macro-assembler-arm.cc",
1895      "src/regexp/arm/regexp-macro-assembler-arm.h",
1896    ]
1897  } else if (v8_current_cpu == "arm64") {
1898    sources += [  ### gcmole(arch:arm64) ###
1899      "src/arm64/assembler-arm64-inl.h",
1900      "src/arm64/assembler-arm64.cc",
1901      "src/arm64/assembler-arm64.h",
1902      "src/arm64/code-stubs-arm64.cc",
1903      "src/arm64/code-stubs-arm64.h",
1904      "src/arm64/codegen-arm64.cc",
1905      "src/arm64/codegen-arm64.h",
1906      "src/arm64/constants-arm64.h",
1907      "src/arm64/cpu-arm64.cc",
1908      "src/arm64/decoder-arm64-inl.h",
1909      "src/arm64/decoder-arm64.cc",
1910      "src/arm64/decoder-arm64.h",
1911      "src/arm64/deoptimizer-arm64.cc",
1912      "src/arm64/disasm-arm64.cc",
1913      "src/arm64/disasm-arm64.h",
1914      "src/arm64/eh-frame-arm64.cc",
1915      "src/arm64/frames-arm64.cc",
1916      "src/arm64/frames-arm64.h",
1917      "src/arm64/instructions-arm64.cc",
1918      "src/arm64/instructions-arm64.h",
1919      "src/arm64/instrument-arm64.cc",
1920      "src/arm64/instrument-arm64.h",
1921      "src/arm64/interface-descriptors-arm64.cc",
1922      "src/arm64/interface-descriptors-arm64.h",
1923      "src/arm64/macro-assembler-arm64-inl.h",
1924      "src/arm64/macro-assembler-arm64.cc",
1925      "src/arm64/macro-assembler-arm64.h",
1926      "src/arm64/simulator-arm64.cc",
1927      "src/arm64/simulator-arm64.h",
1928      "src/arm64/utils-arm64.cc",
1929      "src/arm64/utils-arm64.h",
1930      "src/builtins/arm64/builtins-arm64.cc",
1931      "src/compiler/arm64/code-generator-arm64.cc",
1932      "src/compiler/arm64/instruction-codes-arm64.h",
1933      "src/compiler/arm64/instruction-scheduler-arm64.cc",
1934      "src/compiler/arm64/instruction-selector-arm64.cc",
1935      "src/compiler/arm64/unwinding-info-writer-arm64.cc",
1936      "src/compiler/arm64/unwinding-info-writer-arm64.h",
1937      "src/crankshaft/arm64/delayed-masm-arm64-inl.h",
1938      "src/crankshaft/arm64/delayed-masm-arm64.cc",
1939      "src/crankshaft/arm64/delayed-masm-arm64.h",
1940      "src/crankshaft/arm64/lithium-arm64.cc",
1941      "src/crankshaft/arm64/lithium-arm64.h",
1942      "src/crankshaft/arm64/lithium-codegen-arm64.cc",
1943      "src/crankshaft/arm64/lithium-codegen-arm64.h",
1944      "src/crankshaft/arm64/lithium-gap-resolver-arm64.cc",
1945      "src/crankshaft/arm64/lithium-gap-resolver-arm64.h",
1946      "src/debug/arm64/debug-arm64.cc",
1947      "src/full-codegen/arm64/full-codegen-arm64.cc",
1948      "src/ic/arm64/access-compiler-arm64.cc",
1949      "src/ic/arm64/handler-compiler-arm64.cc",
1950      "src/ic/arm64/ic-arm64.cc",
1951      "src/ic/arm64/ic-compiler-arm64.cc",
1952      "src/ic/arm64/stub-cache-arm64.cc",
1953      "src/regexp/arm64/regexp-macro-assembler-arm64.cc",
1954      "src/regexp/arm64/regexp-macro-assembler-arm64.h",
1955    ]
1956  } else if (v8_current_cpu == "mips" || v8_current_cpu == "mipsel") {
1957    sources += [  ### gcmole(arch:mipsel) ###
1958      "src/builtins/mips/builtins-mips.cc",
1959      "src/compiler/mips/code-generator-mips.cc",
1960      "src/compiler/mips/instruction-codes-mips.h",
1961      "src/compiler/mips/instruction-scheduler-mips.cc",
1962      "src/compiler/mips/instruction-selector-mips.cc",
1963      "src/crankshaft/mips/lithium-codegen-mips.cc",
1964      "src/crankshaft/mips/lithium-codegen-mips.h",
1965      "src/crankshaft/mips/lithium-gap-resolver-mips.cc",
1966      "src/crankshaft/mips/lithium-gap-resolver-mips.h",
1967      "src/crankshaft/mips/lithium-mips.cc",
1968      "src/crankshaft/mips/lithium-mips.h",
1969      "src/debug/mips/debug-mips.cc",
1970      "src/full-codegen/mips/full-codegen-mips.cc",
1971      "src/ic/mips/access-compiler-mips.cc",
1972      "src/ic/mips/handler-compiler-mips.cc",
1973      "src/ic/mips/ic-compiler-mips.cc",
1974      "src/ic/mips/ic-mips.cc",
1975      "src/ic/mips/stub-cache-mips.cc",
1976      "src/mips/assembler-mips-inl.h",
1977      "src/mips/assembler-mips.cc",
1978      "src/mips/assembler-mips.h",
1979      "src/mips/code-stubs-mips.cc",
1980      "src/mips/code-stubs-mips.h",
1981      "src/mips/codegen-mips.cc",
1982      "src/mips/codegen-mips.h",
1983      "src/mips/constants-mips.cc",
1984      "src/mips/constants-mips.h",
1985      "src/mips/cpu-mips.cc",
1986      "src/mips/deoptimizer-mips.cc",
1987      "src/mips/disasm-mips.cc",
1988      "src/mips/frames-mips.cc",
1989      "src/mips/frames-mips.h",
1990      "src/mips/interface-descriptors-mips.cc",
1991      "src/mips/macro-assembler-mips.cc",
1992      "src/mips/macro-assembler-mips.h",
1993      "src/mips/simulator-mips.cc",
1994      "src/mips/simulator-mips.h",
1995      "src/regexp/mips/regexp-macro-assembler-mips.cc",
1996      "src/regexp/mips/regexp-macro-assembler-mips.h",
1997    ]
1998  } else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") {
1999    sources += [  ### gcmole(arch:mips64el) ###
2000      "src/builtins/mips64/builtins-mips64.cc",
2001      "src/compiler/mips64/code-generator-mips64.cc",
2002      "src/compiler/mips64/instruction-codes-mips64.h",
2003      "src/compiler/mips64/instruction-scheduler-mips64.cc",
2004      "src/compiler/mips64/instruction-selector-mips64.cc",
2005      "src/crankshaft/mips64/lithium-codegen-mips64.cc",
2006      "src/crankshaft/mips64/lithium-codegen-mips64.h",
2007      "src/crankshaft/mips64/lithium-gap-resolver-mips64.cc",
2008      "src/crankshaft/mips64/lithium-gap-resolver-mips64.h",
2009      "src/crankshaft/mips64/lithium-mips64.cc",
2010      "src/crankshaft/mips64/lithium-mips64.h",
2011      "src/debug/mips64/debug-mips64.cc",
2012      "src/full-codegen/mips64/full-codegen-mips64.cc",
2013      "src/ic/mips64/access-compiler-mips64.cc",
2014      "src/ic/mips64/handler-compiler-mips64.cc",
2015      "src/ic/mips64/ic-compiler-mips64.cc",
2016      "src/ic/mips64/ic-mips64.cc",
2017      "src/ic/mips64/stub-cache-mips64.cc",
2018      "src/mips64/assembler-mips64-inl.h",
2019      "src/mips64/assembler-mips64.cc",
2020      "src/mips64/assembler-mips64.h",
2021      "src/mips64/code-stubs-mips64.cc",
2022      "src/mips64/code-stubs-mips64.h",
2023      "src/mips64/codegen-mips64.cc",
2024      "src/mips64/codegen-mips64.h",
2025      "src/mips64/constants-mips64.cc",
2026      "src/mips64/constants-mips64.h",
2027      "src/mips64/cpu-mips64.cc",
2028      "src/mips64/deoptimizer-mips64.cc",
2029      "src/mips64/disasm-mips64.cc",
2030      "src/mips64/frames-mips64.cc",
2031      "src/mips64/frames-mips64.h",
2032      "src/mips64/interface-descriptors-mips64.cc",
2033      "src/mips64/macro-assembler-mips64.cc",
2034      "src/mips64/macro-assembler-mips64.h",
2035      "src/mips64/simulator-mips64.cc",
2036      "src/mips64/simulator-mips64.h",
2037      "src/regexp/mips64/regexp-macro-assembler-mips64.cc",
2038      "src/regexp/mips64/regexp-macro-assembler-mips64.h",
2039    ]
2040  } else if (v8_current_cpu == "ppc" || v8_current_cpu == "ppc64") {
2041    sources += [  ### gcmole(arch:ppc) ###
2042      "src/builtins/ppc/builtins-ppc.cc",
2043      "src/compiler/ppc/code-generator-ppc.cc",
2044      "src/compiler/ppc/instruction-codes-ppc.h",
2045      "src/compiler/ppc/instruction-scheduler-ppc.cc",
2046      "src/compiler/ppc/instruction-selector-ppc.cc",
2047      "src/crankshaft/ppc/lithium-codegen-ppc.cc",
2048      "src/crankshaft/ppc/lithium-codegen-ppc.h",
2049      "src/crankshaft/ppc/lithium-gap-resolver-ppc.cc",
2050      "src/crankshaft/ppc/lithium-gap-resolver-ppc.h",
2051      "src/crankshaft/ppc/lithium-ppc.cc",
2052      "src/crankshaft/ppc/lithium-ppc.h",
2053      "src/debug/ppc/debug-ppc.cc",
2054      "src/full-codegen/ppc/full-codegen-ppc.cc",
2055      "src/ic/ppc/access-compiler-ppc.cc",
2056      "src/ic/ppc/handler-compiler-ppc.cc",
2057      "src/ic/ppc/ic-compiler-ppc.cc",
2058      "src/ic/ppc/ic-ppc.cc",
2059      "src/ic/ppc/stub-cache-ppc.cc",
2060      "src/ppc/assembler-ppc-inl.h",
2061      "src/ppc/assembler-ppc.cc",
2062      "src/ppc/assembler-ppc.h",
2063      "src/ppc/code-stubs-ppc.cc",
2064      "src/ppc/code-stubs-ppc.h",
2065      "src/ppc/codegen-ppc.cc",
2066      "src/ppc/codegen-ppc.h",
2067      "src/ppc/constants-ppc.cc",
2068      "src/ppc/constants-ppc.h",
2069      "src/ppc/cpu-ppc.cc",
2070      "src/ppc/deoptimizer-ppc.cc",
2071      "src/ppc/disasm-ppc.cc",
2072      "src/ppc/frames-ppc.cc",
2073      "src/ppc/frames-ppc.h",
2074      "src/ppc/interface-descriptors-ppc.cc",
2075      "src/ppc/macro-assembler-ppc.cc",
2076      "src/ppc/macro-assembler-ppc.h",
2077      "src/ppc/simulator-ppc.cc",
2078      "src/ppc/simulator-ppc.h",
2079      "src/regexp/ppc/regexp-macro-assembler-ppc.cc",
2080      "src/regexp/ppc/regexp-macro-assembler-ppc.h",
2081    ]
2082  } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") {
2083    sources += [  ### gcmole(arch:s390) ###
2084      "src/builtins/s390/builtins-s390.cc",
2085      "src/compiler/s390/code-generator-s390.cc",
2086      "src/compiler/s390/instruction-codes-s390.h",
2087      "src/compiler/s390/instruction-scheduler-s390.cc",
2088      "src/compiler/s390/instruction-selector-s390.cc",
2089      "src/crankshaft/s390/lithium-codegen-s390.cc",
2090      "src/crankshaft/s390/lithium-codegen-s390.h",
2091      "src/crankshaft/s390/lithium-gap-resolver-s390.cc",
2092      "src/crankshaft/s390/lithium-gap-resolver-s390.h",
2093      "src/crankshaft/s390/lithium-s390.cc",
2094      "src/crankshaft/s390/lithium-s390.h",
2095      "src/debug/s390/debug-s390.cc",
2096      "src/full-codegen/s390/full-codegen-s390.cc",
2097      "src/ic/s390/access-compiler-s390.cc",
2098      "src/ic/s390/handler-compiler-s390.cc",
2099      "src/ic/s390/ic-compiler-s390.cc",
2100      "src/ic/s390/ic-s390.cc",
2101      "src/ic/s390/stub-cache-s390.cc",
2102      "src/regexp/s390/regexp-macro-assembler-s390.cc",
2103      "src/regexp/s390/regexp-macro-assembler-s390.h",
2104      "src/s390/assembler-s390-inl.h",
2105      "src/s390/assembler-s390.cc",
2106      "src/s390/assembler-s390.h",
2107      "src/s390/code-stubs-s390.cc",
2108      "src/s390/code-stubs-s390.h",
2109      "src/s390/codegen-s390.cc",
2110      "src/s390/codegen-s390.h",
2111      "src/s390/constants-s390.cc",
2112      "src/s390/constants-s390.h",
2113      "src/s390/cpu-s390.cc",
2114      "src/s390/deoptimizer-s390.cc",
2115      "src/s390/disasm-s390.cc",
2116      "src/s390/frames-s390.cc",
2117      "src/s390/frames-s390.h",
2118      "src/s390/interface-descriptors-s390.cc",
2119      "src/s390/macro-assembler-s390.cc",
2120      "src/s390/macro-assembler-s390.h",
2121      "src/s390/simulator-s390.cc",
2122      "src/s390/simulator-s390.h",
2123    ]
2124  } else if (v8_current_cpu == "x87") {
2125    sources += [  ### gcmole(arch:x87) ###
2126      "src/builtins/x87/builtins-x87.cc",
2127      "src/compiler/x87/code-generator-x87.cc",
2128      "src/compiler/x87/instruction-codes-x87.h",
2129      "src/compiler/x87/instruction-scheduler-x87.cc",
2130      "src/compiler/x87/instruction-selector-x87.cc",
2131      "src/crankshaft/x87/lithium-codegen-x87.cc",
2132      "src/crankshaft/x87/lithium-codegen-x87.h",
2133      "src/crankshaft/x87/lithium-gap-resolver-x87.cc",
2134      "src/crankshaft/x87/lithium-gap-resolver-x87.h",
2135      "src/crankshaft/x87/lithium-x87.cc",
2136      "src/crankshaft/x87/lithium-x87.h",
2137      "src/debug/x87/debug-x87.cc",
2138      "src/full-codegen/x87/full-codegen-x87.cc",
2139      "src/ic/x87/access-compiler-x87.cc",
2140      "src/ic/x87/handler-compiler-x87.cc",
2141      "src/ic/x87/ic-compiler-x87.cc",
2142      "src/ic/x87/ic-x87.cc",
2143      "src/ic/x87/stub-cache-x87.cc",
2144      "src/regexp/x87/regexp-macro-assembler-x87.cc",
2145      "src/regexp/x87/regexp-macro-assembler-x87.h",
2146      "src/x87/assembler-x87-inl.h",
2147      "src/x87/assembler-x87.cc",
2148      "src/x87/assembler-x87.h",
2149      "src/x87/code-stubs-x87.cc",
2150      "src/x87/code-stubs-x87.h",
2151      "src/x87/codegen-x87.cc",
2152      "src/x87/codegen-x87.h",
2153      "src/x87/cpu-x87.cc",
2154      "src/x87/deoptimizer-x87.cc",
2155      "src/x87/disasm-x87.cc",
2156      "src/x87/frames-x87.cc",
2157      "src/x87/frames-x87.h",
2158      "src/x87/interface-descriptors-x87.cc",
2159      "src/x87/macro-assembler-x87.cc",
2160      "src/x87/macro-assembler-x87.h",
2161      "src/x87/simulator-x87.cc",
2162      "src/x87/simulator-x87.h",
2163    ]
2164  }
2165
2166  configs = [ ":internal_config" ]
2167
2168  defines = []
2169  deps = [
2170    ":v8_libbase",
2171    ":v8_libsampler",
2172  ]
2173
2174  sources += [ v8_generated_peephole_source ]
2175  deps += [ ":run_mkpeephole" ]
2176
2177  if (is_win) {
2178    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
2179    cflags = [ "/wd4267" ]
2180  }
2181
2182  if (v8_enable_i18n_support) {
2183    deps += [ "//third_party/icu" ]
2184    if (is_win) {
2185      deps += [ "//third_party/icu:icudata" ]
2186    }
2187  } else {
2188    sources -= [
2189      "src/i18n.cc",
2190      "src/i18n.h",
2191    ]
2192  }
2193
2194  if (v8_postmortem_support) {
2195    sources += [ "$target_gen_dir/debug-support.cc" ]
2196    deps += [ ":postmortem-metadata" ]
2197  }
2198
2199  if (v8_enable_inspector_override) {
2200    deps += [ "src/inspector:inspector" ]
2201  }
2202}
2203
2204v8_component("v8_libbase") {
2205  sources = [
2206    "src/base/adapters.h",
2207    "src/base/atomic-utils.h",
2208    "src/base/atomicops.h",
2209    "src/base/atomicops_internals_atomicword_compat.h",
2210    "src/base/atomicops_internals_portable.h",
2211    "src/base/atomicops_internals_x86_msvc.h",
2212    "src/base/base-export.h",
2213    "src/base/bits.cc",
2214    "src/base/bits.h",
2215    "src/base/build_config.h",
2216    "src/base/compiler-specific.h",
2217    "src/base/cpu.cc",
2218    "src/base/cpu.h",
2219    "src/base/debug/stack_trace.cc",
2220    "src/base/debug/stack_trace.h",
2221    "src/base/division-by-constant.cc",
2222    "src/base/division-by-constant.h",
2223    "src/base/file-utils.cc",
2224    "src/base/file-utils.h",
2225    "src/base/flags.h",
2226    "src/base/format-macros.h",
2227    "src/base/free_deleter.h",
2228    "src/base/functional.cc",
2229    "src/base/functional.h",
2230    "src/base/hashmap-entry.h",
2231    "src/base/hashmap.h",
2232    "src/base/ieee754.cc",
2233    "src/base/ieee754.h",
2234    "src/base/iterator.h",
2235    "src/base/lazy-instance.h",
2236    "src/base/logging.cc",
2237    "src/base/logging.h",
2238    "src/base/macros.h",
2239    "src/base/once.cc",
2240    "src/base/once.h",
2241    "src/base/platform/condition-variable.cc",
2242    "src/base/platform/condition-variable.h",
2243    "src/base/platform/elapsed-timer.h",
2244    "src/base/platform/mutex.cc",
2245    "src/base/platform/mutex.h",
2246    "src/base/platform/platform.h",
2247    "src/base/platform/semaphore.cc",
2248    "src/base/platform/semaphore.h",
2249    "src/base/platform/time.cc",
2250    "src/base/platform/time.h",
2251    "src/base/ring-buffer.h",
2252    "src/base/safe_conversions.h",
2253    "src/base/safe_conversions_impl.h",
2254    "src/base/safe_math.h",
2255    "src/base/safe_math_impl.h",
2256    "src/base/sys-info.cc",
2257    "src/base/sys-info.h",
2258    "src/base/utils/random-number-generator.cc",
2259    "src/base/utils/random-number-generator.h",
2260  ]
2261
2262  configs = [ ":internal_config_base" ]
2263
2264  public_configs = [ ":libbase_config" ]
2265
2266  defines = []
2267
2268  if (is_component_build) {
2269    defines = [ "BUILDING_V8_BASE_SHARED" ]
2270  }
2271
2272  if (is_posix) {
2273    sources += [ "src/base/platform/platform-posix.cc" ]
2274  }
2275
2276  if (is_linux) {
2277    sources += [
2278      "src/base/debug/stack_trace_posix.cc",
2279      "src/base/platform/platform-linux.cc",
2280    ]
2281
2282    libs = [
2283      "dl",
2284      "rt",
2285    ]
2286  } else if (is_android) {
2287    if (current_toolchain == host_toolchain) {
2288      libs = [
2289        "dl",
2290        "rt",
2291      ]
2292      if (host_os == "mac") {
2293        sources += [
2294          "src/base/debug/stack_trace_posix.cc",
2295          "src/base/platform/platform-macos.cc",
2296        ]
2297      } else {
2298        sources += [
2299          "src/base/debug/stack_trace_posix.cc",
2300          "src/base/platform/platform-linux.cc",
2301        ]
2302      }
2303    } else {
2304      sources += [
2305        "src/base/debug/stack_trace_android.cc",
2306        "src/base/platform/platform-linux.cc",
2307      ]
2308    }
2309  } else if (is_mac) {
2310    sources += [
2311      "src/base/debug/stack_trace_posix.cc",
2312      "src/base/platform/platform-macos.cc",
2313    ]
2314  } else if (is_win) {
2315    # TODO(jochen): Add support for cygwin.
2316    sources += [
2317      "src/base/debug/stack_trace_win.cc",
2318      "src/base/platform/platform-win32.cc",
2319      "src/base/win32-headers.h",
2320    ]
2321
2322    defines += [ "_CRT_RAND_S" ]  # for rand_s()
2323
2324    libs = [
2325      "dbghelp.lib",
2326      "shlwapi.lib",
2327      "winmm.lib",
2328      "ws2_32.lib",
2329    ]
2330  }
2331
2332  # TODO(jochen): Add support for qnx, freebsd, openbsd, netbsd, and solaris.
2333}
2334
2335v8_component("v8_libplatform") {
2336  sources = [
2337    "//base/trace_event/common/trace_event_common.h",
2338    "include/libplatform/libplatform-export.h",
2339    "include/libplatform/libplatform.h",
2340    "include/libplatform/v8-tracing.h",
2341    "src/libplatform/default-platform.cc",
2342    "src/libplatform/default-platform.h",
2343    "src/libplatform/task-queue.cc",
2344    "src/libplatform/task-queue.h",
2345    "src/libplatform/tracing/trace-buffer.cc",
2346    "src/libplatform/tracing/trace-buffer.h",
2347    "src/libplatform/tracing/trace-config.cc",
2348    "src/libplatform/tracing/trace-object.cc",
2349    "src/libplatform/tracing/trace-writer.cc",
2350    "src/libplatform/tracing/trace-writer.h",
2351    "src/libplatform/tracing/tracing-controller.cc",
2352    "src/libplatform/worker-thread.cc",
2353    "src/libplatform/worker-thread.h",
2354  ]
2355
2356  configs = [ ":internal_config_base" ]
2357
2358  if (is_component_build) {
2359    defines = [ "BUILDING_V8_PLATFORM_SHARED" ]
2360  }
2361
2362  public_configs = [ ":libplatform_config" ]
2363
2364  deps = [
2365    ":v8_libbase",
2366  ]
2367}
2368
2369v8_source_set("v8_libsampler") {
2370  sources = [
2371    "src/libsampler/sampler.cc",
2372    "src/libsampler/sampler.h",
2373  ]
2374
2375  configs = [ ":internal_config_base" ]
2376
2377  public_configs = [ ":libsampler_config" ]
2378
2379  deps = [
2380    ":v8_libbase",
2381  ]
2382}
2383
2384v8_source_set("fuzzer_support") {
2385  visibility = [ ":*" ]  # Only targets in this file can depend on this.
2386
2387  sources = [
2388    "test/fuzzer/fuzzer-support.cc",
2389    "test/fuzzer/fuzzer-support.h",
2390  ]
2391
2392  configs = [ ":internal_config_base" ]
2393
2394  deps = [
2395    ":v8",
2396  ]
2397
2398  public_deps = [
2399    ":v8_libbase",
2400    ":v8_libplatform",
2401  ]
2402}
2403
2404v8_source_set("simple_fuzzer") {
2405  sources = [
2406    "test/fuzzer/fuzzer.cc",
2407  ]
2408
2409  configs = [ ":internal_config_base" ]
2410}
2411
2412###############################################################################
2413# Executables
2414#
2415
2416if (current_toolchain == v8_snapshot_toolchain) {
2417  v8_executable("mksnapshot") {
2418    visibility = [ ":*" ]  # Only targets in this file can depend on this.
2419
2420    sources = [
2421      "src/snapshot/mksnapshot.cc",
2422    ]
2423
2424    configs = [ ":internal_config" ]
2425
2426    deps = [
2427      ":v8_base",
2428      ":v8_libbase",
2429      ":v8_libplatform",
2430      ":v8_nosnapshot",
2431      "//build/config/sanitizers:deps",
2432      "//build/win:default_exe_manifest",
2433    ]
2434  }
2435}
2436
2437v8_executable("mkpeephole") {
2438  # mkpeephole needs to be built for the build host so the peephole lookup
2439  # table can built during build. The table depends on the properties of
2440  # bytecodes that are described in bytecodes.{cc,h}.
2441  visibility = [ ":*" ]  # Only targets in this file can depend on this.
2442
2443  sources = [
2444    "src/interpreter/bytecode-operands.cc",
2445    "src/interpreter/bytecode-operands.h",
2446    "src/interpreter/bytecode-peephole-optimizer.h",
2447    "src/interpreter/bytecode-traits.h",
2448    "src/interpreter/bytecodes.cc",
2449    "src/interpreter/bytecodes.h",
2450    "src/interpreter/mkpeephole.cc",
2451  ]
2452
2453  configs = [
2454    ":external_config",
2455    ":internal_config",
2456  ]
2457
2458  deps = [
2459    ":v8_libbase",
2460    "//build/config/sanitizers:deps",
2461    "//build/win:default_exe_manifest",
2462  ]
2463}
2464
2465###############################################################################
2466# Public targets
2467#
2468
2469want_v8_shell =
2470    (current_toolchain == host_toolchain && v8_toolset_for_shell == "host") ||
2471    (current_toolchain == v8_snapshot_toolchain &&
2472     v8_toolset_for_shell == "host") ||
2473    (current_toolchain != host_toolchain && v8_toolset_for_shell == "target")
2474
2475group("gn_all") {
2476  testonly = true
2477
2478  deps = [
2479    ":d8",
2480    ":v8_hello_world",
2481    ":v8_parser_shell",
2482    ":v8_sample_process",
2483    ":v8_simple_json_fuzzer",
2484    ":v8_simple_parser_fuzzer",
2485    ":v8_simple_regexp_fuzzer",
2486    ":v8_simple_wasm_asmjs_fuzzer",
2487    ":v8_simple_wasm_fuzzer",
2488    "test:gn_all",
2489    "tools:gn_all",
2490  ]
2491
2492  if (want_v8_shell) {
2493    deps += [ ":v8_shell" ]
2494  }
2495
2496  if (v8_test_isolation_mode != "noop") {
2497    deps += [ ":d8_run" ]
2498  }
2499}
2500
2501if (is_component_build) {
2502  v8_component("v8") {
2503    sources = [
2504      "src/v8dll-main.cc",
2505    ]
2506
2507    deps = [
2508      ":v8_dump_build_config",
2509    ]
2510
2511    public_deps = [
2512      ":v8_base",
2513      ":v8_maybe_snapshot",
2514    ]
2515
2516    configs = [ ":internal_config" ]
2517
2518    public_configs = [ ":external_config" ]
2519  }
2520} else {
2521  group("v8") {
2522    deps = [
2523      ":v8_dump_build_config",
2524    ]
2525
2526    public_deps = [
2527      ":v8_base",
2528      ":v8_maybe_snapshot",
2529    ]
2530    public_configs = [ ":external_config" ]
2531  }
2532}
2533
2534v8_executable("d8") {
2535  sources = [
2536    "$target_gen_dir/d8-js.cc",
2537    "src/d8.cc",
2538    "src/d8.h",
2539  ]
2540
2541  configs = [
2542    # Note: don't use :internal_config here because this target will get
2543    # the :external_config applied to it by virtue of depending on :v8, and
2544    # you can't have both applied to the same target.
2545    ":internal_config_base",
2546  ]
2547
2548  deps = [
2549    ":d8_js2c",
2550    ":v8",
2551    ":v8_libbase",
2552    ":v8_libplatform",
2553    "//build/config/sanitizers:deps",
2554    "//build/win:default_exe_manifest",
2555  ]
2556
2557  # TODO(jochen): Add support for vtunejit.
2558
2559  if (is_posix) {
2560    sources += [ "src/d8-posix.cc" ]
2561  } else if (is_win) {
2562    sources += [ "src/d8-windows.cc" ]
2563  }
2564
2565  if (v8_enable_i18n_support) {
2566    deps += [ "//third_party/icu" ]
2567  }
2568
2569  defines = []
2570  if (v8_enable_inspector_override) {
2571    defines += [ "V8_INSPECTOR_ENABLED" ]
2572  }
2573}
2574
2575v8_isolate_run("d8") {
2576  deps = [
2577    ":d8",
2578  ]
2579
2580  isolate = "//src/d8.isolate"
2581}
2582
2583v8_executable("v8_hello_world") {
2584  sources = [
2585    "samples/hello-world.cc",
2586  ]
2587
2588  configs = [
2589    # Note: don't use :internal_config here because this target will get
2590    # the :external_config applied to it by virtue of depending on :v8, and
2591    # you can't have both applied to the same target.
2592    ":internal_config_base",
2593  ]
2594
2595  deps = [
2596    ":v8",
2597    ":v8_libbase",
2598    ":v8_libplatform",
2599    "//build/config/sanitizers:deps",
2600    "//build/win:default_exe_manifest",
2601  ]
2602
2603  if (v8_enable_i18n_support) {
2604    deps += [ "//third_party/icu" ]
2605  }
2606}
2607
2608v8_executable("v8_sample_process") {
2609  sources = [
2610    "samples/process.cc",
2611  ]
2612
2613  configs = [
2614    # Note: don't use :internal_config here because this target will get
2615    # the :external_config applied to it by virtue of depending on :v8, and
2616    # you can't have both applied to the same target.
2617    ":internal_config_base",
2618  ]
2619
2620  deps = [
2621    ":v8",
2622    ":v8_libbase",
2623    ":v8_libplatform",
2624    "//build/config/sanitizers:deps",
2625    "//build/win:default_exe_manifest",
2626  ]
2627
2628  if (v8_enable_i18n_support) {
2629    deps += [ "//third_party/icu" ]
2630  }
2631}
2632
2633v8_executable("v8_parser_shell") {
2634  sources = [
2635    "tools/parser-shell.cc",
2636    "tools/shell-utils.h",
2637  ]
2638
2639  configs = [
2640    ":external_config",
2641    ":internal_config_base",
2642  ]
2643
2644  deps = [
2645    ":v8",
2646    ":v8_libbase",
2647    ":v8_libplatform",
2648    "//build/config/sanitizers:deps",
2649    "//build/win:default_exe_manifest",
2650  ]
2651
2652  if (v8_enable_i18n_support) {
2653    deps += [ "//third_party/icu" ]
2654  }
2655}
2656
2657if (want_v8_shell) {
2658  v8_executable("v8_shell") {
2659    sources = [
2660      "samples/shell.cc",
2661    ]
2662
2663    configs = [
2664      # Note: don't use :internal_config here because this target will get
2665      # the :external_config applied to it by virtue of depending on :v8, and
2666      # you can't have both applied to the same target.
2667      ":internal_config_base",
2668    ]
2669
2670    deps = [
2671      ":v8",
2672      ":v8_libbase",
2673      ":v8_libplatform",
2674      "//build/config/sanitizers:deps",
2675      "//build/win:default_exe_manifest",
2676    ]
2677
2678    if (v8_enable_i18n_support) {
2679      deps += [ "//third_party/icu" ]
2680    }
2681  }
2682}
2683
2684template("v8_fuzzer") {
2685  name = target_name
2686  forward_variables_from(invoker, "*")
2687  v8_executable("v8_simple_" + name) {
2688    deps = [
2689      ":" + name,
2690      ":simple_fuzzer",
2691      "//build/win:default_exe_manifest",
2692    ]
2693
2694    configs = [ ":external_config" ]
2695  }
2696}
2697
2698v8_source_set("json_fuzzer") {
2699  sources = [
2700    "test/fuzzer/json.cc",
2701  ]
2702
2703  deps = [
2704    ":fuzzer_support",
2705  ]
2706
2707  configs = [
2708    ":external_config",
2709    ":internal_config_base",
2710  ]
2711}
2712
2713v8_fuzzer("json_fuzzer") {
2714}
2715
2716v8_source_set("parser_fuzzer") {
2717  sources = [
2718    "test/fuzzer/parser.cc",
2719  ]
2720
2721  deps = [
2722    ":fuzzer_support",
2723  ]
2724
2725  configs = [
2726    ":external_config",
2727    ":internal_config_base",
2728  ]
2729}
2730
2731v8_fuzzer("parser_fuzzer") {
2732}
2733
2734v8_source_set("regexp_fuzzer") {
2735  sources = [
2736    "test/fuzzer/regexp.cc",
2737  ]
2738
2739  deps = [
2740    ":fuzzer_support",
2741  ]
2742
2743  configs = [
2744    ":external_config",
2745    ":internal_config_base",
2746  ]
2747}
2748
2749v8_fuzzer("regexp_fuzzer") {
2750}
2751
2752v8_source_set("wasm_module_runner") {
2753  sources = [
2754    "test/common/wasm/wasm-module-runner.cc",
2755    "test/common/wasm/wasm-module-runner.h",
2756  ]
2757
2758  configs = [
2759    ":external_config",
2760    ":internal_config_base",
2761  ]
2762}
2763
2764v8_source_set("wasm_test_signatures") {
2765  sources = [
2766    "test/common/wasm/test-signatures.h",
2767  ]
2768
2769  configs = [
2770    ":external_config",
2771    ":internal_config_base",
2772  ]
2773}
2774
2775v8_source_set("wasm_fuzzer") {
2776  sources = [
2777    "test/fuzzer/wasm.cc",
2778  ]
2779
2780  deps = [
2781    ":fuzzer_support",
2782    ":wasm_module_runner",
2783  ]
2784
2785  configs = [
2786    ":external_config",
2787    ":internal_config_base",
2788  ]
2789}
2790
2791v8_fuzzer("wasm_fuzzer") {
2792}
2793
2794v8_source_set("wasm_asmjs_fuzzer") {
2795  sources = [
2796    "test/fuzzer/wasm-asmjs.cc",
2797  ]
2798
2799  deps = [
2800    ":fuzzer_support",
2801    ":wasm_module_runner",
2802  ]
2803
2804  configs = [
2805    ":external_config",
2806    ":internal_config_base",
2807  ]
2808}
2809
2810v8_fuzzer("wasm_asmjs_fuzzer") {
2811}
2812
2813v8_source_set("wasm_code_fuzzer") {
2814  sources = [
2815    "test/fuzzer/wasm-code.cc",
2816  ]
2817
2818  deps = [
2819    ":fuzzer_support",
2820    ":wasm_module_runner",
2821    ":wasm_test_signatures",
2822  ]
2823
2824  configs = [
2825    ":external_config",
2826    ":internal_config_base",
2827  ]
2828}
2829
2830v8_fuzzer("wasm_code_fuzzer") {
2831}
2832
2833v8_source_set("wasm_call_fuzzer") {
2834  sources = [
2835    "test/fuzzer/wasm-call.cc",
2836  ]
2837
2838  deps = [
2839    ":fuzzer_support",
2840    ":wasm_module_runner",
2841    ":wasm_test_signatures",
2842  ]
2843
2844  configs = [
2845    ":external_config",
2846    ":internal_config_base",
2847  ]
2848}
2849
2850v8_fuzzer("wasm_call_fuzzer") {
2851}
2852
2853v8_source_set("lib_wasm_section_fuzzer") {
2854  sources = [
2855    "test/fuzzer/wasm-section-fuzzers.cc",
2856    "test/fuzzer/wasm-section-fuzzers.h",
2857  ]
2858
2859  configs = [
2860    ":external_config",
2861    ":internal_config_base",
2862  ]
2863}
2864
2865v8_source_set("wasm_types_section_fuzzer") {
2866  sources = [
2867    "test/fuzzer/wasm-types-section.cc",
2868  ]
2869
2870  deps = [
2871    ":fuzzer_support",
2872    ":lib_wasm_section_fuzzer",
2873    ":wasm_module_runner",
2874  ]
2875
2876  configs = [
2877    ":external_config",
2878    ":internal_config_base",
2879  ]
2880}
2881
2882v8_fuzzer("wasm_types_section_fuzzer") {
2883}
2884
2885v8_source_set("wasm_names_section_fuzzer") {
2886  sources = [
2887    "test/fuzzer/wasm-names-section.cc",
2888  ]
2889
2890  deps = [
2891    ":fuzzer_support",
2892    ":lib_wasm_section_fuzzer",
2893    ":wasm_module_runner",
2894  ]
2895
2896  configs = [
2897    ":external_config",
2898    ":internal_config_base",
2899  ]
2900}
2901
2902v8_fuzzer("wasm_names_section_fuzzer") {
2903}
2904
2905v8_source_set("wasm_globals_section_fuzzer") {
2906  sources = [
2907    "test/fuzzer/wasm-globals-section.cc",
2908  ]
2909
2910  deps = [
2911    ":fuzzer_support",
2912    ":lib_wasm_section_fuzzer",
2913    ":wasm_module_runner",
2914  ]
2915
2916  configs = [
2917    ":external_config",
2918    ":internal_config_base",
2919  ]
2920}
2921
2922v8_fuzzer("wasm_globals_section_fuzzer") {
2923}
2924
2925v8_source_set("wasm_imports_section_fuzzer") {
2926  sources = [
2927    "test/fuzzer/wasm-imports-section.cc",
2928  ]
2929
2930  deps = [
2931    ":fuzzer_support",
2932    ":lib_wasm_section_fuzzer",
2933    ":wasm_module_runner",
2934  ]
2935
2936  configs = [
2937    ":external_config",
2938    ":internal_config_base",
2939  ]
2940}
2941
2942v8_fuzzer("wasm_imports_section_fuzzer") {
2943}
2944
2945v8_source_set("wasm_function_sigs_section_fuzzer") {
2946  sources = [
2947    "test/fuzzer/wasm-function-sigs-section.cc",
2948  ]
2949
2950  deps = [
2951    ":fuzzer_support",
2952    ":lib_wasm_section_fuzzer",
2953    ":wasm_module_runner",
2954  ]
2955
2956  configs = [
2957    ":external_config",
2958    ":internal_config_base",
2959  ]
2960}
2961
2962v8_fuzzer("wasm_function_sigs_section_fuzzer") {
2963}
2964
2965v8_source_set("wasm_memory_section_fuzzer") {
2966  sources = [
2967    "test/fuzzer/wasm-memory-section.cc",
2968  ]
2969
2970  deps = [
2971    ":fuzzer_support",
2972    ":lib_wasm_section_fuzzer",
2973    ":wasm_module_runner",
2974  ]
2975
2976  configs = [
2977    ":external_config",
2978    ":internal_config_base",
2979  ]
2980}
2981
2982v8_fuzzer("wasm_memory_section_fuzzer") {
2983}
2984
2985v8_source_set("wasm_data_section_fuzzer") {
2986  sources = [
2987    "test/fuzzer/wasm-data-section.cc",
2988  ]
2989
2990  deps = [
2991    ":fuzzer_support",
2992    ":lib_wasm_section_fuzzer",
2993    ":wasm_module_runner",
2994  ]
2995
2996  configs = [
2997    ":external_config",
2998    ":internal_config_base",
2999  ]
3000}
3001
3002v8_fuzzer("wasm_data_section_fuzzer") {
3003}
3004