| // | |
| // Copyright (C) 2018 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 { | |
| // http://go/android-license-faq | |
| // A large-scale-change added 'default_applicable_licenses' to import | |
| // the below license kinds from "external_swiftshader_license": | |
| // SPDX-license-identifier-Apache-2.0 | |
| // SPDX-license-identifier-BSD | |
| default_applicable_licenses: ["external_swiftshader_license"], | |
| } | |
| cc_defaults { | |
| name: "libswiftshadervk_llvm_defaults", | |
| host_supported: true, | |
| header_libs: [ | |
| "swiftshader_platform_headers", | |
| ], | |
| srcs: [ | |
| "Reactor/Assert.cpp", | |
| "Reactor/CPUID.cpp", | |
| "Reactor/Debug.cpp", | |
| "Reactor/ExecutableMemory.cpp", | |
| "Reactor/LLVMJIT.cpp", | |
| "Reactor/LLVMReactor.cpp", | |
| "Reactor/Pragma.cpp", | |
| "Reactor/Reactor.cpp", | |
| "Reactor/SIMD.cpp", | |
| ], | |
| cflags: [ | |
| "-DREACTOR_ANONYMOUS_MMAP_NAME=swiftshader_jit", | |
| "-Wno-unused-parameter", | |
| "-Wno-implicit-fallthrough", | |
| // This warning can be re-enabled after updating to newer llvm version. | |
| "-Wno-unnecessary-virtual-specifier", | |
| ], | |
| static_libs: [ | |
| "libLLVM16_swiftshader", | |
| ], | |
| shared_libs: [ | |
| "libcutils", | |
| "liblog", | |
| ], | |
| // Pinning the repo to C++20 because LLVM 16 has many forward declarations | |
| // without full type being defined which causes issues with C++23 | |
| cpp_std: "c++20", | |
| } | |
| cc_library_static { | |
| name: "libswiftshadervk_llvm", | |
| vendor: true, | |
| defaults: [ "libswiftshadervk_llvm_defaults" ], | |
| } | |
| cc_library_static { | |
| name: "libswiftshadervk_llvm_debug", | |
| vendor: true, | |
| defaults: [ "libswiftshadervk_llvm_defaults" ], | |
| cflags: [ | |
| "-UNDEBUG", | |
| ], | |
| } | |
| genrule { | |
| name: "commit_header", | |
| out: ["commit.h"], | |
| tool_files: ["commit_id.py"], | |
| cmd: "$(location commit_id.py) gen $(genDir)/commit.h", | |
| } | |
| cc_defaults { | |
| name: "libvk_swiftshader_defaults", | |
| host_supported: true, | |
| vendor: true, | |
| defaults: [ "swiftshader_common" ], | |
| cflags: [ | |
| "-D_GNU_SOURCE", | |
| "-D__STDC_LIMIT_MACROS", | |
| "-D__STDC_CONSTANT_MACROS", | |
| "-D__STDC_FORMAT_MACROS", | |
| "-Wno-implicit-fallthrough", | |
| "-Wno-unused-parameter", | |
| "-Wno-unused-local-typedef", | |
| "-Wno-missing-field-initializers", | |
| // Enable to output commit hash when SwiftShader is initialized | |
| //"-DENABLE_BUILD_VERSION_OUTPUT", | |
| ], | |
| cppflags: [ | |
| "-Wno-sign-promo", | |
| "-Wno-non-virtual-dtor", | |
| ], | |
| ldflags: [ | |
| // -Bsymbolic binds symbol references to their global definitions within | |
| // a shared object, thereby preventing symbol preemption. | |
| "-Wl,-Bsymbolic", | |
| ], | |
| local_include_dirs: [ "Vulkan" ], | |
| generated_headers: [ "commit_header" ], | |
| target: { | |
| android: { | |
| relative_install_path: "hw", | |
| header_libs: [ | |
| "swiftshader_platform_headers", | |
| "vulkan_headers", | |
| "hwvulkan_headers", | |
| ], | |
| shared_libs: [ | |
| "android.hardware.graphics.mapper@3.0", | |
| "android.hardware.graphics.mapper@4.0", | |
| "libnativewindow", | |
| "libhardware", | |
| "libhidlbase", | |
| "libcutils", | |
| "libsync", | |
| "liblog", | |
| "libutils", | |
| ], | |
| static_libs: [ | |
| "libarect", | |
| ], | |
| cflags: [ | |
| "-DHAVE_GRALLOC1", | |
| "-DHAVE_GRALLOC3", | |
| "-DHAVE_GRALLOC4", | |
| // FIXME: Use <android/api-level.h> instead? | |
| "-DANDROID_PLATFORM_SDK_VERSION=10000", | |
| ], | |
| version_script: "Vulkan/android_vk_swiftshader.lds", | |
| }, | |
| host: { | |
| version_script: "Vulkan/android_host_vk_swiftshader.lds", | |
| }, | |
| }, | |
| } | |
| cc_library_static { | |
| name: "swiftshader_debug", | |
| host_supported: true, | |
| vendor_available: true, | |
| cflags: [ | |
| "-DLOG_TAG=\"swiftshader\"", | |
| ], | |
| srcs: [ | |
| "System/Debug.cpp", | |
| ], | |
| export_include_dirs: [ | |
| ".", | |
| ], | |
| shared_libs: [ | |
| "liblog", | |
| ], | |
| } | |
| cc_defaults { | |
| name: "libvk_swiftshader_common_defaults", | |
| cflags: [ | |
| "-DLOG_TAG=\"swiftshader\"", | |
| "-DSWIFTSHADER_ENABLE_ASTC", // TODO(b/150130101) | |
| //"-DSWIFTSHADER_DEVICE_MEMORY_REPORT", | |
| ], | |
| srcs: [ | |
| "System/Build.cpp", | |
| "System/Configurator.cpp", | |
| "System/CPUID.cpp", | |
| "System/Half.cpp", | |
| "System/Linux/MemFd.cpp", | |
| "System/Math.cpp", | |
| "System/Memory.cpp", | |
| "System/Socket.cpp", | |
| "System/SwiftConfig.cpp", | |
| "System/Timer.cpp", | |
| "Device/*.cpp", | |
| "Pipeline/*.cpp", | |
| "Vulkan/libVulkan.cpp", | |
| "Vulkan/main.cpp", | |
| "Vulkan/VkBuffer.cpp", | |
| "Vulkan/VkBufferView.cpp", | |
| "Vulkan/VkCommandBuffer.cpp", | |
| "Vulkan/VkCommandPool.cpp", | |
| "Vulkan/VkDebugUtilsMessenger.cpp", | |
| "Vulkan/VkDescriptorPool.cpp", | |
| "Vulkan/VkDescriptorSet.cpp", | |
| "Vulkan/VkDescriptorSetLayout.cpp", | |
| "Vulkan/VkDescriptorUpdateTemplate.cpp", | |
| "Vulkan/VkDevice.cpp", | |
| "Vulkan/VkDeviceMemory.cpp", | |
| "Vulkan/VkDeviceMemoryExternalHost.cpp", | |
| "Vulkan/VkFormat.cpp", | |
| "Vulkan/VkFramebuffer.cpp", | |
| "Vulkan/VkGetProcAddress.cpp", | |
| "Vulkan/VkImage.cpp", | |
| "Vulkan/VkImageView.cpp", | |
| "Vulkan/VkInstance.cpp", | |
| "Vulkan/VkMemory.cpp", | |
| "Vulkan/VkPhysicalDevice.cpp", | |
| "Vulkan/VkPipelineCache.cpp", | |
| "Vulkan/VkPipeline.cpp", | |
| "Vulkan/VkPipelineLayout.cpp", | |
| "Vulkan/VkPromotedExtensions.cpp", | |
| "Vulkan/VkQueryPool.cpp", | |
| "Vulkan/VkQueue.cpp", | |
| "Vulkan/VkRenderPass.cpp", | |
| "Vulkan/VkSampler.cpp", | |
| "Vulkan/VkSemaphore.cpp", | |
| "Vulkan/VkShaderModule.cpp", | |
| "Vulkan/VkSpecializationInfo.cpp", | |
| "Vulkan/VkStringify.cpp", | |
| "Vulkan/VkTimelineSemaphore.cpp", | |
| "WSI/HeadlessSurfaceKHR.cpp", | |
| "WSI/VkSurfaceKHR.cpp", | |
| ], | |
| static_libs: [ | |
| "swiftshader_astc", | |
| "swiftshader_debug", | |
| "swiftshader_marl", | |
| "swiftshader_spirv-tools", | |
| ], | |
| include_dirs: [ | |
| "external/swiftshader/third_party/SPIRV-Headers/include", | |
| "external/swiftshader/include", | |
| ], | |
| target: { | |
| android: { | |
| srcs: [ | |
| "Vulkan/VkDeviceMemoryExternalAndroid.cpp", | |
| ], | |
| cflags: [ | |
| "-DSWIFTSHADER_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER", | |
| ], | |
| }, | |
| host: { | |
| srcs: [ | |
| "WSI/VkSwapchainKHR.cpp", | |
| ], | |
| cflags: [ | |
| "-DSWIFTSHADER_EXTERNAL_MEMORY_OPAQUE_FD", | |
| // Allocations which may be mapped into a KVM based virtual | |
| // machine must be page aligned. | |
| "-DSWIFTSHADER_DEVICE_MEMORY_ALLOCATION_ALIGNMENT=4096", | |
| ], | |
| }, | |
| }, | |
| } | |
| cc_library_shared { | |
| name: "vulkan.pastel", | |
| static_libs: [ | |
| "libswiftshadervk_llvm", | |
| "libLLVM16_swiftshader", | |
| ], | |
| target: { | |
| host: { | |
| strip: { | |
| keep_symbols_and_debug_frame: true, | |
| }, | |
| }, | |
| }, | |
| defaults: [ | |
| "libvk_swiftshader_common_defaults", | |
| "libvk_swiftshader_defaults" | |
| ], | |
| } | |
| cc_library_shared { | |
| name: "vulkan.pastel.debug", | |
| static_libs: [ | |
| "libswiftshadervk_llvm_debug", | |
| "libLLVM16_swiftshader_debug", | |
| ], | |
| cflags: [ | |
| "-UNDEBUG", | |
| "-g", | |
| "-O0", | |
| "-DDEFAULT_THREAD_COUNT=1", | |
| ], | |
| defaults: [ | |
| "libvk_swiftshader_common_defaults", | |
| "libvk_swiftshader_defaults", | |
| ], | |
| } | |
| filegroup { | |
| name: "swiftshader_icd_json_template", | |
| srcs: [ | |
| "Vulkan/vk_swiftshader_icd.json.tmpl", | |
| ], | |
| } |