blob: 52ae5598527486c7da58b475ae7f07133e75ed58 [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") {
edition = "2021"
name = "configc"
deps = [
"//sdk/fidl/fuchsia.component.config:fuchsia.component.config-rustc",
"//sdk/fidl/fuchsia.component.decl:fuchsia.component.decl-rustc",
"//src/lib/assembly/validate_product",
"//src/lib/fidl/rust/fidl",
"//src/sys/lib/cm_rust",
"//src/sys/lib/config_encoder",
"//src/sys/pkg/lib/fuchsia-pkg",
"//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/common.rs",
"src/cvf.rs",
"src/dump_values.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"
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
}
_cm = get_target_outputs(":config_manifest")
_cm = _cm[0]
cvf("example_values") {
cm = _cm
value_file = "goldens/config_values.json5"
deps = [ ":config_manifest" ]
}
_cvf = get_target_outputs(":example_values")
_cvf = _cvf[0]
_dumped_values = "$target_out_dir/dumped_values.json"
dump_structured_config("dump_example_values") {
cm = _cm
cvf = _cvf
output = _dumped_values
deps = [
":config_manifest",
":example_values",
]
}
golden_file("value_dump_golden_test") {
golden = "goldens/dumped_values.json.golden"
current = _dumped_values
deps = [ ":dump_example_values" ]
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",
":value_dump_golden_test",
]
}
if (is_host) {
group("host_tests") {
testonly = true
deps = [ "tests:fail_validate_without_config" ]
}
}