| # Copyright 2020 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/components.gni") |
| import("//build/config.gni") |
| |
| # Example: |
| # ``` |
| # audio_core_config_test("foo-audio-core-config-test") { |
| # config_sources = [ |
| # "//path/to/audio_core_config.json", |
| # ] |
| # policy_sources = [ |
| # "//path/to/audio_policy.json", |
| # ] |
| # package_name = "foo-audio-core-config-test" |
| # } |
| # ``` |
| # |
| # Parameters |
| # config_sources (required) |
| # A list of paths to audio_core_config.json files. |
| # Type: list (string) |
| # |
| # policy_sources (required) |
| # A list of paths to audio_policy.json files. |
| # Type: list (string) |
| # |
| # package_name (optional) |
| # The name of the package to create. |
| # Type: string |
| # Default: $target_name |
| # |
| template("audio_core_config_test") { |
| assert(defined(invoker.config_sources)) |
| |
| package_name = target_name |
| if (defined(invoker.package_name)) { |
| package_name = invoker.package_name |
| } |
| |
| test_config_resource = "${target_name}_config_resource" |
| resource(test_config_resource) { |
| visibility = [ ":*" ] |
| testonly = true |
| sources = invoker.config_sources |
| outputs = [ "audio_core_config/{{source_file_part}}" ] |
| } |
| |
| if (defined(invoker.policy_sources)) { |
| test_policy_resource = "${target_name}_policy_resource" |
| resource(test_policy_resource) { |
| visibility = [ ":*" ] |
| testonly = true |
| sources = invoker.policy_sources |
| outputs = [ "audio_policy/{{source_file_part}}" ] |
| } |
| } |
| |
| fuchsia_unittest_package(target_name) { |
| deps = [ |
| ":${test_config_resource}", |
| "//src/media/audio/audio_core/shared/config_validator", |
| ] |
| if (defined(invoker.policy_sources)) { |
| deps += [ ":${test_policy_resource}" ] |
| } |
| } |
| } |
| |
| # Example: |
| # ``` |
| # audio_core_config("foo_audio_core_config") { |
| # for_pkg = "audio_core" |
| # config = "//path/to/audio_core_config.json" |
| # policy = "//path/to/audio_policy.json" |
| # test_package_name = "foo-audio-core-config-test" |
| # } |
| # ``` |
| # |
| # Parameters |
| # for_pkg (required) |
| # The name of the audio_core package. |
| # Type: string |
| # |
| # config (required) |
| # The path of an audio_core_config.json file. |
| # Type: string |
| # |
| # policy (optional) |
| # The path of an audio_policy.json file. |
| # Type: string |
| # |
| # test_package_name(required) |
| # The package name of a fuchsia_unittest_package. This test package will validate that |
| # `config` can be loaded by audio_core. |
| # Type: string |
| # |
| template("audio_core_config") { |
| assert(defined(invoker.for_pkg)) |
| assert(defined(invoker.config)) |
| assert(defined(invoker.test_package_name)) |
| |
| # Add the config-data for the audio_core package. |
| config_data(target_name + "-config") { |
| forward_variables_from(invoker, |
| [ |
| "testonly", |
| "for_pkg", |
| ]) |
| sources = [ invoker.config ] |
| outputs = [ "audio_core_config.json" ] |
| } |
| if (defined(invoker.policy)) { |
| config_data(target_name + "-policy") { |
| forward_variables_from(invoker, |
| [ |
| "testonly", |
| "for_pkg", |
| ]) |
| sources = [ invoker.policy ] |
| outputs = [ "audio_policy.json" ] |
| } |
| } |
| group(target_name) { |
| deps = [ ":${target_name}-config" ] |
| if (defined(invoker.policy)) { |
| deps += [ ":${target_name}-policy" ] |
| } |
| } |
| |
| audio_core_config_test(invoker.test_package_name) { |
| config_sources = [ invoker.config ] |
| if (defined(invoker.policy)) { |
| policy_sources = [ invoker.policy ] |
| } |
| } |
| } |