#!/usr/bin/make -f BUILD_HOME=$(CURDIR)/debian/home BUILD_XDG_RUNTIME_DIR=$(CURDIR)/debian/run include /usr/share/dpkg/default.mk include debian/opts.mk # Needed for ccache to work in case the build directory changed # (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=810871) export CCACHE_BASEDIR = $(shell pwd) export DPKG_GENSYMBOLS_CHECK_LEVEL = 4 # see FEATURE AREAS in dpkg-buildflags(1) export DEB_BUILD_MAINT_OPTIONS = hardening=+all export DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk %: dh $@ -Bbuild-$(DEB_HOST_ARCH) # Enable verbose debugging output from the testsuite export MIR_SERVER_LOGGING = on override_dh_auto_test-arch: ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) ifeq ($(filter mipsel riscv64,$(DEB_HOST_ARCH)),) ifeq ($(DEB_HOST_ARCH_ENDIAN),little) mkdir -p $(BUILD_HOME) mkdir -p $(BUILD_XDG_RUNTIME_DIR) dh_auto_build -- HOME="$(BUILD_HOME)" XDG_RUNTIME_DIR="$(BUILD_XDG_RUNTIME_DIR)" GTEST_OUTPUT=xml:./ ARGS="-V" ptest else echo "Testsuite disabled on $(DEB_HOST_ARCH) due to lack of big-endian support." endif else echo "Testsuite disabled on $(DEB_HOST_ARCH) due to timeouts / slow CPU processing." endif else echo "Testsuite disabled due to DEB_BUILD_OPTIONS=\"$(DEB_BUILD_OPTIONS)\"" endif override_dh_auto_test-indep: echo "Testsuite not run during arch:all builds." COMMON_CONFIGURE_OPTIONS = \ -DCMAKE_INSTALL_LIBEXECDIR="lib/$(DEB_HOST_MULTIARCH)/mir" \ -DMIR_BUILD_INTERPROCESS_TESTS=OFF \ -DMIR_ENABLE_RUST=OFF \ -DMIR_FATAL_COMPILE_WARNINGS=OFF # Disable LTO on broken binutils # https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/2070302 ifeq ($(filter arm64,$(DEB_HOST_ARCH)),arm64) ifneq ($(shell ld --version | grep -E '(2.43.1|2.44|2.44.50.20250707)$$'),) DEB_BUILD_MAINT_OPTIONS += optimize=-lto endif endif # Disable tests on Launchpad riscv64 (canonical/mir#3443, canonical/mir#3470) ifeq ($(USER) $(DEB_HOST_ARCH),buildd riscv64) COMMON_CONFIGURE_OPTIONS += -DMIR_RUN_MIRAL_TESTS=OFF COMMON_CONFIGURE_OPTIONS += -DMIR_RUN_WINDOW_MANAGEMENT_TESTS=OFF COMMON_CONFIGURE_OPTIONS += -DMIR_RUN_WLCS_TESTS=OFF endif # Disable pre-compiled headers on GCC>=12 ifneq ($(shell gcc --version | grep '1[234].[[:digit:]]\+.[[:digit:]]\+$$'),) COMMON_CONFIGURE_OPTIONS += -DMIR_USE_PRECOMPILED_HEADERS=OFF endif export DEB_BUILD_MAINT_OPTIONS $(info COMMON_CONFIGURE_OPTIONS: ${COMMON_CONFIGURE_OPTIONS}) $(info DEB_BUILD_MAINT_OPTIONS: ${DEB_BUILD_MAINT_OPTIONS}) ifneq ($(filter amd64 i386,$(DEB_HOST_ARCH)),) AVAILABLE_PLATFORMS=atomic-kms\;gbm-kms\;x11\;wayland\;eglstream-kms else AVAILABLE_PLATFORMS=atomic-kms\;gbm-kms\;x11\;wayland endif override_dh_auto_configure: ifneq ($(filter armhf,$(DEB_HOST_ARCH)),) dh_auto_configure -- \ $(COMMON_CONFIGURE_OPTIONS) \ -DMIR_RUN_ACCEPTANCE_TESTS=OFF \ -DMIR_RUN_INTEGRATION_TESTS=OFF \ -DMIR_PLATFORM=$(AVAILABLE_PLATFORMS) \ $(OVERRIDE_CONFIGURE_OPTIONS) else ifneq ($(filter arm64,$(DEB_HOST_ARCH)),) dh_auto_configure -- \ $(COMMON_CONFIGURE_OPTIONS) \ -DMIR_RUN_ACCEPTANCE_TESTS=OFF \ -DMIR_PLATFORM=$(AVAILABLE_PLATFORMS) \ $(OVERRIDE_CONFIGURE_OPTIONS) else dh_auto_configure -- \ $(COMMON_CONFIGURE_OPTIONS) \ -DMIR_PLATFORM=$(AVAILABLE_PLATFORMS) \ $(OVERRIDE_CONFIGURE_OPTIONS) endif endif # Run cmake again to pick up wlcs tests, because reasons? cmake build-$(DEB_HOST_ARCH) # Reconstruct the MirAL version MIRAL_VERSION_MAJOR = $(shell perl -n -e '/^set\(MIRAL_VERSION_MAJOR ([0-9]*)\)$$/ && print $$1' src/CMakeLists.txt) MIRAL_VERSION_MINOR = $(shell perl -n -e '/^set\(MIRAL_VERSION_MINOR ([0-9]*)\)$$/ && print $$1' src/CMakeLists.txt) MIRAL_VERSION_PATCH = $(shell perl -n -e '/^set\(MIRAL_VERSION_PATCH ([0-9]*)\)$$/ && print $$1' src/CMakeLists.txt) MIRAL_RELEASE=$(MIRAL_VERSION_MAJOR).$(MIRAL_VERSION_MINOR).$(MIRAL_VERSION_PATCH) MIRAL_VERSION=$(MIRAL_RELEASE).$(DEB_VERSION) # TODO: we'll use a symbol file once mir is abi stable override_dh_makeshlibs: dh_makeshlibs -Nlibmiral7 -V -Nmir-test-tools dh_makeshlibs -plibmiral7 -V -- -v$(MIRAL_RELEASE) # Don't try to strip libraries used as test data override_dh_strip: dh_strip -Xmir-test-data # Don't try to find dependencies of libraries used as test data override_dh_shlibdeps: dh_shlibdeps -Xmir-test-data override_dh_gencontrol: dh_gencontrol -Nlibmiral7 -Nlibmiral-dev dh_gencontrol -plibmiral7 -plibmiral-dev -- -v$(MIRAL_VERSION) -V'libmiral7:Version=$(MIRAL_VERSION)' override_dh_auto_clean: dh_auto_clean # build cruft not cleaned up by CMake rm -f include/miral/miral/version.h include/server/mir/version.h override_dh_clean: dh_clean rm -Rfv $(BUILD_HOME) rm -Rfv $(BUILD_XDG_RUNTIME_DIR) get-orig-source: uscan --noconf --force-download --rename --download-current-version --destdir=..