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(). The target will resolve to # run_mksnapshot_. If is "default", no file suffixes will be used. # Otherwise files are suffixed, e.g. embedded_.cc and # snapshot_blob_.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 = [] }