blob: 1e5e3043bf687f982757080dbbb2d2d1002df930 [file] [log] [blame]
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/clang/clang.gni")
import("//build/rust/config.gni") # for rust_build_{args,deps,inputs}
import("//build/rust/rustc_artifact.gni") # for rustc_third_party_artifact
third_party_lock = "//third_party/rust_crates/Cargo.lock"
third_party_toml = "//third_party/rust_crates/Cargo.toml"
fuchsia_cprng_dir = "//garnet/public/rust/fuchsia-cprng"
fuchsia_cprng_src =
exec_script("//build/rust/list_files_in_dir.py",
[
"--dir",
rebase_path("${fuchsia_cprng_dir}/src"),
],
"list lines",
# lib.rs will contain `mod` statements for all top-level files
[ rebase_path("${fuchsia_cprng_dir}/src/lib.rs") ])
third_party_crate_names = exec_script("//build/rust/list_3p_crates.py",
[
"--cargo-toml",
rebase_path(third_party_toml),
],
"list lines",
[ third_party_toml ])
foreach(crate_name, third_party_crate_names) {
rustc_third_party_artifact(crate_name) {
crate_name = crate_name
}
}
# This target is implicitly depended upon by every
# rustc_artifact (rustc_binary or rustc_library) target
action("build-third-party") {
script = "//build/rust/compile_3p_crates.py"
inputs = [
third_party_lock,
third_party_toml,
]
inputs += fuchsia_cprng_src
out_dir = "${root_out_dir}/rust_third_party_crates"
out_deps_data = "${out_dir}/deps_data.json"
args = [
"--cargo",
rebase_path("${rustc_prefix}/cargo"),
"--crate-root",
rebase_path("//third_party/rust_crates"),
"--out-dir",
rebase_path(out_dir),
"--out-deps-data",
rebase_path(out_deps_data),
]
args += rust_build_args
deps = rust_build_deps
inputs += rust_build_inputs
outputs = [
out_deps_data,
]
}