summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-07-02 10:59:29 +0200
committerRyan Dahl <ry@tinyclouds.org>2018-07-04 14:24:25 +0200
commit15d6541d4d276c7e36c1d0a42292c85682ddeb25 (patch)
treec4d1fe56953b27733736132daf97ea0e0cbe3129
parent693e43e421ea95193a69b06ceaedbad9ade854da (diff)
Separate deno.gni and rust.gni and clean up.
Put rust depfile in target_out_dir because the depfile isn't in the outputs, the gen directory doesn't get created. Prefix rlib files with lib.
-rw-r--r--.travis.yml3
-rw-r--r--BUILD.gn1
-rw-r--r--deno.gni137
-rw-r--r--rust.gni136
-rwxr-xr-xtools/format.sh1
5 files changed, 139 insertions, 139 deletions
diff --git a/.travis.yml b/.travis.yml
index c1aa20a06..2a4556782 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -43,8 +43,7 @@ install:
- gn args $BUILD_PATH --list
- ccache -s
# Travis hangs without -j2 argument to ninja.
- - ninja -j2 -C $BUILD_PATH mock_runtime_test mock_main
- - ninja -j2 -C $BUILD_PATH deno
+ - ninja -j2 -C $BUILD_PATH mock_runtime_test mock_main deno
script:
- $BUILD_PATH/mock_runtime_test
- $BUILD_PATH/mock_main foo bar
diff --git a/BUILD.gn b/BUILD.gn
index ebdf7b25d..3785042ec 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -2,6 +2,7 @@ import("//third_party/protobuf/proto_library.gni")
import("//third_party/v8/gni/v8.gni")
import("//third_party/v8/snapshot_toolchain.gni")
import("deno.gni")
+import("rust.gni")
config("deno_config") {
include_dirs = [ "third_party/v8" ] # This allows us to v8/src/base/ libraries.
diff --git a/deno.gni b/deno.gni
index 75fb6c887..a8804e9f9 100644
--- a/deno.gni
+++ b/deno.gni
@@ -50,140 +50,3 @@ template("create_snapshot") {
]
}
}
-
-template("rust_crate") {
- action(target_name) {
- forward_variables_from(invoker,
- [
- "cfg",
- "crate_type",
- "source_root",
- "deps",
- "rust_deps",
- ])
- sources = [
- source_root,
- ]
- outputs = []
- depfile = "$target_gen_dir/$target_name.d"
- script = "//third_party/v8/tools/run.py"
-
- args = [
- "rustc",
- rebase_path(source_root, root_build_dir),
- "--crate-name=$target_name",
- "--crate-type=$crate_type",
- "--emit=dep-info=" + rebase_path(depfile, root_build_dir),
- ]
-
- # We only use staticlib for the special "empty" lib.
- if (crate_type == "staticlib") {
- staticlib = "$target_out_dir/$target_name.a"
- outputs += [ staticlib ]
- args += [ "--emit=link=" + rebase_path(staticlib, root_build_dir) ]
- }
-
- if (crate_type == "rlib" || crate_type == "bin") {
- obj = "$target_out_dir/$target_name.o"
- outputs += [ obj ]
- args += [ "--emit=obj=" + rebase_path(obj, root_build_dir) ]
- }
-
- if (crate_type == "rlib") {
- rlib = "$target_out_dir/$target_name.rlib"
- outputs += [ rlib ]
- args += [ "--emit=link=" + rebase_path(rlib, root_build_dir) ]
- }
-
- if (is_debug) {
- args += [ "-g" ]
- }
-
- if (is_official_build) {
- args += [ "-O" ]
- }
-
- if (defined(cfg)) {
- foreach(c, cfg) {
- args += [
- "--cfg",
- c,
- ]
- }
- }
-
- if (!defined(deps)) {
- deps = []
- }
-
- if (defined(rust_deps)) {
- deps += rust_deps
- foreach(dep_label, rust_deps) {
- dep_name = get_label_info(dep_label, "name")
- dep_dir = get_label_info(dep_label, "target_out_dir")
- dep_rlib = "$dep_dir/$dep_name.rlib"
- args += [
- "--extern",
- "$dep_name=" + rebase_path(dep_rlib, root_build_dir),
- ]
- }
- }
- }
-}
-
-template("rust_library") {
- rust_crate(target_name) {
- crate_type = "rlib"
- forward_variables_from(invoker, "*")
- }
-}
-
-template("rust_executable") {
- bin_target = target_name + "_bin"
- rust_crate(bin_target) {
- crate_type = "bin"
- forward_variables_from(invoker, "*")
- }
-
- # By compiling an empty file as crate-type=staticlib we get all the code
- # for the rust stdlib, which are not included in the object file outputs
- # of other libs.
- stdlib_target = target_name + "_stdlib"
- rust_crate(stdlib_target) {
- crate_type = "staticlib"
- source_root = "src/empty.rs"
- }
-
- executable(target_name) {
- forward_variables_from(invoker, "*")
-
- if (!defined(deps)) {
- deps = []
- }
-
- deps += [
- ":" + bin_target,
- ":" + stdlib_target,
- ]
-
- libs = get_target_outputs(":" + bin_target) +
- get_target_outputs(":" + stdlib_target)
-
- if (defined(rust_deps)) {
- deps += rust_deps
- foreach(dep_label, rust_deps) {
- dep_name = get_label_info(dep_label, "name")
- dep_dir = get_label_info(dep_label, "target_out_dir")
- dep_obj = "$dep_dir/$dep_name.o"
- libs += [ dep_obj ]
- }
- }
-
- if (current_os == "mac") {
- libs += [ "resolv" ]
- }
- if (current_os == "win") {
- libs += [ "userenv.lib" ]
- }
- }
-}
diff --git a/rust.gni b/rust.gni
new file mode 100644
index 000000000..218ab1299
--- /dev/null
+++ b/rust.gni
@@ -0,0 +1,136 @@
+template("rust_crate") {
+ action(target_name) {
+ forward_variables_from(invoker,
+ [
+ "cfg",
+ "crate_type",
+ "source_root",
+ "deps",
+ "rust_deps",
+ ])
+ sources = [
+ source_root,
+ ]
+ outputs = []
+ depfile = "$target_out_dir/$target_name.d"
+ script = "//third_party/v8/tools/run.py"
+
+ args = [
+ "rustc",
+ rebase_path(source_root, root_build_dir),
+ "--crate-name=$target_name",
+ "--crate-type=$crate_type",
+ "--emit=dep-info=" + rebase_path(depfile, root_build_dir),
+ ]
+
+ # We only use staticlib for the special "empty" lib.
+ if (crate_type == "staticlib") {
+ staticlib = "$target_out_dir/$target_name.a"
+ outputs += [ staticlib ]
+ args += [ "--emit=link=" + rebase_path(staticlib, root_build_dir) ]
+ }
+
+ if (crate_type == "rlib" || crate_type == "bin") {
+ obj = "$target_out_dir/$target_name.o"
+ outputs += [ obj ]
+ args += [ "--emit=obj=" + rebase_path(obj, root_build_dir) ]
+ }
+
+ if (crate_type == "rlib") {
+ rlib = "$target_out_dir/lib$target_name.rlib"
+ outputs += [ rlib ]
+ args += [ "--emit=link=" + rebase_path(rlib, root_build_dir) ]
+ }
+
+ if (is_debug) {
+ args += [ "-g" ]
+ }
+
+ if (is_official_build) {
+ args += [ "-O" ]
+ }
+
+ if (defined(cfg)) {
+ foreach(c, cfg) {
+ args += [
+ "--cfg",
+ c,
+ ]
+ }
+ }
+
+ if (!defined(deps)) {
+ deps = []
+ }
+
+ if (defined(rust_deps)) {
+ deps += rust_deps
+ foreach(dep_label, rust_deps) {
+ dep_name = get_label_info(dep_label, "name")
+ dep_dir = get_label_info(dep_label, "target_out_dir")
+ dep_rlib = "$dep_dir/lib$dep_name.rlib"
+ args += [
+ "--extern",
+ "$dep_name=" + rebase_path(dep_rlib, root_build_dir),
+ ]
+ }
+ }
+ }
+}
+
+template("rust_library") {
+ rust_crate(target_name) {
+ crate_type = "rlib"
+ forward_variables_from(invoker, "*")
+ }
+}
+
+template("rust_executable") {
+ bin_target = target_name + "_bin"
+ rust_crate(bin_target) {
+ crate_type = "bin"
+ forward_variables_from(invoker, "*")
+ }
+
+ # By compiling an empty file as crate-type=staticlib we get all the code
+ # for the rust stdlib, which are not included in the object file outputs
+ # of other libs.
+ stdlib_target = target_name + "_stdlib"
+ rust_crate(stdlib_target) {
+ crate_type = "staticlib"
+ source_root = "src/empty.rs"
+ }
+
+ executable(target_name) {
+ forward_variables_from(invoker, "*")
+
+ if (!defined(deps)) {
+ deps = []
+ }
+
+ deps += [
+ ":" + bin_target,
+ ":" + stdlib_target,
+ ]
+
+ libs = get_target_outputs(":" + bin_target) +
+ get_target_outputs(":" + stdlib_target)
+
+ if (defined(rust_deps)) {
+ deps += rust_deps
+ foreach(dep_label, rust_deps) {
+ dep_name = get_label_info(dep_label, "name")
+ dep_dir = get_label_info(dep_label, "target_out_dir")
+ dep_obj = "$dep_dir/$dep_name.o"
+ libs += [ dep_obj ]
+ }
+ }
+
+ if (current_os == "mac") {
+ libs += [ "resolv" ]
+ }
+ if (current_os == "win") {
+ libs += [ "userenv.lib" ]
+ }
+ }
+}
diff --git a/tools/format.sh b/tools/format.sh
index eb5a0b307..1225ac08a 100755
--- a/tools/format.sh
+++ b/tools/format.sh
@@ -5,6 +5,7 @@ clang-format -i -style Google src/*.cc src/*.h src/include/*.h
gn format BUILD.gn
gn format deno.gni
+gn format rust.gni
gn format .gn
yapf -i js/*.py