| # 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" |
| } |