# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. import("//third_party/v8/gni/v8.gni") import("./deno.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", "file_util.cc", "file_util.h", "internal.h", ] 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", "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" }