| /* |
| * Copyright (C) 2023 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package { |
| // See: http://go/android-license-faq |
| default_applicable_licenses: ["hardware_google_gfxstream_license"], |
| } |
| |
| genrule { |
| name: "gfxstream_vk_entrypoints_header", |
| srcs: [":libmesa_vulkan_xml_gfxstream"], |
| out: ["gfxstream_vk_entrypoints.h"], |
| tools: ["vk_entrypoints_gen_gfxstream"], |
| cmd: "python3 $(location vk_entrypoints_gen_gfxstream) --xml " + |
| "$(location :libmesa_vulkan_xml_gfxstream) --proto --weak --out-h " + |
| "$(location gfxstream_vk_entrypoints.h) --out-c " + |
| "$(genDir)/placeholder.c --prefix gfxstream_vk --beta false", |
| } |
| |
| genrule { |
| name: "gfxstream_vk_entrypoints_impl", |
| srcs: [":libmesa_vulkan_xml_gfxstream"], |
| out: ["gfxstream_vk_entrypoints.c"], |
| tools: ["vk_entrypoints_gen_gfxstream"], |
| cmd: "python3 $(location vk_entrypoints_gen_gfxstream) --xml " + |
| "$(location :libmesa_vulkan_xml_gfxstream) --proto --weak --out-h " + |
| "$(genDir)/gfxstream_vk_entrypoints.h --out-c " + |
| "$(location gfxstream_vk_entrypoints.c) --prefix gfxstream_vk " + |
| "--beta false", |
| } |
| |
| cc_library_static { |
| name: "libgfxstream_guest_vulkan_entrypoints", |
| host_supported: true, |
| vendor: true, |
| defaults: [ |
| "mesa_common_defaults_gfxstream", |
| ], |
| header_libs: [ |
| "mesa_common_headers_gfxstream", |
| ], |
| static_libs: [ |
| "libmesa_vulkan_util_gfxstream", |
| ], |
| shared_libs: [ |
| "libcutils", |
| ], |
| generated_headers: [ |
| "gfxstream_vk_entrypoints_header", |
| ], |
| generated_sources: [ |
| "gfxstream_vk_entrypoints_impl", |
| ], |
| ldflags: [ |
| "-Wl,-Bsymbolic", |
| "-Wl,--gc-sections", |
| ], |
| export_generated_headers: [ |
| "gfxstream_vk_entrypoints_header", |
| ], |
| } |
| |
| cc_library_headers { |
| name: "vulkan_enc_headers", |
| export_include_dirs: ["."], |
| host_supported: true, |
| vendor_available: true, |
| } |
| |
| filegroup { |
| name: "vulkan_enc_impl", |
| srcs: [ |
| "AndroidHardwareBuffer.cpp", |
| "CommandBufferStagingStream.cpp", |
| "DescriptorSetVirtualization.cpp", |
| "func_table.cpp", |
| "goldfish_vk_counting_guest.cpp", |
| "goldfish_vk_deepcopy_guest.cpp", |
| "goldfish_vk_extension_structs_guest.cpp", |
| "goldfish_vk_marshaling_guest.cpp", |
| "goldfish_vk_reserved_marshaling_guest.cpp", |
| "goldfish_vk_transform_guest.cpp", |
| "HostVisibleMemoryVirtualization.cpp", |
| "Resources.cpp", |
| "ResourceTracker.cpp", |
| "Validation.cpp", |
| "VkEncoder.cpp", |
| "VulkanHandleMapping.cpp", |
| "VulkanStreamGuest.cpp", |
| "gfxstream_vk_private.cpp", |
| ], |
| } |
| |
| cc_defaults { |
| name: "libgfxstream_guest_vulkan_encoder_defaults", |
| host_supported: true, |
| vendor: true, |
| defaults: [ |
| "libgfxstream_guest_cc_defaults", |
| ], |
| header_libs: [ |
| "libgfxstream_vulkan_headers", |
| "libOpenglSystemCommonHeaders", |
| "libgfxstream_guest_iostream", |
| "libnativewindow_headers", |
| "mesa_common_headers_gfxstream", |
| ], |
| generated_headers: [ |
| "vk_cmd_queue_header_gfxstream", |
| "vk_physical_device_features_header_gfxstream", |
| "vk_physical_device_properties_header_gfxstream", |
| "u_format_pack_header_gfxstream", |
| ], |
| shared_libs: [ |
| "libcutils", |
| "liblog", |
| "libOpenglCodecCommon", |
| ], |
| static_libs: [ |
| "libarect", |
| "libdrm", |
| "libgfxstream_androidemu_static", |
| "libGoldfishAddressSpace", |
| "libmesa_vulkan_util_gfxstream", |
| "libmesa_vulkan_runtime_gfxstream", |
| "libgfxstream_guest_android", |
| "libgfxstream_guest_vulkan_entrypoints", |
| "libmesa_util_gfxstream", |
| "libmesa_util_format_gfxstream", |
| "libmesa_util_c11_gfxstream", |
| ], |
| cflags: [ |
| "-DLOG_TAG=\"goldfish_vulkan\"", |
| "-DVK_ANDROID_native_buffer", |
| "-DVK_EXT_device_memory_report", |
| "-DVK_GOOGLE_gfxstream", |
| "-DVK_NO_PROTOTYPES", |
| "-DVK_USE_PLATFORM_ANDROID_KHR", |
| "-fstrict-aliasing", |
| "-Werror", |
| "-Wno-missing-field-initializers", |
| "-Wno-unused-parameter", |
| "-DHAVE_PTHREAD=1", |
| "-DHAVE_TIMESPEC_GET", |
| "-DHAVE_STRUCT_TIMESPEC", |
| ], |
| srcs: [ |
| ":vulkan_enc_impl", |
| ], |
| export_include_dirs: [ |
| ".", |
| ], |
| ldflags: [ |
| // Mesa always adds Bsymbolic when available (see 'ld_args_bsymbolic' in Meson build). Duplicate that |
| // behavior here. '--gc-sections' has stronger justification: this lets drivers drop |
| // shared code unused by that specific driver (particularly relevant for Vulkan drivers). |
| "-Wl,-Bsymbolic", |
| "-Wl,--gc-sections", |
| ], |
| target: { |
| android: { |
| shared_libs: [ |
| "libnativewindow", |
| ], |
| header_libs: [ |
| "hwvulkan_headers", |
| ], |
| }, |
| }, |
| } |
| |
| cc_library_static { |
| name: "libvulkan_enc", |
| defaults: [ |
| "libgfxstream_guest_vulkan_encoder_defaults", |
| ], |
| static_libs: [ |
| "libplatform", |
| ], |
| } |
| |
| cc_library_static { |
| name: "libgfxstream_guest_vulkan_encoder_with_host", |
| defaults: [ |
| "libgfxstream_guest_vulkan_encoder_defaults", |
| ], |
| static_libs: [ |
| "libgfxstream_platform_rutabaga", |
| ], |
| export_static_lib_headers: [ |
| "libgfxstream_platform_rutabaga", |
| ], |
| target: { |
| host: { |
| compile_multilib: "64", |
| }, |
| android: { |
| compile_multilib: "64", |
| }, |
| }, |
| } |