blob: 774a55905f386ec74536b2c4aa70c3e05debeea8 [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.
import("//build/components.gni")
import("//build/dist/packaged_shared_library.gni")
group("lavapipe-vulkan") {
public_deps = [ ":lavapipe_pkg" ]
}
shared_library("libvulkan_lavapipe_fake") {
sources = [ "lavapipe_icd_fake.cc" ]
deps = [
"//sdk/lib/fdio",
"//src/lib/vulkan",
"//zircon/system/ulib/zx",
]
}
shared_library("libvulkan_lavapipe") {
deps = [
"//sdk/lib/fdio",
"//src/lib/llvm:LLVMBitWriter",
"//src/lib/llvm:LLVMCodeGenTypes",
"//src/lib/llvm:LLVMCore",
"//src/lib/llvm:LLVMIRPrinter",
"//src/lib/llvm:LLVMMCDisassembler",
"//src/lib/llvm:LLVMMCJIT",
"//src/lib/llvm:LLVMPasses",
"//src/lib/llvm:LLVMTarget",
"//third_party/mesa/src/gallium/drivers/llvmpipe",
"//third_party/mesa/src/gallium/frontends/lavapipe",
]
if (target_cpu == "arm64") {
deps += [
"//src/lib/llvm:LLVMAArch64CodeGen",
"//src/lib/llvm:LLVMAArch64Disassembler",
"//src/lib/llvm:LLVMAArch64Info",
# TODO(https://fxbug.dev/339107217): the arm64 build shouldn't require these x64-specific libs
"//src/lib/llvm:LLVMX86CodeGen",
"//src/lib/llvm:LLVMX86Disassembler",
"//src/lib/llvm:LLVMX86Info",
]
} else if (target_cpu == "x64") {
deps += [
"//src/lib/llvm:LLVMX86CodeGen",
"//src/lib/llvm:LLVMX86Disassembler",
"//src/lib/llvm:LLVMX86Info",
]
}
}
packaged_shared_library("packaged_libvulkan_lavapipe") {
library = ":libvulkan_lavapipe"
output_name = ":libvulkan_lavapipe"
}
resource("vulkan_metadata") {
sources = [ "metadata.json" ]
outputs = [ "data/metadata.json" ]
}
icd_name = "libvulkan_lavapipe"
manifest_filename = "$target_gen_dir/vulkan/icd.d/$icd_name.json"
# api_version must be present but is unused
icd_data = [
"{",
"\"file_format_version\": \"1.0.0\",",
"\"ICD\": {",
"\"library_path\": \"$icd_name.so\",",
"\"api_version\": \"1.2.248\"",
"}",
"}",
]
write_file(manifest_filename, icd_data)
resource("vulkan_manifest_json") {
sources = [ manifest_filename ]
outputs = [ "data/icd.d/$icd_name.json" ]
}
fuchsia_package_with_single_component("lavapipe_pkg") {
package_name = "libvulkan_lavapipe"
component_name = "vulkan"
deps = [
":libvulkan_lavapipe",
":vulkan_manifest_json",
":vulkan_metadata",
]
manifest = "meta/vulkan.cml"
}