From 15d6541d4d276c7e36c1d0a42292c85682ddeb25 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 2 Jul 2018 10:59:29 +0200 Subject: [PATCH] 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. --- .travis.yml | 3 +- BUILD.gn | 1 + deno.gni | 137 ------------------------------------------------ rust.gni | 136 +++++++++++++++++++++++++++++++++++++++++++++++ tools/format.sh | 1 + 5 files changed, 139 insertions(+), 139 deletions(-) create mode 100644 rust.gni diff --git a/.travis.yml b/.travis.yml index c1aa20a069..2a45567820 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 ebdf7b25d2..3785042ec4 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 75fb6c8879..a8804e9f93 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 0000000000..218ab12992 --- /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 eb5a0b3074..1225ac08a4 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