blob: 535abf9a43abba007e447d1ed18af0e32f1fb925 [file] [log] [blame]
# 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")
# 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")
dep_count = 0
foreach(dep, invoker.deps) {
dep_count = dep_count + 1
}
export_dir = "${root_out_dir}/sdk/exported"
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 = "${export_dir}/${dep_name}"
dep_stamp = "${dep_gen_dir}/${dep_name}.exported"
inputs += [ dep_stamp ]
args += [
"--input-directory",
rebase_path(dep_dir, root_build_dir),
]
}
}
copy(target_name) {
forward_variables_from(invoker, [ "testonly" ])
output_archive = "${root_out_dir}/sdk/archive/${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)
},
]
}
}
}