PKGNAME=mesa
PKGSEC=libs
PKGDES="Runtime library for OpenGL, Vulkan, OpenCL, and more"
PKGDEP="x11-lib libdrm expat systemd elfutils nettle \
        libva wayland lm-sensors libglvnd llvm-runtime \
        libcl libclc spirv-llvm-translator libdisplay-info \
        xcb-util-keysyms libconfig"
PKGDEP__RETRO="x11-lib elfutils libdrm libglvnd libva llvm-runtime \
               expat systemd"
PKGDEP__ARMV4="${PKGDEP__RETRO}"
PKGDEP__ARMV6HF="${PKGDEP__RETRO}"
PKGDEP__ARMV7HF="${PKGDEP__RETRO}"
PKGDEP__I486="${PKGDEP__RETRO}"
PKGDEP__LOONGSON2F="${PKGDEP__RETRO}"
PKGDEP__M68K="${PKGDEP__RETRO}"
PKGDEP__POWERPC="${PKGDEP__RETRO}"
PKGDEP__PPC64="${PKGDEP__RETRO}"

BUILDDEP="x11-proto mako systemd valgrind llvm libunwind glslang \
          spirv-tools ply rustc rust-bindgen pycparser cbindgen pyyaml \
          directx-headers"
# FIXME: Valgrind is not yet available.
BUILDDEP__LOONGARCH64="${BUILDDEP/valgrind/}"
BUILDDEP__LOONGARCH64_NOSIMD="${BUILDDEP__LOONGARCH64}"
BUILDDEP__RISCV64="${BUILDDEP/valgrind/}"

BUILDDEP__RETRO="x11-proto llvm mako glslang"
BUILDDEP__IA64="x11-proto mako"

PKGEPOCH=1

# Note: -Dwrap_mode=default is used for Crate dependencies.
MESON_AFTER=(
# Note: For stable-bound updates, use the following to disable assert().
    '-Db_ndebug=true'
# Note: Comment out line above for preview (RC or x.y.0) releases.
    '-Dsplit-debug=disabled'
    '-Dplatforms=x11,wayland'
    '-Degl-native-platform=auto'
    '-Ddri-drivers-path=/usr/lib/xorg/modules/dri'
    '-Dgallium-extra-hud=true'
    '-Dgallium-va=enabled'
    '-Dgallium-rusticl=true'
    '-Dstatic-libclc='
    '-Damdgpu-virtio=true'
    '-Dimagination-srv=true'
    '-Dshader-cache=enabled'
    '-Dshader-cache-default=true'
    '-Dvulkan-layers=device-select,overlay,screenshot'
    '-Dgles1=enabled'
    '-Dgles2=enabled'
    '-Dopengl=true'
    '-Dlibgbm-external=false'
    '-Dglx=dri'
    '-Degl=enabled'
    '-Dglvnd=enabled'
    '-Dllvm=enabled'
    '-Dshared-llvm=enabled'
    '-Ddraw-use-llvm=true'
    '-Damd-use-llvm=true'
    '-Dllvm-orcjit=true'
    '-Dvalgrind=enabled'
    '-Dlibunwind=true'
    '-Dlmsensors=enabled'
    '-Dhtml-docs=disabled'
    '-Dtools='
    '-Dxlib-lease=enabled'
    '-Dglx-direct=true'
    '-Dzstd=enabled'
    '-Dzlib=enabled'
    '-Dsse2=false'
    '-Dperfetto=false'
    '-Dteflon=false'
    '-Dgpuvis=false'
    '-Dsysprof=false'
    '-Dvmware-mks-stats=false'
    '-Dvulkan-beta=false'
    '-Dintel-rt=false'
    '-Dintel-elk=false'
    '-Dvideo-codecs=all'
    '-Dgallium-d3d12-video=enabled'
    '-Dgallium-d3d12-graphics=enabled'
    '-Dxmlconfig=enabled'
    '-Dmesa-clc=enabled'
    '-Dprecomp-compiler=enabled'
    '-Dvirtgpu_kumquat=true'
    '-Dwrap_mode=default'
    '-Dlegacy-wayland=bind-wayland-display'
)

MESON_AFTER__AMD64=(
    "${MESON_AFTER[@]}"
    '-Dgallium-drivers=asahi,crocus,d3d12,etnaviv,freedreno,i915,iris,lima,llvmpipe,nouveau,panfrost,r300,r600,radeonsi,softpipe,svga,tegra,v3d,vc4,virgl,zink'
    '-Dgallium-rusticl-enable-drivers=asahi,radeonsi'
    '-Dvulkan-drivers=amd,asahi,broadcom,freedreno,intel,intel_hasvk,panfrost,swrast,virtio,nouveau,gfxstream'
    '-Dfreedreno-kmds=msm,kgsl,virtio,wsl'
    '-Dintel-elk=true'
    '-Dintel-rt=enabled'
    '-Dlibunwind=enabled'
    '-Dsse2=true'
)
MESON_AFTER__ARM=(
    "${MESON_AFTER[@]}"
    '-Dgallium-drivers=asahi,d3d12,etnaviv,freedreno,i915,iris,lima,llvmpipe,nouveau,panfrost,r300,r600,radeonsi,softpipe,svga,tegra,v3d,vc4,virgl,zink'
    '-Dgallium-rusticl-enable-drivers=asahi,radeonsi'
    '-Dvulkan-drivers=amd,asahi,broadcom,freedreno,intel,panfrost,swrast,virtio,nouveau,gfxstream'
    '-Dfreedreno-kmds=msm,kgsl,virtio,wsl'
)
MESON_AFTER__OTHER=(
    "${MESON_AFTER[@]}"
    '-Dgallium-drivers=etnaviv,iris,llvmpipe,nouveau,r300,r600,radeonsi,softpipe,virgl,zink'
    '-Dgallium-rusticl-enable-drivers=radeonsi'
    '-Dvulkan-drivers=amd,intel,swrast,virtio,nouveau,gfxstream'
)

MESON_AFTER__ARM64=(
    "${MESON_AFTER__ARM[@]}"
    '-Dintel-rt=enabled'
    '-Dlibunwind=disabled'
)
MESON_AFTER__LOONGARCH64=(
    "${MESON_AFTER__OTHER[@]}"
    '-Dintel-rt=enabled'
    '-Dlibunwind=enabled'
    '-Dvalgrind=disabled'
)
MESON_AFTER__LOONGARCH64_NOSIMD=(
    "${MESON_AFTER__LOONGARCH64[@]}"
)
# FIXME: libc crate is broken (required by rusticl and gfxtream Vulkan driver).
MESON_AFTER__LOONGSON3=(
    "${MESON_AFTER__OTHER[@]}"
    '-Dlibunwind=enabled'
    '-Dgallium-rusticl=false'
    '-Dgallium-rusticl-enable-drivers='
    '-Dvulkan-drivers=amd,intel,swrast,virtio,nouveau'
)
MESON_AFTER__PPC64EL=(
    "${MESON_AFTER__OTHER[@]}"
    '-Dlibunwind=enabled'
)
MESON_AFTER__RISCV64=(
    "${MESON_AFTER__OTHER[@]}"
    '-Dlibunwind=disabled'
    '-Dvalgrind=disabled'
)

# NOTE: Amber branch for Afterglow.
MESON_AFTER__RETRO=(
    '-Dplatforms=x11'
    '-Degl-native-platform=auto'
    '-Ddri-drivers-path=/usr/lib/xorg/modules/dri'
    '-Dgallium-extra-hud=true'
    '-Dgallium-va=enabled'
    '-Dshader-cache=enabled'
    '-Dshader-cache-default=true'
    '-Dvulkan-layers=device-select,overlay'
    '-Dgles1=enabled'
    '-Dgles2=enabled'
    '-Dopengl=true'
    '-Dglx=dri'
    '-Degl=enabled'
    '-Dglvnd=enabled'
    '-Dllvm=disabled'
    '-Dvalgrind=disabled'
    '-Dlibunwind=disabled'
    '-Dlmsensors=disabled'
    '-Dtools='
    '-Dxlib-lease=enabled'
    '-Dglx-direct=true'
    '-Dzstd=enabled'
    '-Dzlib=enabled'
    '-Dsse2=false'
    '-Dperfetto=false'
    '-Dvmware-mks-stats=false'
    '-Dwrap_mode=default'
)
MESON_AFTER__I486=(
    "${MESON_AFTER__RETRO[@]}"
    '-Ddri-drivers=r100,r200,nouveau'
    '-Dgallium-drivers=r300,r600,i915,nouveau,iris,crocus'
    '-Dvulkan-drivers='
)
MESON_AFTER__RETRO_ARM=(
    "${MESON_AFTER__RETRO[@]}"
    '-Ddri-drivers='
    '-Dgallium-drivers=freedreno,tegra,vc4,nouveau,virgl,lima,panfrost'
    '-Dvulkan-drivers='
)
MESON_AFTER__RETRO_OTHER=(
    "${MESON_AFTER__RETRO[@]}"
    '-Ddri-drivers=r100,r200,nouveau'
    '-Dgallium-drivers=r300,r600,nouveau'
    '-Dvulkan-drivers='
)

MESON_AFTER__ARMV4=(
    "${MESON_AFTER__RETRO_ARM[@]}"
)
MESON_AFTER__ARMV6HF=(
    "${MESON_AFTER__RETRO_ARM[@]}"
)
MESON_AFTER__ARMV7HF=(
    "${MESON_AFTER__RETRO_ARM[@]}"
)
MESON_AFTER__LOONGSON2F=(
    "${MESON_AFTER__RETRO_OTHER[@]}"
)
MESON_AFTER__POWERPC=(
    "${MESON_AFTER__RETRO_OTHER[@]}"
)
MESON_AFTER__PPC64=(
    "${MESON_AFTER__RETRO_OTHER[@]}"
)

# FIXME: LLVM + Mesa + LTO + AMDGPU = artifacts.
NOLTO=1

# Note: Extra Provides for Spiral.
PKGPROV="libglx-mesa0_spiral"

# Needed by Afterglow, whereas FAIL_ARCH defaults to mainline-only.
FAIL_ARCH="!(mainline|retro)"
