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.gn98
1 files changed, 98 insertions, 0 deletions
diff --git a/core/libdeno/BUILD.gn b/core/libdeno/BUILD.gn
new file mode 100644
index 000000000..d2322c678
--- /dev/null
+++ b/core/libdeno/BUILD.gn
@@ -0,0 +1,98 @@
+# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+import("//v8/gni/v8.gni")
+
+group("default") {
+ testonly = true
+ deps = [
+ ":libdeno_static_lib",
+ ":libdeno_test",
+ ":v8",
+ ]
+}
+
+config("deno_config") {
+ include_dirs = [ "//v8" ] # This allows us to v8/src/base/ libraries.
+ configs = [ "//v8:external_config" ]
+ cflags = []
+
+ if (is_debug) {
+ defines = [ "DEBUG" ]
+ }
+
+ if (is_clang) {
+ cflags += [
+ "-fcolor-diagnostics",
+ "-fansi-escape-codes",
+ ]
+ }
+
+ if (is_debug && is_clang && !is_win) {
+ 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 = [
+ "//v8:v8",
+ "//v8:v8_libbase",
+ "//v8:v8_libplatform",
+ "//v8:v8_libsampler",
+ ]
+ configs = [ ":deno_config" ]
+}
+
+# Only functionality needed for libdeno_test and snapshot_creator
+# In particular 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",
+ "buffer.h",
+ "deno.h",
+ "exceptions.cc",
+ "exceptions.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("libdeno_test") {
+ testonly = true
+ sources = [
+ "libdeno_test.cc",
+ "modules_test.cc",
+ "test.cc",
+ ]
+ deps = [
+ ":libdeno",
+ "//testing/gtest:gtest",
+ ]
+ data = [
+ "libdeno_test.js",
+ ]
+ js_path = rebase_path(data[0])
+ defines = [ "JS_PATH=\"$js_path\"" ]
+ configs = [ ":deno_config" ]
+}