blob: c8b0722b56da4eccc7bfd07c3bb8eb57609e0b1f [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/rustc_artifact.gni") # for rustc_third_party_artifact
import("//build/rust/config.gni") # for rust_build_{args,deps,inputs}
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 ]
}