#!/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 include /usr/share/dpkg/buildflags.mk %: dh $@ -Bbuild-$(DEB_HOST_ARCH) --with pkgkde_symbolshelper # 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) export HOME="$(BUILD_HOME)" && export XDG_RUNTIME_DIR="$(BUILD_XDG_RUNTIME_DIR)" && GTEST_OUTPUT=xml:./ dh_auto_build -- ARGS="-V" ptest || true 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_FATAL_COMPILE_WARNINGS=OFF\ ifeq ($(filter ppc64el,$(DEB_HOST_ARCH)),ppc64el) # Disable spurious error on GCC>=12 ifneq ($(shell gcc --version | grep '1[234].[[:digit:]]\+.[[:digit:]]\+$$'),) COMMON_CONFIGURE_OPTIONS += -DMIR_COMPILER_QUIRKS="libinput_environment.cpp:restrict" endif ifneq ($(shell gcc --version | grep '1[234].[[:digit:]]\+.[[:digit:]]\+$$'),) COMMON_CONFIGURE_OPTIONS += -DMIR_COMPILER_QUIRKS="test_touchspot_controller.cpp:array-bounds" endif endif ifeq ($(filter riscv64,$(DEB_HOST_ARCH)),riscv64) # Disable spurious error on GCC>=12 ifneq ($(shell gcc --version | grep] '1[234].[[:digit:]]\+.[[:digit:]]\+$$'),) COMMON_CONFIGURE_OPTIONS += -DMIR_COMPILER_QUIRKS="test_linearising_executor.cpp:use-after-free" endif endif # Disable LTO on broken binutils # https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/2070302 ifneq ($(shell ld --version | grep '2.43.1$$'),) DEB_BUILD_MAINT_OPTIONS += optimize=-lto endif # We can't guarantee non-Ubuntu builds will build against WLCS packages we # control, so disable it on non-Ubuntu builds #ifeq ($(filter Ubuntu,$(DEB_VENDOR)),) COMMON_CONFIGURE_OPTIONS += -DMIR_RUN_WLCS_TESTS=OFF #endif # see, if this prevents from build failures on some exotic architectures (like e.g. mips64el): COMMON_CONFIGURE_OPTIONS += -DMIR_USE_LD=ld ifneq (,$(filter noinsttest,$(DEB_BUILD_PROFILES))) COMMON_CONFIGURE_OPTIONS += -DMIR_ENABLE_TESTS=OFF endif ifneq (,$(filter cross,$(DEB_BUILD_PROFILES))) COMMON_CONFIGURE_OPTIONS += -DMIR_WAYLAND_GENERATOR_EXECUTABLE=/usr/bin/mir_wayland_generator 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=gbm-kms\;x11\;wayland\;eglstream-kms else AVAILABLE_PLATFORMS=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) # binary-only builds still need the doc files, otherwise the # install target fails override_dh_auto_build-arch: override_dh_auto_build-indep dh_auto_build # Only build the docs when we need them override_dh_auto_build-indep: dh_auto_build -- doc override_dh_auto_install-indep: dh_auto_build -- DESTDIR=$(CURDIR)/debian/tmp doc-install cd debian/tmp/usr/share/doc/mir-doc/html/ && rdfind -makesymlinks true . cd debian/tmp/usr/share/doc/mir-doc/html/ && symlinks -rc . # 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 -Nlibmiral5t64 -V -Nmir-test-tools # libmiral5 *has* a symbols file, so we don't need to -V it! dh_makeshlibs -plibmiral5t64 -- -v$(MIRAL_RELEASE) override_dh_missing: dh_missing --fail-missing # 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 -Nlibmiral5t64 -Nlibmiral-dev dh_gencontrol -plibmiral5t64 -plibmiral-dev -- -v$(MIRAL_VERSION) -V'libmiral5t64:Version=$(MIRAL_VERSION)' 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=..