blob: 64e24287a92098d7ac362fc0ab77fdf3b8372b1e [file] [log] [blame]
# Copyright 2023 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.
#
# atom_target:
#
# manifest_target:
# manifest_file:
#
template("sdk_verify_runtime_deps") {
# Collect all sdk_runtime_deps metadata entry from the dependencies of
# `atom_target`. The metadata.sdk_runtime_deps list entries should be scopes
# describing shared libraries, with the following schema:
#
# label: the GN label that defines the shared library target, including
# its toolchain suffix, e.g.
# '//sdk/lib/fdio:fdio(//build/toolchain/fuchsa:x64-shared)'
#
# source: (optional) the source path to the shared library binary,
# relative to the build directory (e.g. 'x64-shared/libfdio.so').
# This MUST ONLY be set for regular shared_library() instances
# (i.e. not those from sdk_shared_library()).
#
# sdk_id: (optional) the SDK atom id that generates the library
# (e.g. '//pkg:fdio'). This MUST ONLY be set for sdk_shared_library()
# targets, and not regular shared_library() ones.
#
_runtime_deps_file = "${target_gen_dir}/${target_name}.sdk_runtime_deps"
_runtime_deps_target = "${target_name}_runtime_deps"
generated_file(_runtime_deps_target) {
deps = [ invoker.atom_target ]
outputs = [ _runtime_deps_file ]
output_conversion = "json"
data_keys = [ "sdk_runtime_deps" ]
walk_keys = [ "sdk_runtime_deps_barrier" ]
}
action(target_name) {
script = "//build/cpp/verify_runtime_deps.py"
inputs = [
invoker.manifest_file,
_runtime_deps_file,
]
outputs = [ "${target_gen_dir}/${target_name}.gn_stamp" ]
args = [
"--sdk-runtime-deps",
rebase_path(_runtime_deps_file, root_build_dir),
"--sdk-manifest",
rebase_path(invoker.manifest_file, root_build_dir),
"--stamp-file",
rebase_path(outputs[0], root_build_dir),
]
deps = [
":${_runtime_deps_target}",
invoker.manifest_target,
]
}
}