summaryrefslogtreecommitdiff
path: root/core/libdeno/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'core/libdeno/BUILD.gn')
-rw-r--r--core/libdeno/BUILD.gn108
1 files changed, 108 insertions, 0 deletions
diff --git a/core/libdeno/BUILD.gn b/core/libdeno/BUILD.gn
new file mode 100644
index 000000000..eeec14eb5
--- /dev/null
+++ b/core/libdeno/BUILD.gn
@@ -0,0 +1,108 @@
+# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+import("//deno.gni")
+import("//third_party/v8/gni/v8.gni")
+
+config("deno_config") {
+ include_dirs = [ "//third_party/v8" ] # This allows us to v8/src/base/ libraries.
+ configs = [ "//third_party/v8:external_config" ]
+ cflags = []
+
+ if (is_debug) {
+ defines = [ "DEBUG" ]
+ }
+
+ if (is_clang) {
+ cflags += [
+ "-fcolor-diagnostics",
+ "-fansi-escape-codes",
+ ]
+ if (is_debug) {
+ cflags += [ "-glldb" ]
+ }
+ }
+
+ if (is_win) {
+ # The `/Zl` ("omit default library name") flag makes the compiler produce
+ # object files that can link with both the static and dynamic CRT.
+ cflags += [ "/Zl" ]
+ }
+}
+
+v8_source_set("v8") {
+ deps = [
+ "//third_party/v8:v8",
+ "//third_party/v8:v8_libbase",
+ "//third_party/v8:v8_libplatform",
+ "//third_party/v8:v8_libsampler",
+ ]
+ configs = [ ":deno_config" ]
+}
+
+# Only functionality needed for libdeno_test and snapshot_creator
+# In particular no flatbuffers, no assets, no rust, no msg handlers.
+# Because snapshots are slow, it's important that snapshot_creator's
+# dependencies are minimal.
+v8_source_set("libdeno") {
+ sources = [
+ "api.cc",
+ "binding.cc",
+ "deno.h",
+ "exceptions.cc",
+ "exceptions.h",
+ "file_util.cc",
+ "file_util.h",
+ "internal.h",
+ "modules.cc",
+ ]
+ deps = [
+ ":v8",
+ ]
+ configs = [ ":deno_config" ]
+}
+
+# The cargo-driven build links with libdeno to pull in all non-rust code.
+v8_static_library("libdeno_static_lib") {
+ output_name = "libdeno"
+ deps = [
+ ":libdeno",
+ "//build/config:shared_library_deps",
+ ]
+ configs = [ ":deno_config" ]
+}
+
+v8_executable("snapshot_creator") {
+ sources = [
+ "snapshot_creator.cc",
+ ]
+ deps = [
+ ":libdeno",
+ ]
+ configs = [ ":deno_config" ]
+}
+
+v8_executable("test_cc") {
+ testonly = true
+ sources = [
+ "file_util_test.cc",
+ "libdeno_test.cc",
+ "modules_test.cc",
+ "test.cc",
+ ]
+ deps = [
+ ":libdeno",
+ ":snapshot_test",
+ "//testing/gtest:gtest",
+ ]
+ data = [
+ "$target_gen_dir/snapshot_test.bin",
+ ]
+ snapshot_path = rebase_path(data[0], root_build_dir)
+ defines = [ "SNAPSHOT_PATH=\"$snapshot_path\"" ]
+ configs = [ ":deno_config" ]
+}
+
+# Generates $target_gen_dir/snapshot_test.bin
+snapshot("snapshot_test") {
+ testonly = true
+ source_root = "libdeno_test.js"
+}