2018-07-23 14:46:30 -04:00
|
|
|
# Copyright 2018 the Deno authors. All rights reserved. MIT license.
|
2018-08-29 08:42:30 +02:00
|
|
|
import("//build/toolchain/cc_wrapper.gni")
|
2018-07-07 10:37:56 -04:00
|
|
|
import("//build_extra/flatbuffers/flatbuffer.gni")
|
2018-07-23 14:13:12 -04:00
|
|
|
import("//build_extra/flatbuffers/rust/rust_flatbuffer.gni")
|
2018-07-06 00:58:09 -04:00
|
|
|
import("//build_extra/rust/rust.gni")
|
2018-11-25 13:56:04 -08:00
|
|
|
import("//third_party/v8/gni/v8.gni")
|
|
|
|
import("//third_party/v8/snapshot_toolchain.gni")
|
|
|
|
import("libdeno/deno.gni")
|
2018-06-10 00:32:04 +02:00
|
|
|
|
2018-08-17 18:23:14 -04:00
|
|
|
group("default") {
|
2018-07-12 18:37:06 -04:00
|
|
|
testonly = true
|
|
|
|
deps = [
|
|
|
|
":deno",
|
2018-10-20 19:56:16 -07:00
|
|
|
":hyper_hello",
|
2018-07-23 14:13:12 -04:00
|
|
|
":test_rs",
|
2018-11-25 13:56:04 -08:00
|
|
|
"libdeno:test_cc",
|
2018-07-12 18:37:06 -04:00
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2018-07-23 14:13:12 -04:00
|
|
|
main_extern = [
|
2018-10-27 06:11:39 -07:00
|
|
|
"$rust_build:atty",
|
|
|
|
"$rust_build:dirs",
|
2018-12-23 12:39:40 -05:00
|
|
|
"$rust_build:flatbuffers",
|
2018-10-27 06:11:39 -07:00
|
|
|
"$rust_build:futures",
|
|
|
|
"$rust_build:getopts",
|
2018-11-14 17:36:34 -08:00
|
|
|
"$rust_build:http",
|
2018-08-06 00:50:15 +02:00
|
|
|
"$rust_build:hyper",
|
2018-08-28 13:49:19 -04:00
|
|
|
"$rust_build:hyper_rustls",
|
2018-12-23 12:39:40 -05:00
|
|
|
"$rust_build:kernel32",
|
2018-09-24 19:51:37 -04:00
|
|
|
"$rust_build:lazy_static",
|
2018-07-23 14:13:12 -04:00
|
|
|
"$rust_build:libc",
|
|
|
|
"$rust_build:log",
|
2018-10-27 06:11:39 -07:00
|
|
|
"$rust_build:rand",
|
|
|
|
"$rust_build:remove_dir_all",
|
2018-08-28 13:49:19 -04:00
|
|
|
"$rust_build:ring",
|
2018-11-05 09:55:59 -08:00
|
|
|
"$rust_build:rustyline",
|
2018-12-06 23:05:36 -05:00
|
|
|
"$rust_build:serde_json",
|
|
|
|
"$rust_build:source_map_mappings",
|
2018-07-24 01:45:23 -04:00
|
|
|
"$rust_build:tempfile",
|
2018-07-28 17:46:27 -07:00
|
|
|
"$rust_build:tokio",
|
2018-09-18 11:53:16 -07:00
|
|
|
"$rust_build:tokio_executor",
|
2018-10-27 06:11:39 -07:00
|
|
|
"$rust_build:tokio_fs",
|
|
|
|
"$rust_build:tokio_io",
|
2018-11-03 06:58:30 +01:00
|
|
|
"$rust_build:tokio_process",
|
2018-09-22 04:42:07 -04:00
|
|
|
"$rust_build:tokio_threadpool",
|
2018-07-23 14:13:12 -04:00
|
|
|
"$rust_build:url",
|
2018-12-23 13:53:29 +09:00
|
|
|
"$rust_build:winapi",
|
2018-07-23 14:13:12 -04:00
|
|
|
]
|
|
|
|
|
2018-09-12 10:33:30 -04:00
|
|
|
ts_sources = [
|
|
|
|
"js/assets.ts",
|
2018-09-14 17:15:50 +04:30
|
|
|
"js/blob.ts",
|
2018-11-04 15:36:46 -08:00
|
|
|
"js/buffer.ts",
|
2018-10-26 13:01:45 -07:00
|
|
|
"js/chmod.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/compiler.ts",
|
|
|
|
"js/console.ts",
|
2018-10-03 23:58:29 -04:00
|
|
|
"js/copy_file.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/deno.ts",
|
2018-10-14 01:33:27 +05:30
|
|
|
"js/dir.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/dispatch.ts",
|
2018-09-16 16:46:12 +10:00
|
|
|
"js/dom_types.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/errors.ts",
|
2019-01-05 15:02:44 +00:00
|
|
|
"js/event.ts",
|
|
|
|
"js/event_target.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/fetch.ts",
|
2018-12-27 10:45:58 +01:00
|
|
|
"js/dom_file.ts",
|
2018-10-03 21:41:59 -04:00
|
|
|
"js/file_info.ts",
|
2018-09-27 00:56:39 -04:00
|
|
|
"js/files.ts",
|
2018-10-17 13:04:28 -04:00
|
|
|
"js/flatbuffers.ts",
|
2018-11-04 19:05:02 +01:00
|
|
|
"js/form_data.ts",
|
2018-10-03 21:41:59 -04:00
|
|
|
"js/global_eval.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/globals.ts",
|
2018-11-15 20:07:40 -08:00
|
|
|
"js/headers.ts",
|
2018-10-03 23:58:29 -04:00
|
|
|
"js/io.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/libdeno.ts",
|
|
|
|
"js/main.ts",
|
2018-09-13 11:04:45 +09:00
|
|
|
"js/make_temp_dir.ts",
|
2018-10-05 19:21:15 +02:00
|
|
|
"js/metrics.ts",
|
2018-10-03 23:58:29 -04:00
|
|
|
"js/mkdir.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/mock_builtin.js",
|
2018-10-03 23:58:29 -04:00
|
|
|
"js/net.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/os.ts",
|
2018-09-19 23:13:59 -07:00
|
|
|
"js/platform.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/plugins.d.ts",
|
2018-11-15 20:07:40 -08:00
|
|
|
"js/process.ts",
|
2018-10-04 06:56:56 +09:00
|
|
|
"js/read_dir.ts",
|
2018-10-03 23:58:29 -04:00
|
|
|
"js/read_file.ts",
|
|
|
|
"js/read_link.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/remove.ts",
|
|
|
|
"js/rename.ts",
|
2018-11-05 09:55:59 -08:00
|
|
|
"js/repl.ts",
|
2018-11-15 20:07:40 -08:00
|
|
|
"js/resources.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/stat.ts",
|
2018-09-18 21:38:24 -07:00
|
|
|
"js/symlink.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/text_encoding.ts",
|
|
|
|
"js/timers.ts",
|
2018-10-01 03:06:20 +08:00
|
|
|
"js/truncate.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/types.ts",
|
2018-12-18 11:07:47 +10:00
|
|
|
"js/url.ts",
|
2018-10-21 17:07:29 +02:00
|
|
|
"js/url_search_params.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/util.ts",
|
2019-01-08 14:44:06 -05:00
|
|
|
"js/workers.ts",
|
2018-09-12 10:33:30 -04:00
|
|
|
"js/write_file.ts",
|
|
|
|
"tsconfig.json",
|
2018-09-12 21:25:43 -07:00
|
|
|
|
|
|
|
# Listing package.json and yarn.lock as sources ensures the bundle is rebuilt
|
|
|
|
# when npm packages are added/removed or their contents changes.
|
|
|
|
"package.json",
|
|
|
|
"third_party/yarn.lock",
|
2018-09-12 10:33:30 -04:00
|
|
|
]
|
|
|
|
|
2018-12-13 22:19:17 +01:00
|
|
|
# When Cargo is driving the build, GN/Ninja are used to produce these non-Rust
|
|
|
|
# targets. Cargo handles all Rust source files and the final linking step.
|
2018-11-12 17:17:30 -08:00
|
|
|
group("deno_deps") {
|
|
|
|
deps = [
|
|
|
|
":msg_rs",
|
2018-12-01 01:53:37 -05:00
|
|
|
":snapshot_deno",
|
2018-12-20 02:11:58 +01:00
|
|
|
"libdeno:libdeno_static_lib",
|
2018-11-12 17:17:30 -08:00
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2018-12-13 22:16:58 +01:00
|
|
|
# Reads the cargo info from Cargo.toml
|
|
|
|
deno_cargo_info = exec_script("build_extra/rust/get_cargo_info.py",
|
|
|
|
[ rebase_path("Cargo.toml", root_build_dir) ],
|
|
|
|
"json")
|
|
|
|
|
2018-06-23 09:42:06 +02:00
|
|
|
rust_executable("deno") {
|
2018-07-01 20:47:28 +09:00
|
|
|
source_root = "src/main.rs"
|
2018-07-23 14:13:12 -04:00
|
|
|
extern = main_extern
|
2018-07-12 18:38:00 -04:00
|
|
|
deps = [
|
2018-10-31 11:11:10 -07:00
|
|
|
":deno_deps",
|
2018-07-12 18:38:00 -04:00
|
|
|
]
|
2018-12-13 22:16:58 +01:00
|
|
|
|
|
|
|
# Extract version from Cargo.toml
|
|
|
|
# TODO integrate this into rust.gni by allowing the rust_executable template
|
|
|
|
# to specify a cargo.toml from which it will extract a version.
|
|
|
|
crate_version = deno_cargo_info.version
|
|
|
|
inputs = [
|
|
|
|
"Cargo.toml",
|
|
|
|
]
|
2018-07-13 03:06:36 +08:00
|
|
|
}
|
|
|
|
|
2018-11-12 17:17:30 -08:00
|
|
|
rust_test("test_rs") {
|
|
|
|
source_root = "src/main.rs"
|
|
|
|
extern = main_extern
|
2018-06-10 14:24:39 +02:00
|
|
|
deps = [
|
2018-11-12 17:17:30 -08:00
|
|
|
":deno_deps",
|
2018-06-10 14:24:39 +02:00
|
|
|
]
|
2018-12-13 22:16:58 +01:00
|
|
|
|
|
|
|
# Extract version from Cargo.toml
|
|
|
|
crate_version = deno_cargo_info.version
|
|
|
|
inputs = [
|
|
|
|
"Cargo.toml",
|
|
|
|
]
|
2018-06-10 14:24:39 +02:00
|
|
|
}
|
|
|
|
|
2018-10-23 19:39:31 -04:00
|
|
|
rust_executable("hyper_hello") {
|
|
|
|
source_root = "tools/hyper_hello.rs"
|
|
|
|
extern = [
|
|
|
|
"$rust_build:hyper",
|
|
|
|
"$rust_build:ring",
|
2018-07-16 21:33:57 -04:00
|
|
|
]
|
2018-10-23 19:39:31 -04:00
|
|
|
}
|
|
|
|
|
2018-10-12 08:23:13 +11:00
|
|
|
# Generates the core TypeScript type library for deno that will be
|
|
|
|
# included in the runtime bundle
|
|
|
|
run_node("deno_runtime_declaration") {
|
2018-08-07 13:27:31 -07:00
|
|
|
out_dir = target_gen_dir
|
2018-09-12 10:33:30 -04:00
|
|
|
sources = ts_sources
|
2018-08-07 13:27:31 -07:00
|
|
|
outputs = [
|
2018-10-12 08:23:13 +11:00
|
|
|
"$out_dir/lib/lib.deno_runtime.d.ts",
|
2018-08-07 13:27:31 -07:00
|
|
|
]
|
|
|
|
deps = [
|
|
|
|
":msg_ts",
|
|
|
|
]
|
|
|
|
args = [
|
2018-10-20 10:06:57 -07:00
|
|
|
rebase_path("node_modules/ts-node/dist/bin.js", root_build_dir),
|
2018-10-12 08:23:13 +11:00
|
|
|
"--project",
|
|
|
|
rebase_path("tools/ts_library_builder/tsconfig.json"),
|
|
|
|
rebase_path("tools/ts_library_builder/main.ts", root_build_dir),
|
|
|
|
"--basePath",
|
|
|
|
rebase_path(".", root_build_dir),
|
|
|
|
"--buildPath",
|
2018-08-25 19:04:30 +02:00
|
|
|
rebase_path(root_build_dir, root_build_dir),
|
2018-09-01 07:45:26 -07:00
|
|
|
"--outFile",
|
2018-10-12 08:23:13 +11:00
|
|
|
rebase_path("$out_dir/lib/lib.deno_runtime.d.ts", root_build_dir),
|
|
|
|
"--silent",
|
2018-08-07 13:27:31 -07:00
|
|
|
]
|
2018-10-12 08:23:13 +11:00
|
|
|
if (is_debug) {
|
|
|
|
args += [ "--debug" ]
|
|
|
|
}
|
2018-08-07 13:27:31 -07:00
|
|
|
}
|
|
|
|
|
2018-06-12 03:54:55 +02:00
|
|
|
run_node("bundle") {
|
2018-06-13 14:58:06 +02:00
|
|
|
out_dir = "$target_gen_dir/bundle/"
|
2018-06-10 00:32:04 +02:00
|
|
|
outputs = [
|
2018-06-13 14:58:06 +02:00
|
|
|
out_dir + "main.js",
|
2018-07-22 03:14:52 +02:00
|
|
|
out_dir + "main.js.map",
|
2018-06-12 03:54:55 +02:00
|
|
|
]
|
2018-10-19 23:15:29 +02:00
|
|
|
depfile = out_dir + "main.d"
|
2018-06-12 03:54:55 +02:00
|
|
|
deps = [
|
2018-10-12 08:23:13 +11:00
|
|
|
":deno_runtime_declaration",
|
2018-07-26 13:07:50 +10:00
|
|
|
":msg_ts",
|
2018-06-10 00:32:04 +02:00
|
|
|
]
|
2018-06-12 03:54:55 +02:00
|
|
|
args = [
|
2018-10-19 23:15:29 +02:00
|
|
|
rebase_path("third_party/node_modules/rollup/bin/rollup", root_build_dir),
|
2018-07-22 03:14:52 +02:00
|
|
|
"-c",
|
|
|
|
rebase_path("rollup.config.js", root_build_dir),
|
|
|
|
"-i",
|
2018-07-01 23:37:10 +09:00
|
|
|
rebase_path("js/main.ts", root_build_dir),
|
2018-07-22 03:14:52 +02:00
|
|
|
"-o",
|
|
|
|
rebase_path(out_dir + "main.js", root_build_dir),
|
2018-08-08 10:44:46 -07:00
|
|
|
"--sourcemapFile",
|
|
|
|
rebase_path("."),
|
2018-07-22 03:14:52 +02:00
|
|
|
"--silent",
|
2018-06-12 03:54:55 +02:00
|
|
|
]
|
|
|
|
}
|
2018-06-10 00:32:04 +02:00
|
|
|
|
2018-07-04 14:50:28 -04:00
|
|
|
ts_flatbuffer("msg_ts") {
|
|
|
|
sources = [
|
|
|
|
"src/msg.fbs",
|
|
|
|
]
|
2018-06-10 00:32:04 +02:00
|
|
|
}
|
|
|
|
|
2018-07-23 14:13:12 -04:00
|
|
|
rust_flatbuffer("msg_rs") {
|
|
|
|
sources = [
|
|
|
|
"src/msg.fbs",
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2018-08-10 15:09:28 -04:00
|
|
|
# Generates $target_gen_dir/snapshot_deno.bin
|
2018-12-01 01:53:37 -05:00
|
|
|
snapshot("snapshot_deno") {
|
2018-12-11 13:07:31 -05:00
|
|
|
source_root = "$target_gen_dir/bundle/main.js"
|
2018-06-10 00:32:04 +02:00
|
|
|
deps = [
|
2018-06-12 03:54:55 +02:00
|
|
|
":bundle",
|
2018-06-10 00:32:04 +02:00
|
|
|
]
|
|
|
|
}
|