blob: eb758d3d0cc65b2152b993e9f99b97bae7cc1c29 [file] [log] [blame] [edit]
# Copyright 2019 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("config.gni")
# Location of all exported SDK directories.
#
# Each exported SDK directory follows the IDK layout (and thus includes its
# own top-level meta/manifest.json which lists all SDK atoms in that
# directory).
#
_sdk_export_dir = "${root_out_dir}/sdk/exported"
# Location of all SDK archives.
#
_sdk_archive_dir = "${root_out_dir}/sdk/archive"
# Aggregates multiple SDKs into a single archive.
#
# Parameters
#
# deps (required)
# List of labels representing SDKs to merge.
# A label may point to an `sdk` instance.
template("merged_sdk") {
assert(defined(invoker.deps), "Must define a 'deps' parameter")
assert(invoker.deps != [], "'deps' may not be empty")
merged_target = "${target_name}.generate"
merged_archive = "$target_gen_dir/$target_name.tgz"
merged_stamp = "$target_gen_dir/$target_name.stamp"
action(merged_target) {
forward_variables_from(invoker, [ "testonly" ])
script = "//scripts/sdk/merger/merge.py"
# Fuchsia infra/3pp prebuilts are not currently available for arm mac.
if (is_mac && host_cpu == "arm64") {
inputs = []
} else {
inputs = [ "//prebuilt/third_party/pigz/pigz" ]
}
outputs = [
merged_archive,
merged_stamp,
]
depfile = merged_archive + ".d"
args = [
"--output-archive",
rebase_path(merged_archive, root_build_dir),
"--stamp-file",
rebase_path(merged_stamp, root_build_dir),
"--depfile",
rebase_path(depfile, root_build_dir),
]
deps = invoker.deps
foreach(dep, invoker.deps) {
dep_name = get_label_info(dep, "name")
dep_gen_dir = get_label_info(dep, "target_gen_dir")
dep_dir = "${_sdk_export_dir}/${dep_name}"
args += [
"--input-directory",
rebase_path(dep_dir, root_build_dir),
]
}
}
copy(target_name) {
forward_variables_from(invoker, [ "testonly" ])
output_archive = "${_sdk_archive_dir}/${target_name}.tar.gz"
sources = [ merged_archive ]
outputs = [ output_archive ]
public_deps = [ ":$merged_target" ]
metadata = {
sdk_archives = [
{
name = target_name
os = current_os
cpu = current_cpu
label = get_label_info(":$target_name", "label_with_toolchain")
path = rebase_path(output_archive, root_build_dir)
},
]
}
}
}