android_external_mesa3d/Android.bp
Brendan Szymanski b78a113299
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run
Remove model include dir from top-level vulkan.panfrost
2026-07-11 11:29:07 -04:00

505 lines
16 KiB
Text

// Mesa 3-D graphics library
//
// Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
// 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",
],
},
},
}