Port 'external startup data' flag from gyp to gn.
authorvogelheim@chromium.org <vogelheim@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 6 Jun 2014 14:30:33 +0000 (14:30 +0000)
committervogelheim@chromium.org <vogelheim@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 6 Jun 2014 14:30:33 +0000 (14:30 +0000)
R=jochen@chromium.org
BUG=

Review URL: https://codereview.chromium.org/316363004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21721 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

BUILD.gn

index 6c6210c..f9bd41e 100644 (file)
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -218,10 +218,19 @@ action("js2c") {
     sources += [ "src/i18n.js" ]
   }
 
-  args =
-    rebase_path(outputs, root_build_dir) +
-    [ "CORE", v8_compress_startup_data ] +
-    rebase_path(sources, root_build_dir)
+  args = [
+    rebase_path("$target_gen_dir/libraries.cc", root_build_dir),
+    "CORE",
+    v8_compress_startup_data
+  ] + rebase_path(sources, root_build_dir)
+
+  if (v8_use_external_startup_data) {
+    outputs += [ "$target_gen_dir/libraries.bin" ]
+    args += [
+      "--startup_blob",
+      rebase_path("$target_gen_dir/libraries.bin", root_build_dir)
+    ]
+  }
 }
 
 action("js2c_experimental") {
@@ -250,10 +259,41 @@ action("js2c_experimental") {
     "$target_gen_dir/experimental-libraries.cc"
   ]
 
-  args =
-    rebase_path(outputs, root_build_dir) +
-    [ "EXPERIMENTAL", v8_compress_startup_data ] +
-    rebase_path(sources, root_build_dir)
+  args = [
+    rebase_path("$target_gen_dir/experimental-libraries.cc", root_build_dir),
+    "EXPERIMENTAL",
+    v8_compress_startup_data
+  ] + rebase_path(sources, root_build_dir)
+
+  if (v8_use_external_startup_data) {
+    outputs += [ "$target_gen_dir/libraries_experimental.bin" ]
+    args += [
+      "--startup_blob",
+      rebase_path("$target_gen_dir/libraries_experimental.bin", root_build_dir)
+    ]
+  }
+}
+
+action("natives_blob") {
+  visibility = ":*"  # Only targets in this file can depend on this.
+
+  deps = [
+    ":js2c",
+    ":js2c_experimental"
+  ]
+
+  sources = [
+    "$target_gen_dir/libraries.bin",
+    "$target_gen_dir/libraries_experimental.bin"
+  ]
+
+  outputs = [
+    "$root_gen_dir/natives_blob.bin"
+  ]
+
+  script = "tools/concatenate-files.py"
+
+  args = rebase_path(sources + outputs, root_build_dir)
 }
 
 action("postmortem-metadata") {
@@ -291,14 +331,21 @@ action("run_mksnapshot") {
                                       "root_out_dir") + "/mksnapshot",
                        root_build_dir),
     "--log-snapshot-positions",
-    "--logfile", rebase_path("$target_gen_dir/snapshot.log", root_build_dir)
+    "--logfile", rebase_path("$target_gen_dir/snapshot.log", root_build_dir),
+    rebase_path("$target_gen_dir/snapshot.cc", root_build_dir)
   ]
 
   if (v8_random_seed != "0") {
     args += [ "--random-seed", v8_random_seed ]
   }
 
-  args += rebase_path(outputs, root_build_dir)
+  if (v8_use_external_startup_data) {
+    outputs += [ "$root_gen_dir/snapshot_blob.bin" ]
+    args += [
+      "--startup_blob",
+      rebase_path("$root_gen_dir/snapshot_blob.bin", root_build_dir)
+    ]
+  }
 }
 
 
@@ -353,6 +400,29 @@ source_set("v8_snapshot") {
   configs += [ ":internal_config", ":features", ":toolchain" ]
 }
 
+source_set("v8_external_snapshot") {
+  visibility = ":*"  # Only targets in this file can depend on this.
+
+  deps = [
+    ":js2c",
+    ":js2c_experimental",
+    ":generate_trig_table",
+    ":run_mksnapshot",
+    ":v8_base",
+    ":natives_blob",
+  ]
+
+  sources = [
+    "$target_gen_dir/trig-table.cc",
+    "src/natives-external.cc",
+    "src/snapshot-external.cc",
+  ]
+
+  configs -= [ "//build/config/compiler:chromium_code" ]
+  configs += [ "//build/config/compiler:no_chromium_code" ]
+  configs += [ ":internal_config", ":features", ":toolchain" ]
+}
+
 source_set("v8_base") {
   visibility = ":*"  # Only targets in this file can depend on this.
 
@@ -1024,7 +1094,12 @@ component("v8") {
     "src/v8dll-main.cc",
   ]
 
-  if (v8_use_snapshot) {
+  if (v8_use_external_startup_data) {
+    deps = [
+      ":v8_base",
+      ":v8_external_snapshot",
+    ]
+  } else if (v8_use_snapshot) {
     deps = [
       ":v8_base",
       ":v8_snapshot",
@@ -1050,7 +1125,12 @@ component("v8") {
 } else {
 
 group("v8") {
-  if (v8_use_snapshot) {
+  if (v8_use_external_startup_data) {
+    deps = [
+      ":v8_base",
+      ":v8_external_snapshot",
+    ]
+  } else if (v8_use_snapshot) {
     deps = [
       ":v8_base",
       ":v8_snapshot",