]> git.zerfleddert.de Git - m1-debian/blobdiff - mesa-debian/rules
add script to build debian mesa packages
[m1-debian] / mesa-debian / rules
diff --git a/mesa-debian/rules b/mesa-debian/rules
new file mode 100755 (executable)
index 0000000..c925492
--- /dev/null
@@ -0,0 +1,281 @@
+#!/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
Impressum, Datenschutz