blob: 49108e641430a93319082e25cea6d76eeae09753 [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/compiled_action.gni")
import("//build/host.gni")
import("//build/rust/rustc_binary.gni")
import("//build/testing/golden_file.gni")
import("//tools/cmc/build/cml.gni")
import("//tools/configc/build/config.gni")
if (is_host) {
rustc_binary("configc") {
name = "configc"
deps = [
"//sdk/fidl/fuchsia.component.decl:fuchsia.component.decl-rustc",
"//src/lib/assembly/validate_product",
"//src/lib/fidl/rust/fidl",
"//src/sys/lib/cm_rust",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:argh",
"//third_party/rust_crates:serde_json",
"//third_party/rust_crates:serde_json5",
"//tools/lib/config_client",
"//tools/lib/config_value_file",
]
sources = [
"src/client_cpp.rs",
"src/client_fidl.rs",
"src/client_rust.rs",
"src/cvf.rs",
"src/main.rs",
"src/validate_package.rs",
]
}
}
install_host_tools("install") {
deps = [ ":configc($host_toolchain)" ]
outputs = [ "configc" ]
}
# Config Library Golden Tests
cm("config_manifest") {
manifest = "goldens/config_manifest.cml"
output_name = "config_manifest.cm"
restricted_features = [ "structured_config" ]
config_values_package_path = "goldens/config_values.json5"
}
fidl_config_client_lib_source("fidl_config_lib") {
manifest_outputs = get_target_outputs(":config_manifest")
compiled_manifest = manifest_outputs[0]
name = "my.config.lib"
deps = [ ":config_manifest" ]
testonly = true
}
rust_config_client_lib_source("rust_config_lib") {
manifest_outputs = get_target_outputs(":config_manifest")
compiled_manifest = manifest_outputs[0]
fidl_library_name = "my.config.lib"
deps = [ ":config_manifest" ]
testonly = true
}
cpp_config_client_lib_source("cpp_elf_config_lib") {
manifest_outputs = get_target_outputs(":config_manifest")
compiled_manifest = manifest_outputs[0]
fidl_library_name = "my.config.lib"
deps = [ ":config_manifest" ]
flavor = "elf"
testonly = true
}
cpp_config_client_lib_source("cpp_driver_config_lib") {
manifest_outputs = get_target_outputs(":config_manifest")
compiled_manifest = manifest_outputs[0]
fidl_library_name = "my.config.lib"
deps = [ ":config_manifest" ]
flavor = "driver"
testonly = true
}
golden_file("fidl_config_lib_golden_test") {
golden = "goldens/config.fidl.golden"
lib_outputs = get_target_outputs(":fidl_config_lib")
current = lib_outputs[0]
deps = [ ":fidl_config_lib" ]
testonly = true
}
golden_file("rust_config_lib_golden_test") {
golden = "goldens/config.rs.golden"
lib_outputs = get_target_outputs(":rust_config_lib")
current = lib_outputs[0]
deps = [ ":rust_config_lib" ]
testonly = true
}
golden_file("cpp_elf_config_lib_cc_golden_test") {
golden = "goldens/config.cc.elf.golden"
lib_outputs = get_target_outputs(":cpp_elf_config_lib")
current = lib_outputs[0]
deps = [ ":cpp_elf_config_lib" ]
testonly = true
}
golden_file("cpp_elf_config_lib_h_golden_test") {
golden = "goldens/config.h.elf.golden"
lib_outputs = get_target_outputs(":cpp_elf_config_lib")
current = lib_outputs[1]
deps = [ ":cpp_elf_config_lib" ]
testonly = true
}
golden_file("cpp_driver_config_lib_cc_golden_test") {
golden = "goldens/config.cc.driver.golden"
lib_outputs = get_target_outputs(":cpp_driver_config_lib")
current = lib_outputs[0]
deps = [ ":cpp_driver_config_lib" ]
testonly = true
}
golden_file("cpp_driver_config_lib_h_golden_test") {
golden = "goldens/config.h.driver.golden"
lib_outputs = get_target_outputs(":cpp_driver_config_lib")
current = lib_outputs[1]
deps = [ ":cpp_driver_config_lib" ]
testonly = true
}
group("tests") {
testonly = true
deps = [
":cpp_driver_config_lib_cc_golden_test",
":cpp_driver_config_lib_h_golden_test",
":cpp_elf_config_lib_cc_golden_test",
":cpp_elf_config_lib_h_golden_test",
":fidl_config_lib_golden_test",
":rust_config_lib_golden_test",
]
}
if (is_host) {
group("host_tests") {
testonly = true
deps = [ "tests:fail_validate_without_config" ]
}
}