// Mesa 3-D graphics library // // Copyright (C) 2010-2011 Chia-I Wu // Copyright (C) 2010-2011 LunarG Inc. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS. PLEASE // CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE // DEPENDING ON IT IN YOUR PROJECT. *** package { default_applicable_licenses: ["external_mesa3d_license"], } // Added automatically by a large-scale-change that took the approach of // 'apply every license found to every target'. While this makes sure we respect // every license restriction, it may not be entirely correct. // // e.g. GPL in an MIT project might only apply to the contrib/ directory. // // Please consider splitting the single license below into multiple licenses, // taking care not to lose any license_kind information, and overriding the // default license using the 'licenses: [...]' property on targets as needed. // // For unused files, consider creating a 'fileGroup' with "//visibility:private" // to attach the license to, and including a comment whether the files may be // used in the current project. // See: http://go/android-license-faq license { name: "external_mesa3d_license", visibility: [":__subpackages__"], license_kinds: [ "SPDX-license-identifier-Apache-2.0", "SPDX-license-identifier-BSD", "SPDX-license-identifier-BSL-1.0", "SPDX-license-identifier-GPL", "SPDX-license-identifier-GPL-2.0", "SPDX-license-identifier-ISC", "SPDX-license-identifier-MIT", "SPDX-license-identifier-Unlicense", "legacy_by_exception_only", // by exception only "legacy_notice", "legacy_unencumbered", ], license_text: [ "LICENSE", ], } cc_defaults { name: "mesa_version_defaults", cflags: ["-DPACKAGE_VERSION=\"25.0.4\""], } python_binary_host { name: "git_sha1_gen", main: "bin/git_sha1_gen.py", srcs: [ "bin/git_sha1_gen.py", ], } genrule { name: "git_sha1_header", out: ["git_sha1.h"], tools: ["git_sha1_gen"], cmd: "MESA_GIT_SHA1_OVERRIDE=(git-l33t9876) python3 $(location git_sha1_gen) " + "--output $(location git_sha1.h)", } cc_defaults { name: "mesa_flagged_defaults", cflags: select(soong_config_variable("gfxstream", "mesa3d_platforms"), { // Android surfaceless build "none": [ "-UANDROID", "-U__ANDROID__", "-DLINUX_GUEST_BUILD", ], // The default when variable is not set is Android default: [ "-DVK_USE_PLATFORM_ANDROID_KHR", ], }), } cc_library_headers { name: "mesa_common_headers", defaults: ["mesa_flagged_defaults"], vendor_available: true, host_supported: true, export_include_dirs: [ "src", "include", ], visibility: [":__subpackages__"], } // This needs to be kept in sync with Android.common.mk cc_defaults { name: "mesa_common_defaults", defaults: [ "mesa_version_defaults", "mesa_flagged_defaults", ], // uncomment to keep the debug symbols // strip: { none: true, }, header_libs: ["mesa_common_headers"], cflags: [ "-Wno-error", "-Werror=incompatible-pointer-types", "-Wno-unused-parameter", "-Wno-pointer-arith", "-Wno-missing-field-initializers", "-Wno-initializer-overrides", "-Wno-mismatched-tags", // PACKAGE_VERSION is in mesa_version_defaults "-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"", // XXX: The following __STDC_*_MACROS defines should not be needed. // It's likely due to a bug elsewhere, but let's temporarily add them // here to fix the radeonsi build. "-DENABLE_SHADER_CACHE", "-D__STDC_CONSTANT_MACROS", "-D__STDC_LIMIT_MACROS", "-DHAVE___BUILTIN_EXPECT", "-DHAVE___BUILTIN_FFS", "-DHAVE___BUILTIN_FFSLL", "-DHAVE_DLFCN_H", "-DHAVE_FUNC_ATTRIBUTE_FLATTEN", "-DHAVE_FUNC_ATTRIBUTE_UNUSED", "-DHAVE_FUNC_ATTRIBUTE_FORMAT", "-DHAVE_FUNC_ATTRIBUTE_PACKED", "-DHAVE_FUNC_ATTRIBUTE_ALIAS", "-DHAVE_FUNC_ATTRIBUTE_NORETURN", "-DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL", "-DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT", "-DHAVE___BUILTIN_CTZ", "-DHAVE___BUILTIN_POPCOUNT", "-DHAVE___BUILTIN_POPCOUNTLL", "-DHAVE___BUILTIN_CLZ", "-DHAVE___BUILTIN_CLZLL", "-DHAVE___BUILTIN_UNREACHABLE", "-DHAVE_PERFETTO", "-DANDROID_LIBPERFETTO", "-DHAVE_PTHREAD=1", "-DHAVE_DLADDR", "-DHAVE_DL_ITERATE_PHDR", "-DHAVE_LINUX_FUTEX_H", "-DHAVE_ENDIAN_H", "-DMAJOR_IN_SYSMACROS", "-DMESA_DEBUG=0", "-fvisibility=hidden", "-fno-math-errno", "-fno-trapping-math", "-Werror", "-Wno-#warnings", "-Wno-asm-operand-widths", "-Wno-cast-calling-convention", "-Wno-constant-logical-operand", "-Wno-enum-conversion", "-Wno-format", "-Wno-gnu-variable-sized-type-not-at-end", "-Wno-implicit-fallthrough", "-Wno-implicit-int", "-Wno-incompatible-pointer-types", "-Wno-missing-braces", "-Wno-overloaded-virtual", "-Wno-self-assign", "-Wno-shift-negative-value", "-Wno-sign-compare", "-Wno-sometimes-uninitialized", "-Wno-switch", "-Wno-typedef-redefinition", "-Wno-uninitialized", "-Wno-implicit-const-int-float-conversion", "-Wno-sync-alignment", "-Wno-implicit-function-declaration", "-Wno-constant-conversion", "-DHAVE_TIMESPEC_GET", "-DHAVE_STRUCT_TIMESPEC", "-DMESA_LLVM_VERSION_STRING=\"16.0.0\"", "-DDRAW_LLVM_AVAILABLE=1", "-DHAVE_LIBDRM", "-DHAVE_COMPRESSION", "-DHAVE_ZSTD", ], c_std: "c11", shared_libs: ["libdrm"], cppflags: [ "-D__STDC_CONSTANT_MACROS", "-D__STDC_FORMAT_MACROS", "-D__STDC_LIMIT_MACROS", "-Wno-error=non-virtual-dtor", "-Wno-non-virtual-dtor", ], arch: { arm: { cflags: ["-DNO_FORMAT_ASM"], }, arm64: { cflags: ["-DNO_FORMAT_ASM"], }, }, multilib: { lib32: { cflags: ["-DDEFAULT_DRIVER_DIR=\"/vendor/lib/dri\""], }, lib64: { cflags: ["-DDEFAULT_DRIVER_DIR=\"/vendor/lib64/dri\""], }, }, product_variables: { platform_sdk_version: { cflags: ["-DANDROID_API_LEVEL=%d"], }, }, target: { host: { cflags: [ "-D_GNU_SOURCE", "-DHAVE_SECURE_GETENV", ], }, android: { cflags: [ "-DHAVE_REALLOCARRAY", ], }, linux_musl: { cflags: [ "-DHAVE_REALLOCARRAY", ], }, }, } // --------------------------------------------------------------------------- // Panfrost-specific defaults // --------------------------------------------------------------------------- cc_defaults { name: "mesa3d_panfrost_defaults", defaults: ["mesa_common_defaults"], cflags: [ "-DHAVE_PANFROST", "-DGALLIUM_PANFROST", ], } // --------------------------------------------------------------------------- // Shared libraries for gallium DRI driver (Panfrost) // --------------------------------------------------------------------------- cc_library_static { name: "mesa3d_panfrost_src_gallium_winsys_kmsro", vendor: true, defaults: ["mesa_common_defaults"], header_libs: [ "mesa_gallium_headers", ], srcs: [ "src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c", ], } cc_library_shared { name: "libgallium_dri", vendor: true, stem: "libgallium_dri", defaults: [ "mesa_common_defaults", ], header_libs: [ "mesa_util_headers", "mesa_gallium_headers", "mesa_gallium_auxiliary_headers", "mesa_gallium_winsys_headers", "mesa_loader_headers", "mesa_mesa_headers", "mesa_panfrost_headers", "mesa_panfrost_gallium_headers", ], generated_headers: [ "git_sha1_header", ], cflags: [ "-DGALLIUM_KMSRO", "-DGALLIUM_PANFROST", ], ldflags: [ "-Wl,--build-id=sha1", ], srcs: [ "src/gallium/targets/dri/dri_target.c", ], shared_libs: [ "libcutils", "libdrm", "libhardware", "liblog", "libnativewindow", "libsync", "libz", ], whole_static_libs: [ "mesa3d_panfrost_src_gallium_drivers_panfrost", "mesa3d_panfrost_src_gallium_winsys_panfrost", ], static_libs: [ "mesa3d_panfrost_src_gallium_frontends_dri", "mesa3d_panfrost_src_gallium_winsys_kmsro", "mesa3d_panfrost_src_panfrost_shared", "mesa3d_panfrost_src_panfrost_genxml", "mesa_pipe_loader_static", "mesa_gallium", "mesa_util", "mesa_nir", "mesa_compiler", "mesa_glsl", "mesa_spirv", "mesa_loader", "mesa_util_format", "mesa_blake3", "mesa_wsw", "mesa_ws_null", "libperfetto_client_experimental", "libLLVM16_swiftshader", ], target: { android: { header_libs: [ "libnativebase_headers", ], }, }, } // --------------------------------------------------------------------------- // Vulkan - PanVK driver // --------------------------------------------------------------------------- cc_defaults { name: "mesa3d_panfrost_panvk_defaults", defaults: ["mesa_common_defaults"], cflags: [ "-DVK_USE_PLATFORM_ANDROID_KHR", ], } cc_library_shared { name: "vulkan.panfrost", vendor: true, soc_specific: true, relative_install_path: "hw", stem: "vulkan.panfrost", defaults: [ "mesa3d_panfrost_panvk_defaults", ], srcs: [ "src/panfrost/vulkan/panvk_buffer.c", "src/panfrost/vulkan/panvk_cmd_pool.c", "src/panfrost/vulkan/panvk_device_memory.c", "src/panfrost/vulkan/panvk_host_copy.c", "src/panfrost/vulkan/panvk_image.c", "src/panfrost/vulkan/panvk_instance.c", "src/panfrost/vulkan/panvk_mempool.c", "src/panfrost/vulkan/panvk_physical_device.c", "src/panfrost/vulkan/panvk_priv_bo.c", "src/panfrost/vulkan/panvk_utrace.c", "src/panfrost/vulkan/panvk_utrace_perfetto.cc", "src/panfrost/vulkan/panvk_wsi.c", "src/panfrost/meson_generated/src/panfrost/vulkan/panvk_entrypoints.c", "src/panfrost/meson_generated/src/panfrost/vulkan/panvk_tracepoints.c", ], ldflags: [ "-Wl,--build-id=sha1", "-Wl,-Bsymbolic", ], shared_libs: [ "libcutils", "libdrm", "libhardware", "liblog", "libnativewindow", "libsync", "libui", "libz", ], static_libs: [ "libperfetto_client_experimental", "mesa3d_panfrost_src_panfrost_shared", "mesa3d_panfrost_src_panfrost_genxml", "mesa3d_panfrost_src_panfrost_util", "mesa3d_panfrost_src_panfrost_lib", "mesa3d_panfrost_src_panfrost_lib_kmod", "mesa3d_panfrost_src_panfrost_lib_arch_v4", "mesa3d_panfrost_src_panfrost_lib_arch_v5", "mesa3d_panfrost_src_panfrost_lib_arch_v6", "mesa3d_panfrost_src_panfrost_lib_arch_v7", "mesa3d_panfrost_src_panfrost_lib_arch_v9", "mesa3d_panfrost_src_panfrost_lib_arch_v10", "mesa3d_panfrost_src_panfrost_lib_arch_v12", "mesa3d_panfrost_src_panfrost_lib_arch_v13", "mesa3d_panfrost_src_panfrost_lib_format_v5", "mesa3d_panfrost_src_panfrost_lib_format_v6", "mesa3d_panfrost_src_panfrost_lib_format_v7", "mesa3d_panfrost_src_panfrost_lib_format_v9", "mesa3d_panfrost_src_panfrost_lib_format_v10", "mesa3d_panfrost_src_panfrost_lib_format_v12", "mesa3d_panfrost_src_panfrost_lib_format_v13", "mesa3d_panfrost_src_panfrost_midgard", "mesa3d_panfrost_src_panfrost_compiler", "mesa3d_panfrost_src_panfrost_perf", "mesa_vulkan_util", "mesa_vulkan_runtime", "mesa_vulkan_wsi", "mesa_util", "mesa_util_c11", "mesa_util_format", "mesa_blake3", "mesa_compiler", "mesa_nir", "mesa_glsl", "mesa_spirv", ], whole_static_libs: [ "mesa3d_panfrost_src_panfrost_vulkan_v6", "mesa3d_panfrost_src_panfrost_vulkan_v7", "mesa3d_panfrost_src_panfrost_vulkan_v10", "mesa3d_panfrost_src_panfrost_vulkan_v12", "mesa3d_panfrost_src_panfrost_vulkan_v13", "mesa_vulkan_runtime", "mesa_vulkan_wsi", ], local_include_dirs: [ "include", "include/android_stub", "src", "src/compiler", "src/compiler/nir", "src/panfrost", "src/panfrost/compiler", "src/panfrost/genxml", "src/panfrost/lib", "src/panfrost/libpan", "src/panfrost/midgard", "src/panfrost/shared", "src/panfrost/vulkan", "src/panfrost/vulkan/bifrost", "src/panfrost/vulkan/jm", "src/panfrost/vulkan/csf", "src/vulkan/runtime", "src/vulkan/runtime/bvh", "src/vulkan/util", "src/vulkan/wsi", "src/panfrost/meson_generated/src", "src/panfrost/meson_generated/src/compiler", "src/panfrost/meson_generated/src/compiler/nir", "src/panfrost/meson_generated/src/compiler/spirv", "src/panfrost/meson_generated/src/panfrost", "src/panfrost/meson_generated/src/panfrost/compiler", "src/panfrost/meson_generated/src/panfrost/genxml", "src/panfrost/meson_generated/src/panfrost/libpan", "src/panfrost/meson_generated/src/panfrost/midgard", "src/panfrost/meson_generated/src/panfrost/vulkan", "src/panfrost/meson_generated/src/util", "src/panfrost/meson_generated/src/util/format", "src/panfrost/meson_generated/src/vulkan/runtime", "src/panfrost/meson_generated/src/vulkan/util", "src/panfrost/meson_generated/src/vulkan/wsi", ], target: { android: { header_libs: [ "libnativebase_headers", ], }, }, }