22# Use of this source code is governed by a BSD-style license that can be
33# found in the LICENSE file.
44
5+ import (" //build/config/android/config.gni" )
6+ import (" //build/config/arm.gni" )
7+ import (" //build/config/mips.gni" )
8+
59# Because standalone V8 builds are not supported, assume this is part of a
610# Chromium build.
711import (" //build/module_args/v8.gni" )
@@ -18,10 +22,23 @@ v8_interpreted_regexp = false
1822v8_object_print = false
1923v8_postmortem_support = false
2024v8_use_snapshot = true
21- v8_target_arch = cpu_arch
25+ v8_target_arch = target_cpu
2226v8_random_seed = " 314159265"
2327v8_toolset_for_d8 = " host"
2428
29+ # The snapshot needs to be compiled for the host, but compiled with
30+ # a toolchain that matches the bit-width of the target.
31+ #
32+ # TODO(GYP ): For now we only support 32-bit little-endian target builds from an
33+ # x64 Linux host. Eventually we need to support all of the host/target
34+ # configurations v8 runs on.
35+ if (host_cpu == " x64" && host_os == " linux" &&
36+ (target_cpu == " arm" || target_cpu == " mipsel" || target_cpu == " x86" )) {
37+ snapshot_toolchain = " //build/toolchain/linux:clang_x86"
38+ } else {
39+ snapshot_toolchain = default_toolchain
40+ }
41+
2542# ##############################################################################
2643# Configurations
2744#
@@ -96,37 +113,49 @@ config("toolchain") {
96113 defines = []
97114 cflags = []
98115
99- # TODO(jochen ): Add support for arm subarchs, mips, mipsel.
116+ # TODO(jochen ): Add support for arm subarchs, mips, mipsel, mips64el .
100117
101118 if (v8_target_arch == " arm" ) {
102119 defines += [ " V8_TARGET_ARCH_ARM" ]
103- if (arm_version == 7 ) {
104- defines += [ " CAN_USE_ARMV7_INSTRUCTIONS" ]
105- }
106- if (arm_fpu == " vfpv3-d16" ) {
107- defines += [ " CAN_USE_VFP3_INSTRUCTIONS" ]
108- }
109- if (arm_fpu == " vfpv3" ) {
110- defines += [
111- " CAN_USE_VFP3_INSTRUCTIONS" ,
112- " CAN_USE_VFP32DREGS" ,
113- ]
114- }
115- if (arm_fpu == " neon" ) {
120+ if (current_cpu == " arm" ) {
121+ if (arm_version == 7 ) {
122+ defines += [ " CAN_USE_ARMV7_INSTRUCTIONS" ]
123+ }
124+ if (arm_fpu == " vfpv3-d16" ) {
125+ defines += [ " CAN_USE_VFP3_INSTRUCTIONS" ]
126+ } else if (arm_fpu == " vfpv3" ) {
127+ defines += [
128+ " CAN_USE_VFP3_INSTRUCTIONS" ,
129+ " CAN_USE_VFP32DREGS" ,
130+ ]
131+ } else if (arm_fpu == " neon" ) {
132+ defines += [
133+ " CAN_USE_VFP3_INSTRUCTIONS" ,
134+ " CAN_USE_VFP32DREGS" ,
135+ " CAN_USE_NEON" ,
136+ ]
137+ }
138+ } else {
139+ # These defines ares used for the ARM simulator.
116140 defines += [
141+ " CAN_USE_ARMV7_INSTRUCTIONS" ,
117142 " CAN_USE_VFP3_INSTRUCTIONS" ,
118143 " CAN_USE_VFP32DREGS" ,
119- " CAN_USE_NEON " ,
144+ " USE_EABI_HARDFLOAT=0 " ,
120145 ]
121146 }
122147
123148 # TODO(jochen ): Add support for arm_test_noprobe.
124-
125- # TODO(jochen ): Add support for cpu_arch != v8_target_arch/
126149 }
127150 if (v8_target_arch == " arm64" ) {
128151 defines += [ " V8_TARGET_ARCH_ARM64" ]
129152 }
153+ if (v8_target_arch == " mipsel" ) {
154+ defines += [ " V8_TARGET_ARCH_MIPS" ]
155+ }
156+ if (v8_target_arch == " mips64el" ) {
157+ defines += [ " V8_TARGET_ARCH_MIPS64" ]
158+ }
130159 if (v8_target_arch == " x86" ) {
131160 defines += [ " V8_TARGET_ARCH_IA32" ]
132161 }
@@ -173,8 +202,8 @@ action("js2c") {
173202 " src/array.js" ,
174203 " src/string.js" ,
175204 " src/uri.js" ,
176- " src/third_party/fdlibm/fdlibm.js" ,
177205 " src/math.js" ,
206+ " src/third_party/fdlibm/fdlibm.js" ,
178207 " src/date.js" ,
179208 " src/regexp.js" ,
180209 " src/arraybuffer.js" ,
@@ -192,6 +221,7 @@ action("js2c") {
192221 " src/debug-debugger.js" ,
193222 " src/mirror-debugger.js" ,
194223 " src/liveedit-debugger.js" ,
224+ " src/templates.js" ,
195225 " src/macros.py" ,
196226 ]
197227
@@ -230,13 +260,12 @@ action("js2c_experimental") {
230260 " src/macros.py" ,
231261 " src/proxy.js" ,
232262 " src/generator.js" ,
233- " src/harmony-string.js" ,
234263 " src/harmony-array.js" ,
235264 " src/harmony-array-includes.js" ,
236265 " src/harmony-typedarray.js" ,
237266 " src/harmony-tostring.js" ,
238- " src/harmony-templates.js" ,
239267 " src/harmony-regexp.js" ,
268+ " src/harmony-reflect.js"
240269 ]
241270
242271 outputs = [
@@ -322,7 +351,7 @@ action("run_mksnapshot") {
322351 visibility = [ " :*" ] # Only targets in this file can depend on this.
323352
324353 deps = [
325- " :mksnapshot($host_toolchain )" ,
354+ " :mksnapshot($snapshot_toolchain )" ,
326355 ]
327356
328357 script = " tools/run.py"
@@ -332,7 +361,7 @@ action("run_mksnapshot") {
332361 ]
333362
334363 args = [
335- " ./" + rebase_path (get_label_info (" :mksnapshot($host_toolchain )" ,
364+ " ./" + rebase_path (get_label_info (" :mksnapshot($snapshot_toolchain )" ,
336365 " root_out_dir" ) + " /mksnapshot" ,
337366 root_build_dir ),
338367 " --log-snapshot-positions" ,
@@ -373,7 +402,7 @@ source_set("v8_nosnapshot") {
373402 sources = [
374403 " $target_gen_dir /libraries.cc" ,
375404 " $target_gen_dir /experimental-libraries.cc" ,
376- " src/snapshot-empty.cc" ,
405+ " src/snapshot/snapshot -empty.cc" ,
377406 ]
378407
379408 configs -= [ " //build/config/compiler:chromium_code" ]
@@ -423,8 +452,8 @@ if (v8_use_external_startup_data) {
423452 ]
424453
425454 sources = [
426- " src/natives-external.cc" ,
427- " src/snapshot-external.cc" ,
455+ " src/snapshot/ natives-external.cc" ,
456+ " src/snapshot/snapshot -external.cc" ,
428457 ]
429458
430459 configs -= [ " //build/config/compiler:chromium_code" ]
@@ -535,9 +564,7 @@ source_set("v8_base") {
535564 " src/compiler/frame.h" ,
536565 " src/compiler/gap-resolver.cc" ,
537566 " src/compiler/gap-resolver.h" ,
538- " src/compiler/generic-algorithm.h" ,
539567 " src/compiler/graph-builder.h" ,
540- " src/compiler/graph-inl.h" ,
541568 " src/compiler/graph-reducer.cc" ,
542569 " src/compiler/graph-reducer.h" ,
543570 " src/compiler/graph-replay.cc" ,
@@ -566,13 +593,17 @@ source_set("v8_base") {
566593 " src/compiler/js-intrinsic-lowering.h" ,
567594 " src/compiler/js-operator.cc" ,
568595 " src/compiler/js-operator.h" ,
596+ " src/compiler/js-type-feedback.cc" ,
597+ " src/compiler/js-type-feedback.h" ,
569598 " src/compiler/js-typed-lowering.cc" ,
570599 " src/compiler/js-typed-lowering.h" ,
571600 " src/compiler/jump-threading.cc" ,
572601 " src/compiler/jump-threading.h" ,
573602 " src/compiler/linkage-impl.h" ,
574603 " src/compiler/linkage.cc" ,
575604 " src/compiler/linkage.h" ,
605+ " src/compiler/liveness-analyzer.cc" ,
606+ " src/compiler/liveness-analyzer.h" ,
576607 " src/compiler/load-elimination.cc" ,
577608 " src/compiler/load-elimination.h" ,
578609 " src/compiler/loop-peeling.cc" ,
@@ -591,6 +622,7 @@ source_set("v8_base") {
591622 " src/compiler/node-cache.h" ,
592623 " src/compiler/node-marker.cc" ,
593624 " src/compiler/node-marker.h" ,
625+ " src/compiler/node-matchers.cc" ,
594626 " src/compiler/node-matchers.h" ,
595627 " src/compiler/node-properties.cc" ,
596628 " src/compiler/node-properties.h" ,
@@ -631,6 +663,8 @@ source_set("v8_base") {
631663 " src/compiler/simplified-operator.h" ,
632664 " src/compiler/source-position.cc" ,
633665 " src/compiler/source-position.h" ,
666+ " src/compiler/state-values-utils.cc" ,
667+ " src/compiler/state-values-utils.h" ,
634668 " src/compiler/typer.cc" ,
635669 " src/compiler/typer.h" ,
636670 " src/compiler/value-numbering-reducer.cc" ,
@@ -848,7 +882,6 @@ source_set("v8_base") {
848882 " src/modules.cc" ,
849883 " src/modules.h" ,
850884 " src/msan.h" ,
851- " src/natives.h" ,
852885 " src/objects-debug.cc" ,
853886 " src/objects-inl.h" ,
854887 " src/objects-printer.cc" ,
@@ -860,6 +893,8 @@ source_set("v8_base") {
860893 " src/ostreams.h" ,
861894 " src/parser.cc" ,
862895 " src/parser.h" ,
896+ " src/pending-compilation-error-handler.cc" ,
897+ " src/pending-compilation-error-handler.h" ,
863898 " src/perf-jit.cc" ,
864899 " src/perf-jit.h" ,
865900 " src/preparse-data-format.h" ,
@@ -929,20 +964,23 @@ source_set("v8_base") {
929964 " src/scopeinfo.h" ,
930965 " src/scopes.cc" ,
931966 " src/scopes.h" ,
932- " src/serialize.cc" ,
933- " src/serialize.h" ,
934967 " src/small-pointer-list.h" ,
935968 " src/smart-pointers.h" ,
936- " src/snapshot-common.cc" ,
937- " src/snapshot-source-sink.cc" ,
938- " src/snapshot-source-sink.h" ,
939- " src/snapshot.h" ,
969+ " src/snapshot/natives.h" ,
970+ " src/snapshot/serialize.cc" ,
971+ " src/snapshot/serialize.h" ,
972+ " src/snapshot/snapshot-common.cc" ,
973+ " src/snapshot/snapshot-source-sink.cc" ,
974+ " src/snapshot/snapshot-source-sink.h" ,
975+ " src/snapshot/snapshot.h" ,
940976 " src/string-builder.cc" ,
941977 " src/string-builder.h" ,
942978 " src/string-search.cc" ,
943979 " src/string-search.h" ,
944980 " src/string-stream.cc" ,
945981 " src/string-stream.h" ,
982+ " src/strings-storage.cc" ,
983+ " src/strings-storage.h" ,
946984 " src/strtod.cc" ,
947985 " src/strtod.h" ,
948986 " src/token.cc" ,
@@ -1356,11 +1394,11 @@ source_set("v8_libbase") {
13561394 if (is_linux ) {
13571395 sources += [ " src/base/platform/platform-linux.cc" ]
13581396
1359- libs = [ " rt" ]
1397+ libs = [ " dl " , " rt" ]
13601398 } else if (is_android ) {
13611399 defines += [ " CAN_USE_VFP_INSTRUCTIONS" ]
13621400
1363- if (build_os == " mac" ) {
1401+ if (host_os == " mac" ) {
13641402 if (current_toolchain == host_toolchain ) {
13651403 sources += [ " src/base/platform/platform-macos.cc" ]
13661404 } else {
@@ -1425,12 +1463,12 @@ source_set("v8_libplatform") {
14251463# Executables
14261464#
14271465
1428- if (current_toolchain == host_toolchain ) {
1466+ if (current_toolchain == snapshot_toolchain ) {
14291467 executable (" mksnapshot" ) {
14301468 visibility = [ " :*" ] # Only targets in this file can depend on this.
14311469
14321470 sources = [
1433- " src/mksnapshot.cc" ,
1471+ " src/snapshot/ mksnapshot.cc" ,
14341472 ]
14351473
14361474 configs -= [ " //build/config/compiler:chromium_code" ]
0 commit comments