#!/usr/bin/make -f 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) -GTEST_OUTPUT=xml:./ dh_auto_build -- 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_FATAL_COMPILE_WARNINGS=OFF\ -DMIR_LINK_TIME_OPTIMIZATION=ON\ ifeq ($(filter ppc64el,$(DEB_HOST_ARCH)),ppc64el) # Disable spurious error on GCC-12 ifneq ($(shell gcc --version | grep '12.[[:digit:]]\+.[[:digit:]]\+$$'),) COMMON_CONFIGURE_OPTIONS += -DMIR_COMPILER_QUIRKS="libinput_environment.cpp:restrict" endif endif ifeq ($(filter riscv64,$(DEB_HOST_ARCH)),riscv64) # Disable spurious error on GCC-12 ifneq ($(shell gcc --version | grep '12.[[:digit:]]\+.[[:digit:]]\+$$'),) COMMON_CONFIGURE_OPTIONS += -DMIR_COMPILER_QUIRKS="test_linearising_executor.cpp:use-after-free" endif endif # Disable LTO if optimizations are off ifeq ($(filter noopt,$(DEB_BUILD_OPTIONS)),noopt) COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=OFF DEB_BUILD_MAINT_OPTIONS += optimize=-lto else # Disable LTO, due to failing to build ifneq (,$(filter $(DEB_HOST_ARCH),mips64el ppc64 s390x)) COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=OFF DEB_BUILD_MAINT_OPTIONS += optimize=-lto else COMMON_CONFIGURE_OPTIONS += -DMIR_LINK_TIME_OPTIMIZATION=ON endif endif ifneq (,$(filter noinsttest,$(DEB_BUILD_PROFILES))) COMMON_CONFIGURE_OPTIONS += -DMIR_ENABLE_TESTS=OFF 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 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 dh_auto_configure -- \ $(COMMON_CONFIGURE_OPTIONS) \ -DMIR_PLATFORM=$(AVAILABLE_PLATFORMS) \ $(OVERRIDE_CONFIGURE_OPTIONS) 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 -Nlibmiral5 -V -Nmir-test-tools # libmiral5 *has* a symbols file, so we don't need to -V it! dh_makeshlibs -plibmiral5 -- -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 -Nlibmiral5 -Nlibmiral-dev dh_gencontrol -plibmiral5 -plibmiral-dev -- -v$(MIRAL_VERSION) -V'libmiral5:Version=$(MIRAL_VERSION)' get-orig-source: uscan --noconf --force-download --rename --download-current-version --repack --destdir=..