--- /dev/null
+#!/usr/bin/make -f
+# debian/rules for the Debian mesa package
+# Copyright © 2006 Thierry Reding <thierry@gilfi.de>
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+include /usr/share/dpkg/pkg-info.mk
+
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
+DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
+DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
+
+# for finding the correct llvm-config when meson doesn't know about it yet
+export PATH:=/usr/lib/llvm-15/bin/:$(PATH)
+
+export DEB_BUILD_MAINT_OPTIONS=optimize=-lto
+
+ifeq (,$(filter $(DEB_HOST_ARCH), armhf ppc64el sh3 sh4))
+buildflags = \
+ $(shell DEB_CFLAGS_MAINT_APPEND=-Wall DEB_CXXFLAGS_MAINT_APPEND=-Wall dpkg-buildflags --export=configure)
+else
+ ifneq (,$(filter $(DEB_HOST_ARCH), armhf))
+ # Workaround for a variant of LP: #725126
+ buildflags = \
+ $(shell DEB_CFLAGS_MAINT_APPEND="-Wall -fno-optimize-sibling-calls" DEB_CXXFLAGS_MAINT_APPEND="-Wall -fno-optimize-sibling-calls" dpkg-buildflags --export=configure)
+ else
+ ifneq (,$(filter $(DEB_HOST_ARCH), ppc64el))
+ # Workaround for https://gitlab.freedesktop.org/mesa/mesa/-/issues/5315
+ buildflags = \
+ $(shell DEB_CFLAGS_MAINT_APPEND="-Wall -O2" DEB_CXXFLAGS_MAINT_APPEND="-Wall -O2" dpkg-buildflags --export=configure)
+ else
+ # Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83143
+ buildflags = \
+ $(shell DEB_CFLAGS_MAINT_APPEND="-Wall -O1" DEB_CXXFLAGS_MAINT_APPEND="-Wall -O1" dpkg-buildflags --export=configure)
+ endif
+ endif
+endif
+
+EGL_PLATFORMS = x11
+GALLIUM_DRIVERS = swrast
+VULKAN_DRIVERS = swrast
+VULKAN_LAYERS =
+
+confflags_DRI3 = -Ddri3=disabled
+confflags_OSMESA = -Dosmesa=true
+confflags_SSE2 = -Dsse2=true
+
+# hurd doesn't do direct rendering
+ifeq ($(DEB_HOST_ARCH_OS), hurd)
+ confflags_DIRECT_RENDERING = -Dglx-direct=false
+ confflags_GBM = -Dgbm=disabled
+else
+ GALLIUM_DRIVERS += r300 r600 asahi kmsro
+
+ confflags_DIRECT_RENDERING = -Dglx-direct=true
+ confflags_GBM = -Dgbm=enabled
+ confflags_GALLIUM += -Dgallium-extra-hud=true
+ confflags_GALLIUM += -Dgallium-vdpau=enabled
+ confflags_GALLIUM += -Dlmsensors=enabled
+
+ # radv/lavapipe needs LLVM and the Vulkan loader, so only build on the subset of
+ # arches where we have LLVM enabled and where the Vulkan loader is built.
+ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64))
+ VULKAN_DRIVERS += amd swrast
+ endif
+
+ # Only enable amd on riscv64, swrast needs CPU JIT support which doesn't work properly yet
+ ifneq (,$(filter $(DEB_HOST_ARCH), riscv64))
+ VULKAN_DRIVERS += amd
+ confflags_GALLIUM += -Ddraw-use-llvm=false
+ endif
+
+ ifeq ($(DEB_HOST_ARCH_OS), linux)
+ confflags_DRI3 = -Ddri3=enabled
+ # Gallium drivers which require kernel support, not yet ported to non-Linux
+ GALLIUM_DRIVERS += nouveau virgl
+
+ # Freedreno requires arm in addition
+ ifneq (,$(filter arm arm64,$(DEB_HOST_ARCH_CPU)))
+ GALLIUM_DRIVERS += freedreno
+ endif
+
+ # etnaviv, tegra, vc4 and v3d kernel support are only available on armhf and arm64
+ ifneq (,$(filter $(DEB_HOST_ARCH), armhf arm64))
+ GALLIUM_DRIVERS += etnaviv panfrost svga tegra vc4 v3d
+ VULKAN_DRIVERS += broadcom freedreno
+ endif
+
+ ifneq (,$(filter $(DEB_HOST_ARCH), armhf arm64 riscv64))
+ GALLIUM_DRIVERS += lima
+ endif
+
+ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32))
+ GALLIUM_DRIVERS += svga
+ # svga needs xa state tracker
+ confflags_GALLIUM += -Dgallium-xa=enabled
+ VULKAN_DRIVERS += intel
+ endif
+
+ # Non-Linux ports lack epoll, so wayland isn't ready yet:
+ # https://gitlab.freedesktop.org/wayland/wayland/-/issues/72
+ # hurd also lacks *_CLOEXEC
+ EGL_PLATFORMS += ,wayland
+
+ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x))
+ confflags_VALGRIND += -Dvalgrind=enabled
+ endif
+
+ # WSL supports only amd64 and arm64
+ ifneq (,$(filter amd64 arm64,$(DEB_HOST_ARCH)))
+ GALLIUM_DRIVERS += d3d12
+ endif
+ endif
+
+ # Build intel drivers on archs where libdrm-intel is installed
+ ifneq (,$(filter $(DEB_HOST_ARCH),amd64 i386 kfreebsd-amd64 kfreebsd-i386 x32))
+ GALLIUM_DRIVERS += iris crocus
+ endif
+
+ # LLVM is required for building r300g, radeonsi and llvmpipe drivers.
+ # It's also required for building OpenCL support.
+ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64))
+ GALLIUM_DRIVERS += radeonsi
+ confflags_GALLIUM += -Dllvm=enabled
+ confflags_GALLIUM += -Dgallium-opencl=disabled
+ confflags_GALLIUM += -Dgallium-rusticl=false
+
+ # nine makes sense only on archs that build wine
+ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 powerpc))
+ confflags_GALLIUM += -Dgallium-nine=true
+ endif
+ else
+ confflags_GALLIUM += -Dllvm=disabled
+ endif
+
+ # build vulkan layers where Vulkan loader is available
+ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32))
+ GALLIUM_DRIVERS += zink
+ VULKAN_LAYERS += device-select intel-nullhw overlay
+ endif
+
+ ifeq (,$(filter pkg.mesa.nolibva,$(DEB_BUILD_PROFILES)))
+ confflags_GALLIUM += -Dgallium-va=enabled
+ confflags_GALLIUM += -Dvideo-codecs="vc1dec, h264dec, h264enc, h265dec, h265enc"
+ endif
+endif
+
+ifeq ($(DEB_HOST_ARCH), i386)
+ confflags_SSE2 = -Dsse2=false
+endif
+
+empty:=
+space := $(empty) $(empty)
+comma := ,
+GALLIUM_DRIVERS := $(patsubst %,'%',$(GALLIUM_DRIVERS))
+GALLIUM_DRIVERS_LIST := $(subst $(space),$(comma),$(GALLIUM_DRIVERS))
+VULKAN_DRIVERS := $(patsubst %,'%',$(VULKAN_DRIVERS))
+VULKAN_DRIVERS_LIST := $(subst $(space),$(comma),$(VULKAN_DRIVERS))
+VULKAN_LAYERS := $(patsubst %,'%',$(VULKAN_LAYERS))
+VULKAN_LAYERS_LIST := $(subst $(space),$(comma),$(VULKAN_LAYERS))
+
+confflags_EGL = -Dplatforms="$(EGL_PLATFORMS)"
+confflags_GLES = -Dgles1=disabled -Dgles2=enabled
+confflags_GALLIUM += -Dgallium-drivers="[$(GALLIUM_DRIVERS_LIST)]"
+
+confflags += \
+ -Ddri-drivers-path=/usr/lib/$(DEB_HOST_MULTIARCH)/dri \
+ -Ddri-search-path='/usr/lib/$(DEB_HOST_MULTIARCH)/dri:\$$$${ORIGIN}/dri:/usr/lib/dri' \
+ -Dvulkan-drivers="[$(VULKAN_DRIVERS_LIST)]" \
+ -Dvulkan-layers="[$(VULKAN_LAYERS_LIST)]" \
+ -Dglvnd=true \
+ -Dshared-glapi=enabled \
+ -Dgallium-omx=disabled \
+ -Db_ndebug=true \
+ -Dbuild-tests=true \
+ -Dlibunwind=disabled \
+ -Degl=enabled \
+ -Dgallium-va=disabled \
+ -Dgallium-vdpau=disabled \
+ -Dgallium-xa=disabled \
+ -Dglx=dri \
+ -Dmicrosoft-clc=disabled \
+ $(confflags_DIRECT_RENDERING) \
+ $(confflags_GBM) \
+ $(confflags_DRI3) \
+ $(confflags_EGL) \
+ $(confflags_GALLIUM) \
+ $(confflags_GLES) \
+ $(confflags_OSMESA) \
+ $(confflags_SSE2) \
+ $(confflags_VALGRIND)
+
+override_dh_clean:
+ rm -rf .pc
+ rm -rf build
+ rm -rf configure bin/config.guess bin/config.sub config.h.in
+ rm -rf $$(find -name Makefile.in)
+ rm -rf bin/install-sh bin/ltmain.sh
+ for file in debian/*.in; do rm -f $${file%%.in}; done
+ find -name '*.pyc' -delete
+ find -name '__pycache__' -delete
+ dh_clean
+
+override_dh_auto_configure:
+ $(buildflags) dh_auto_configure -- \
+ $(confflags)
+
+override_dh_auto_install:
+ dh_auto_install
+ for file in debian/*.in; \
+ do \
+ sed -e"s,\$${DEB_HOST_MULTIARCH},$(DEB_HOST_MULTIARCH),g" \
+ $${file} > $${file%%.in}; \
+ done
+
+# some tests are expected to fail for now, drop this when upstream has
+# better cross-build testing in place and expected failures fixed
+override_dh_auto_test:
+ -dh_auto_test
+
+allpkg = $(shell dh_listpackages -a)
+
+override_dh_installchangelogs:
+ dh_installchangelogs -a
+ dh_installchangelogs -pmesa-common-dev
+
+override_dh_install:
+ # purge .la files
+ find debian/tmp/ -name '*.la' -exec rm '{}' ';'
+
+ # Get rid of some files which aren't installed. Do not
+ # use -f to ensure we notice disappearing files:
+ rm debian/tmp/usr/lib/*/libglapi.so
+ rm debian/tmp/usr/lib/*/libEGL_mesa.so
+ rm debian/tmp/usr/lib/*/libGLX_mesa.so
+
+ # Copy the hardlinked *_dri.so correctly.
+ install -m755 -d debian/libgl1-mesa-dri/usr/lib/${DEB_HOST_MULTIARCH}/dri/
+ mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/dri/*_dri.so \
+ debian/libgl1-mesa-dri/usr/lib/${DEB_HOST_MULTIARCH}/dri/
+
+ ifneq ($(DEB_HOST_ARCH_OS), hurd)
+ # Copy the hardlinked vdpau drivers correctly.
+ install -m755 -d debian/mesa-vdpau-drivers/usr/lib/${DEB_HOST_MULTIARCH}/vdpau/
+ mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/vdpau/libvdpau*.so* \
+ debian/mesa-vdpau-drivers/usr/lib/${DEB_HOST_MULTIARCH}/vdpau/
+
+ ifeq (,$(filter pkg.mesa.nolibva,$(DEB_BUILD_PROFILES)))
+ # Copy the hardlinked va drivers correctly.
+ install -m755 -d debian/mesa-va-drivers/usr/lib/${DEB_HOST_MULTIARCH}/dri/
+ mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/dri/*_drv_video.so \
+ debian/mesa-va-drivers/usr/lib/${DEB_HOST_MULTIARCH}/dri/
+ endif
+ endif
+
+ dh_install -a
+
+ # Install bug control and script:
+ set -e; for p in $(allpkg); do \
+ install -d debian/$$p/usr/share/bug/$$p && \
+ install -m 644 debian/local/control debian/$$p/usr/share/bug/$$p && \
+ install -m 755 debian/local/script debian/$$p/usr/share/bug/$$p; \
+ done
+
+override_dh_missing:
+ dh_missing --fail-missing
+
+override_dh_makeshlibs:
+ dh_makeshlibs -a -- -c4
+
+%:
+ dh $@ --with quilt \
+ --builddirectory=build/ \
+ --buildsystem=meson
+
+# For maintainer use only, generate a tarball:
+gentarball:
+ git archive --format=tar upstream-experimental --prefix=$(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)/ \
+ | gzip -9 > ../$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM).orig.tar.gz