blob: f905abd3267a6c7acf9dd6bfd69c94145815eb33 [file] [log] [blame]
# Copyright 2019 Google LLC. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
assert(is_fuchsia)
import("//build/fuchsia/sdk.gni")
pkg_dir = target_gen_dir
pkg_name = "skqp_pkg"
fuchsia_package(pkg_name) {
testonly = true
name = pkg_name
version = 0
deps = [
"//:skqp",
"//build/fuchsia",
]
pkg_manifest = "${pkg_dir}/${target_name}.manifest"
}
fuchsia_repo("skqp_repo") {
testonly = true
deps = [
":append_assets_to_manifest",
":base_manifest",
":skqp_pkg",
]
# Put repo directory in out dir (not gen dir).
repo = "$target_out_dir/skqp_repo"
archives = [ "$root_out_dir/far/skqp_pkg.far" ]
}
#
# Base manifest entries (w/o assets) for SKQP.
#
# TODO(rosasco): Convert this group() to generated_file() when a
# sufficiently modern version of gn rolls in.
group("base_manifest") {
base_pkg_manifest = "${pkg_dir}/base_${pkg_name}.manifest"
skqp_exec = rebase_path("${root_out_dir}/skqp")
skqp_path = rebase_path("${target_gen_dir}")
sdk_dist_path = rebase_path("${fuchsia_sdk_path}/arch/${target_cpu}/dist")
sdk_sysroot_dist_path =
rebase_path("${fuchsia_sdk_path}/arch/${target_cpu}/sysroot/dist/lib")
layer_path = rebase_path("${fuchsia_sdk_path}/pkg/vulkan_layers")
skqp_component_manifest = rebase_path("//build/fuchsia/skqp/skqp.cmx")
if (target_cpu == "x64" || target_cpu == "x86_64") {
clang_path =
rebase_path("${fuchsia_toolchain_path}/lib/x86_64-unknown-fuchsia/c++")
} else if (target_cpu == "arm64") {
clang_path =
rebase_path("${fuchsia_toolchain_path}/lib/aarch64-unknown-fuchsia/c++")
} else {
assert(false, "Unknown target cpu for Fuchsia target.")
}
manifest_entries = [
# Binary
"bin/skqp=${skqp_exec}",
# Meta Data
"meta/package=${skqp_path}/meta/package",
"meta/skqp.cmx=${skqp_component_manifest}",
# Shared Libs (clang c++)
"lib/libc++.so.2=${clang_path}/libc++.so.2",
"lib/libc++abi.so.1=${clang_path}/libc++abi.so.1",
"lib/libunwind.so.1=${clang_path}/libunwind.so.1",
# Shared Libs (sdk dist)
"lib/libasync-default.so=${sdk_dist_path}/libasync-default.so",
"lib/libfdio.so=${sdk_dist_path}/libfdio.so",
"lib/libtrace-engine.so=${sdk_dist_path}/libtrace-engine.so",
# Loader
"lib/ld.so.1=${sdk_sysroot_dist_path}/ld.so.1",
# Vulkan ICD / Validation / Loader
"lib/libvulkan.so=${sdk_dist_path}/libvulkan.so",
"lib/VkLayer_khronos_validation.so=${sdk_dist_path}/VkLayer_khronos_validation.so",
"data/vulkan/explicit_layer.d/VkLayer_khronos_validation.json=${layer_path}/data/vulkan/explicit_layer.d/VkLayer_khronos_validation.json",
]
# TODO(rosasco): Add 2 lines when generated_file() switch is implemented
# and remove the 'write_file' below.
# contents = manifest_entries
# outputs = [ base_pkg_manifest ]
write_file(base_pkg_manifest, manifest_entries)
}
#
# Asset manifest entries for SKQP.
#
action("append_assets_to_manifest") {
script = "append_assets_to_manifest"
base_pkg_manifest = "${pkg_dir}/base_${pkg_name}.manifest"
pkg_manifest = "${pkg_dir}/${pkg_name}.manifest"
assets_path = "//platform_tools/android/apps/skqp/src/main/assets"
inputs = [ assets_path ]
outputs = [ pkg_manifest ]
manifest_deps = "$target_out_dir/skqp_manifest.d"
args = [
"--root_dir",
rebase_path(assets_path),
"--base_manifest",
rebase_path(base_pkg_manifest),
"--manifest",
rebase_path(pkg_manifest),
"--deps",
rebase_path(manifest_deps),
"--root_build_dir",
rebase_path(root_out_dir),
]
deps = [ ":base_manifest" ]
depfile = manifest_deps
}