X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/m1-debian/blobdiff_plain/95a1bb661cddd68c3c19ec339b5663dc720228a8..accb1901940e0e7dff30dbee35800bb24b0a76bc:/mesa-debian/rules?ds=inline diff --git a/mesa-debian/rules b/mesa-debian/rules new file mode 100755 index 0000000..c925492 --- /dev/null +++ b/mesa-debian/rules @@ -0,0 +1,281 @@ +#!/usr/bin/make -f +# debian/rules for the Debian mesa package +# Copyright © 2006 Thierry Reding + +# 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