mirror of
https://github.com/denoland/deno.git
synced 2024-10-29 08:58:01 -04:00
222 lines
4.8 KiB
Text
222 lines
4.8 KiB
Text
import("//third_party/protobuf/proto_library.gni")
|
|
import("//v8/gni/v8.gni")
|
|
import("//v8/snapshot_toolchain.gni")
|
|
|
|
executable("deno") {
|
|
sources = [
|
|
"main.cc",
|
|
]
|
|
deps = [
|
|
":libdeno",
|
|
]
|
|
}
|
|
|
|
executable("mock_runtime_test") {
|
|
testonly = true
|
|
sources = [
|
|
"from_snapshot.cc",
|
|
"mock_runtime_test.cc",
|
|
]
|
|
deps = [
|
|
":create_snapshot_mock_runtime",
|
|
":deno_nosnapshot",
|
|
"//testing/gtest:gtest",
|
|
]
|
|
include_dirs = [ target_gen_dir ]
|
|
defines = [ "DENO_MOCK_RUNTIME" ]
|
|
}
|
|
|
|
component("libdeno") {
|
|
sources = [
|
|
"from_snapshot.cc",
|
|
]
|
|
deps = [
|
|
":create_snapshot_deno",
|
|
":deno_nosnapshot",
|
|
]
|
|
include_dirs = [ target_gen_dir ]
|
|
}
|
|
|
|
source_set("deno_nosnapshot") {
|
|
sources = [
|
|
"deno.cc",
|
|
"deno_internal.h",
|
|
"include/deno.h",
|
|
]
|
|
include_dirs = [ "include/" ]
|
|
deps = [
|
|
":msg_proto",
|
|
"v8:v8",
|
|
"v8:v8_libbase",
|
|
"v8:v8_libplatform",
|
|
"v8:v8_libsampler",
|
|
]
|
|
}
|
|
|
|
executable("snapshot_creator") {
|
|
sources = [
|
|
"snapshot_creator.cc",
|
|
]
|
|
deps = [
|
|
":deno_nosnapshot",
|
|
]
|
|
}
|
|
|
|
proto_library("msg_proto") {
|
|
sources = [
|
|
"msg.proto",
|
|
]
|
|
}
|
|
|
|
template("run_node") {
|
|
action(target_name) {
|
|
forward_variables_from(invoker, "*")
|
|
script = "js/run_node.py"
|
|
}
|
|
}
|
|
|
|
run_node("bundle") {
|
|
main_source = "$target_gen_dir/tsc_dist/main.js"
|
|
main_output = "$target_gen_dir/bundle/main.js"
|
|
sources = [
|
|
main_source,
|
|
]
|
|
outputs = [
|
|
main_output,
|
|
]
|
|
deps = [
|
|
":run_tsc",
|
|
]
|
|
args = [
|
|
"./node_modules/.bin/browserify",
|
|
rebase_path(main_source, root_build_dir),
|
|
"-o",
|
|
rebase_path(main_output, root_build_dir),
|
|
]
|
|
}
|
|
|
|
run_node("run_tsc") {
|
|
main_source = "js/main.ts"
|
|
sources = [
|
|
"$target_gen_dir/node_modules/deno_pb/msg.pb.d.ts",
|
|
"$target_gen_dir/node_modules/deno_pb/msg.pb.js",
|
|
"js/tsconfig.json",
|
|
main_source,
|
|
]
|
|
out_dir = "$target_gen_dir/tsc_dist"
|
|
outputs = [
|
|
out_dir + "/main.js",
|
|
out_dir + "/main.map",
|
|
]
|
|
deps = [
|
|
":run_pbjs",
|
|
":run_pbts",
|
|
]
|
|
args = [
|
|
"./node_modules/.bin/tsc",
|
|
"-p",
|
|
rebase_path("js/tsconfig.json", root_build_dir),
|
|
"--baseUrl",
|
|
rebase_path(target_gen_dir + "/node_modules", root_build_dir),
|
|
"--outDir",
|
|
rebase_path(out_dir, root_build_dir),
|
|
]
|
|
}
|
|
|
|
run_node("run_pbjs") {
|
|
sources = [
|
|
"msg.proto",
|
|
]
|
|
outputs = [
|
|
"$target_gen_dir/node_modules/deno_pb/msg.pb.js",
|
|
]
|
|
args = [
|
|
"./node_modules/.bin/pbjs",
|
|
"--target=static-module",
|
|
"--wraper=commonjs",
|
|
"--out=" + rebase_path(outputs[0], root_build_dir),
|
|
rebase_path(sources[0], root_build_dir),
|
|
]
|
|
}
|
|
|
|
run_node("run_pbts") {
|
|
sources = [
|
|
"$target_gen_dir/node_modules/deno_pb/msg.pb.js",
|
|
]
|
|
outputs = [
|
|
"$target_gen_dir/node_modules/deno_pb/msg.pb.d.ts",
|
|
]
|
|
args = [
|
|
"./node_modules/.bin/pbts",
|
|
"--out=" + rebase_path(outputs[0], root_build_dir),
|
|
rebase_path(sources[0], root_build_dir),
|
|
]
|
|
deps = [
|
|
":run_pbjs",
|
|
]
|
|
}
|
|
|
|
# Template to generate different V8 snapshots based on different runtime flags.
|
|
# Can be invoked with run_mksnapshot(<name>). The target will resolve to
|
|
# run_mksnapshot_<name>. If <name> is "default", no file suffixes will be used.
|
|
# Otherwise files are suffixed, e.g. embedded_<name>.cc and
|
|
# snapshot_blob_<name>.bin.
|
|
#
|
|
# The template exposes the variables:
|
|
# args: additional flags for mksnapshots
|
|
# embedded_suffix: a camel case suffix for method names in the embedded
|
|
# snapshot.
|
|
template("create_snapshot") {
|
|
name = target_name
|
|
suffix = "_$name"
|
|
action("create_snapshot_" + name) {
|
|
forward_variables_from(invoker,
|
|
[
|
|
"testonly",
|
|
"deps",
|
|
])
|
|
visibility = [ ":*" ] # Only targets in this file can depend on this.
|
|
deps += [ ":snapshot_creator" ]
|
|
script = "v8/tools/run.py"
|
|
data = []
|
|
exe = rebase_path(get_label_info(":snapshot_creator", "root_out_dir") +
|
|
"/snapshot_creator")
|
|
natives_in_bin = "$root_out_dir/natives_blob.bin"
|
|
snapshot_in_bin = "$root_out_dir/snapshot_blob.bin"
|
|
natives_out_cc = "$target_gen_dir/natives${suffix}.cc"
|
|
snapshot_out_cc = "$target_gen_dir/snapshot${suffix}.cc"
|
|
sources = [
|
|
invoker.js,
|
|
]
|
|
outputs = [
|
|
natives_out_cc,
|
|
snapshot_out_cc,
|
|
]
|
|
args = [
|
|
exe,
|
|
rebase_path(invoker.js, root_build_dir),
|
|
rebase_path(natives_in_bin, root_build_dir),
|
|
rebase_path(snapshot_in_bin, root_build_dir),
|
|
rebase_path(natives_out_cc, root_build_dir),
|
|
rebase_path(snapshot_out_cc, root_build_dir),
|
|
]
|
|
data = [
|
|
invoker.js,
|
|
]
|
|
}
|
|
}
|
|
|
|
# Generates $target_gen_dir/snapshot_deno.cc
|
|
create_snapshot("deno") {
|
|
js = "$target_gen_dir/bundle/main.js"
|
|
deps = [
|
|
":bundle",
|
|
]
|
|
}
|
|
|
|
# Generates $target_gen_dir/snapshot_mock_runtime.cc
|
|
create_snapshot("mock_runtime") {
|
|
testonly = true
|
|
js = "js/mock_runtime.js"
|
|
deps = []
|
|
}
|