0e70d3892e
Some checks failed
PikaOS Package Build & Release (amd64-v3) / build (push) Failing after 8m53s
335 lines
11 KiB
Makefile
Executable File
335 lines
11 KiB
Makefile
Executable File
#!/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
|
|
LLVM_VERSION = 18
|
|
export PATH:=/usr/lib/llvm-$(LLVM_VERSION)/bin/:$(PATH)
|
|
|
|
export DEB_BUILD_MAINT_OPTIONS=optimize=-lto
|
|
export MESON_PACKAGE_CACHE_DIR=/usr/share/cargo/registry/
|
|
|
|
DEB_CFLAGS_MAINT_APPEND := -Wall
|
|
DEB_CXXFLAGS_MAINT_APPEND := -Wall
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), armhf))
|
|
# Workaround for a variant of LP: #725126
|
|
DEB_CFLAGS_MAINT_APPEND += -fno-optimize-sibling-calls
|
|
DEB_CXXFLAGS_MAINT_APPEND += -fno-optimize-sibling-calls
|
|
else ifneq (,$(filter $(DEB_HOST_ARCH), loong64))
|
|
# Workaround loong64 BFD linker crash related to TLSDESC
|
|
DEB_CFLAGS_MAINT_APPEND += -mtls-dialect=trad
|
|
DEB_CXXFLAGS_MAINT_APPEND += -mtls-dialect=trad
|
|
else ifneq (,$(filter $(DEB_HOST_ARCH), m68k))
|
|
# This library has huge jump tables: Debian #1067207
|
|
DEB_CFLAGS_MAINT_APPEND += -mlong-jump-table-offsets
|
|
DEB_CXXFLAGS_MAINT_APPEND += -mlong-jump-table-offsets
|
|
else ifneq (,$(filter $(DEB_HOST_ARCH), sh4))
|
|
# Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83143
|
|
DEB_CFLAGS_MAINT_APPEND += -freorder-blocks-algorithm=simple
|
|
DEB_CXXFLAGS_MAINT_APPEND += -freorder-blocks-algorithm=simple
|
|
endif
|
|
buildflags = $(shell \
|
|
DEB_CFLAGS_MAINT_APPEND='$(DEB_CFLAGS_MAINT_APPEND)' \
|
|
DEB_CXXFLAGS_MAINT_APPEND='$(DEB_CXXFLAGS_MAINT_APPEND)' \
|
|
dpkg-buildflags --export=configure)
|
|
|
|
EGL_PLATFORMS = x11
|
|
GALLIUM_DRIVERS =
|
|
VULKAN_DRIVERS =
|
|
VULKAN_LAYERS =
|
|
|
|
confflags_DRI3 = -Ddri3=disabled
|
|
confflags_OSMESA = -Dosmesa=true
|
|
confflags_SSE2 = -Dsse2=true
|
|
confflags_TEFLON = -Dteflon=false
|
|
|
|
LLVM_ARCHS = amd64 arm64 armel armhf i386 loong64 mips64el powerpc ppc64 ppc64el riscv64 s390x sparc64 x32
|
|
RUSTICL_ARCHS = amd64 arm64 armel armhf loong64 mips64el powerpc ppc64 ppc64el riscv64 s390x x32
|
|
NVK_ARCHS = amd64 arm64 armhf ppc64 riscv64 x32
|
|
VALGRIND_ARCHS = amd64 arm64 armhf i386 mips64el powerpc ppc64 ppc64el s390x
|
|
WINE_ARCHS = amd64 arm64 armel armhf i386
|
|
|
|
# hurd doesn't do direct rendering
|
|
ifeq ($(DEB_HOST_ARCH_OS), hurd)
|
|
GALLIUM_DRIVERS += softpipe
|
|
confflags_DIRECT_RENDERING = -Dglx-direct=false
|
|
confflags_GBM = -Dgbm=disabled
|
|
else
|
|
# 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
|
|
|
|
GALLIUM_DRIVERS += nouveau r300 r600 virgl
|
|
confflags_DIRECT_RENDERING = -Dglx-direct=true
|
|
confflags_DRI3 = -Ddri3=enabled
|
|
confflags_GBM = -Dgbm=enabled
|
|
confflags_GALLIUM += -Dgallium-extra-hud=true
|
|
confflags_GALLIUM += -Dgallium-vdpau=enabled
|
|
confflags_GALLIUM += -Dlmsensors=enabled
|
|
|
|
# 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 loong64 riscv64))
|
|
GALLIUM_DRIVERS += lima
|
|
endif
|
|
|
|
# Build intel drivers on archs where libdrm-intel is installed
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32))
|
|
GALLIUM_DRIVERS += crocus i915 iris svga
|
|
VULKAN_DRIVERS += intel intel_hasvk
|
|
# svga needs xa state tracker
|
|
confflags_GALLIUM += -Dgallium-xa=enabled
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), amd64))
|
|
confflags_GALLIUM += -Dintel-clc=enabled
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), $(VALGRIND_ARCHS)))
|
|
confflags_VALGRIND += -Dvalgrind=enabled
|
|
endif
|
|
|
|
# WSL supports only amd64 and arm64
|
|
DOZEN_INSTALLED=no
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64))
|
|
GALLIUM_DRIVERS += d3d12
|
|
VULKAN_DRIVERS += microsoft-experimental
|
|
DOZEN_INSTALLED=yes
|
|
endif
|
|
|
|
# LLVM is required for building r300g, radeonsi and llvmpipe drivers.
|
|
# It's also required for building OpenCL support.
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), $(LLVM_ARCHS)))
|
|
GALLIUM_DRIVERS += radeonsi zink llvmpipe
|
|
|
|
# drop virtio from armel, it doesn't build
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), armel))
|
|
VULKAN_DRIVERS += amd swrast
|
|
else
|
|
VULKAN_DRIVERS += amd swrast virtio
|
|
endif
|
|
|
|
VULKAN_LAYERS += device-select intel-nullhw overlay
|
|
confflags_GALLIUM += -Dllvm=enabled
|
|
confflags_GALLIUM += -Dgallium-opencl=icd
|
|
|
|
# Build rusticl for archs where rustc is available
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), $(RUSTICL_ARCHS)))
|
|
confflags_GALLIUM += -Dgallium-rusticl=true
|
|
endif
|
|
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), $(NVK_ARCHS)))
|
|
VULKAN_DRIVERS += nouveau
|
|
endif
|
|
|
|
# nine makes sense only on archs that build wine
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), $(WINE_ARCHS)))
|
|
confflags_GALLIUM += -Dgallium-nine=true
|
|
endif
|
|
else
|
|
GALLIUM_DRIVERS += softpipe
|
|
confflags_GALLIUM += -Dllvm=disabled
|
|
endif
|
|
|
|
ifeq (,$(filter pkg.mesa.nolibva,$(DEB_BUILD_PROFILES)))
|
|
confflags_GALLIUM += -Dgallium-va=enabled
|
|
confflags_GALLIUM += -Dvideo-codecs="all"
|
|
endif
|
|
|
|
# Teflon only supports arm64
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), arm64))
|
|
confflags_TEFLON = -Dteflon=true
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(DEB_HOST_ARCH), i386)
|
|
confflags_SSE2 = -Dsse2=false
|
|
endif
|
|
|
|
empty:=
|
|
space := $(empty) $(empty)
|
|
comma := ,
|
|
EGL_PLATFORMS := $(patsubst %,'%',$(EGL_PLATFORMS))
|
|
EGL_PLATFORMS_LIST := $(subst $(space),$(comma),$(EGL_PLATFORMS))
|
|
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_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' \
|
|
-Dplatforms="[$(EGL_PLATFORMS_LIST)]" \
|
|
-Dvulkan-drivers="[$(VULKAN_DRIVERS_LIST)]" \
|
|
-Dvulkan-layers="[$(VULKAN_LAYERS_LIST)]" \
|
|
-Dglvnd=enabled \
|
|
-Dshared-glapi=enabled \
|
|
-Dgallium-omx=disabled \
|
|
-Db_ndebug=true \
|
|
-Dbuild-tests=true \
|
|
-Dtools=drm-shim \
|
|
$(confflags_DIRECT_RENDERING) \
|
|
$(confflags_GBM) \
|
|
$(confflags_DRI3) \
|
|
$(confflags_GALLIUM) \
|
|
$(confflags_GLES) \
|
|
$(confflags_OSMESA) \
|
|
$(confflags_SSE2) \
|
|
$(confflags_VALGRIND) \
|
|
$(confflags_TEFLON)
|
|
|
|
|
|
rewrite_wrap_files:
|
|
cp -r subprojects subprojects-save
|
|
for crate in paste proc-macro2 quote syn unicode-ident; \
|
|
do \
|
|
export crate_namever=`basename $$MESON_PACKAGE_CACHE_DIR/$$crate-*`; \
|
|
sed -e"/source.*/d" -e"s,$${crate}-.*,$${crate_namever}," -i subprojects/$${crate}.wrap; \
|
|
done
|
|
touch subprojects/rewrite
|
|
|
|
override_dh_clean: regen_control
|
|
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
|
|
rm -rf src/intel/vulkan/grl/parser.out
|
|
rm -rf src/intel/vulkan/grl/parsetab.py
|
|
for file in debian/*.links.in; do rm -f $${file%%.in}; done
|
|
find -name '*.pyc' -delete
|
|
find -name '__pycache__' -delete
|
|
if [ -f subprojects/rewrite ]; then \
|
|
rm -rf subprojects; \
|
|
mv subprojects-save subprojects; \
|
|
fi
|
|
dh_clean
|
|
|
|
override_dh_auto_configure: rewrite_wrap_files
|
|
$(buildflags) dh_auto_configure -- \
|
|
$(confflags)
|
|
|
|
override_dh_auto_install:
|
|
dh_auto_install
|
|
for file in debian/*.links.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
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), $(NVK_ARCHS)))
|
|
rm debian/tmp/usr/bin/mme_fermi_sim_hw_test
|
|
rm debian/tmp/usr/bin/mme_tu104_sim_hw_test
|
|
endif
|
|
# use -f here though
|
|
rm -f debian/tmp/usr/lib/*/libgrl.a
|
|
|
|
# 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
|
|
|
|
ifneq (,$(filter $(DEB_HOST_ARCH), $(RUSTICL_ARCHS)))
|
|
install -m755 -d debian/mesa-opencl-icd/etc/OpenCL/vendors
|
|
mv debian/tmp/etc/OpenCL/vendors/rusticl.icd \
|
|
debian/mesa-opencl-icd/etc/OpenCL/vendors
|
|
install -m755 -d debian/mesa-opencl-icd/usr/lib/${DEB_HOST_MULTIARCH}/
|
|
mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libRusticlOpenCL* \
|
|
debian/mesa-opencl-icd/usr/lib/${DEB_HOST_MULTIARCH}/
|
|
endif
|
|
|
|
# Conditionally enable install of dozen files
|
|
if test "$(DOZEN_INSTALLED)" = "yes"; then \
|
|
sed -i -e "s|#dozen\ ||g" debian/mesa-vulkan-drivers.install; \
|
|
fi
|
|
|
|
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_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
|
|
|
|
regen_control:
|
|
sed -e"s,@LLVM_VERSION@,$(LLVM_VERSION),g" \
|
|
-e"s,@LLVM_ARCHS@,$(LLVM_ARCHS),g" \
|
|
-e"s,@RUSTICL_ARCHS@,$(RUSTICL_ARCHS),g" \
|
|
-e"s,@NVK_ARCHS@,$(NVK_ARCHS),g" \
|
|
-e"s,@VALGRIND_ARCHS@,$(VALGRIND_ARCHS),g" \
|
|
-e"s,@WINE_ARCHS@,$(WINE_ARCHS),g" \
|
|
debian/control.in > debian/control
|