292 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			292 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/make -f
 | |
| 
 | |
| include /usr/share/dpkg/default.mk
 | |
| include /usr/share/dpkg/pkg-info.mk
 | |
| 
 | |
| built_binaries := $(shell dh_listpackages)
 | |
| all_binaries := $(shell sed -ne 's/^Package: *//p' < debian/control)
 | |
| 
 | |
| export DEB_BUILD_MAINT_OPTIONS = hardening=+all
 | |
| # Ensure the build aborts when there are still references to undefined symbols
 | |
| # currently fails at least in the im-multipress im module
 | |
| #LDFLAGS += -Wl,-z,defs
 | |
| export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1
 | |
| 
 | |
| APIVER := 3
 | |
| SONAME := 0
 | |
| 
 | |
| LIBDIR := usr/lib/$(DEB_HOST_MULTIARCH)
 | |
| 
 | |
| # earliest version that this release has backwards binary compatibility for
 | |
| GTK_BINARY_VERSION := 3.0.0
 | |
| 
 | |
| # Gtk binary version virtual Provide
 | |
| GTK_BINVER_DEP := gtk$(APIVER)-binver-$(GTK_BINARY_VERSION)
 | |
| 
 | |
| # relative base directory for configuration
 | |
| CONFDIR := etc/gtk-3.0
 | |
| 
 | |
| # relative base directory for all types of modules
 | |
| MODULES_BASE_PATH := $(LIBDIR)/gtk-3.0/$(GTK_BINARY_VERSION)
 | |
| 
 | |
| # package names
 | |
| SHARED_PKG := libgtk-$(APIVER)-$(SONAME)t64
 | |
| COMMON_PKG := libgtk-$(APIVER)-common
 | |
| DEV_PKG := libgtk-$(APIVER)-dev
 | |
| UDEB_PKG := libgtk-$(APIVER)-$(SONAME)-udeb
 | |
| DOC_PKG := libgtk-$(APIVER)-doc
 | |
| BIN_PKG := libgtk-$(APIVER)-bin
 | |
| EXAMPLES_PKG := gtk-$(APIVER)-examples
 | |
| 
 | |
| # files larger than 4k in size will be compressed by dh_compress
 | |
| # so append a .gz suffix to avoid dangling symlinks
 | |
| NEWS := NEWS$(shell find -maxdepth 1 -size +4k -name NEWS -exec echo ".gz" \;)
 | |
| README := README.md$(shell find -maxdepth 1 -size +4k -name README.md -exec echo ".gz" \;)
 | |
| 
 | |
| # Avoid test failures on buildd environments
 | |
| export HOME=$(CURDIR)/debian/build
 | |
| export XDG_RUNTIME_DIR=$(HOME)
 | |
| # So that gsettings can find the (uninstalled) gtk schemas
 | |
| export XDG_DATA_DIRS=/usr/share:$(CURDIR)/debian/build
 | |
| # Put these back to their defaults if we are not running with a clean
 | |
| # environment, so that they are based on the temporary $HOME above
 | |
| unexport XDG_CACHE_HOME
 | |
| unexport XDG_CONFIG_DIRS
 | |
| unexport XDG_CONFIG_HOME
 | |
| unexport XDG_DATA_HOME
 | |
| 
 | |
| # macro computing the list of 'debian/<pkg>.*" files which have a
 | |
| # corresponding ".in" file; pass the list of packages in $(1)
 | |
| dh_subst_files = $(patsubst %.in,%,$(wildcard $(addprefix debian/, $(addsuffix *.in, $(1)))))
 | |
| 
 | |
| debian/%: debian/%.in
 | |
| 	dh_testdir
 | |
| 	sed \
 | |
| 		-e "s#@SONAME@#$(SONAME)#g" \
 | |
| 		-e "s#@APIVER@#$(APIVER)#g" \
 | |
| 		-e "s#@SHARED_PKG@#$(SHARED_PKG)#g" \
 | |
| 		-e "s#@COMMON_PKG@#$(COMMON_PKG)#g" \
 | |
| 		-e "s#@DEV_PKG@#$(DEV_PKG)#g" \
 | |
| 		-e "s#@DOC_PKG@#$(DOC_PKG)#g" \
 | |
| 		-e "s#@BIN_PKG@#$(BIN_PKG)#g" \
 | |
| 		-e "s#@LIBDIR@#$(LIBDIR)#g" \
 | |
| 		-e 's#@CONFDIR@#$(CONFDIR)#g' \
 | |
| 		-e "s#@MODULES_BASE_PATH@#$(MODULES_BASE_PATH)#g" \
 | |
| 		-e "s#@NEWS@#$(NEWS)#g" \
 | |
| 		-e "s#@README@#$(README)#g" \
 | |
| 		$@.in > $@
 | |
| 
 | |
| dh_options =
 | |
| 
 | |
| configure_flags_common = \
 | |
| 	-Dx11_backend=true \
 | |
| 	$(NULL)
 | |
| 
 | |
| configure_flags_deb = \
 | |
| 	--default-library=shared \
 | |
| 	-Dbroadway_backend=true \
 | |
| 	-Dinstalled_tests=true \
 | |
| 	-Dintrospection=true \
 | |
| 	-Dprint_backends=cups,file \
 | |
| 	$(NULL)
 | |
| 
 | |
| ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
 | |
| configure_flags_deb += --cross-file=$(DEB_HOST_GNU_TYPE)-gobject-introspection.ini
 | |
| endif
 | |
| 
 | |
| ifeq (,$(filter stage1,$(DEB_BUILD_PROFILES)))
 | |
| configure_flags_deb += -Dcolord=yes
 | |
| else
 | |
| configure_flags_deb += -Dcolord=no
 | |
| endif
 | |
| 
 | |
| ifneq (,$(filter amd64 arm64 armel armhf i386 mips64el ppc64el riscv64 s390x hppa loong64 powerpc ppc64 sh4,$(DEB_HOST_ARCH)))
 | |
| configure_flags_deb += -Dprofiler=true
 | |
| else
 | |
| configure_flags_deb += -Dprofiler=false
 | |
| endif
 | |
| 
 | |
| ifneq (,$(filter amd64 arm64 armel armhf i386 mips64el ppc64el riscv64 s390x,$(DEB_HOST_ARCH)))
 | |
| dh_options += -Ngtk-update-icon-cache
 | |
| endif
 | |
| 
 | |
| ifeq (linux,$(DEB_HOST_ARCH_OS))
 | |
| configure_flags_deb += -Dwayland_backend=true
 | |
| else
 | |
| configure_flags_deb += -Dwayland_backend=false
 | |
| endif
 | |
| 
 | |
| ifeq ($(filter nodoc,$(DEB_BUILD_PROFILES)),)
 | |
| configure_flags_deb += -Dman=true
 | |
| else
 | |
| configure_flags_deb += -Dman=false
 | |
| endif
 | |
| 
 | |
| ifeq ($(filter %-doc,$(built_binaries)),)
 | |
| configure_flags_deb += -Dgtk_doc=false
 | |
| else
 | |
| configure_flags_deb += -Dgtk_doc=true
 | |
| endif
 | |
| 
 | |
| ifeq ($(shell dpkg-vendor --is Ubuntu && echo yes), yes)
 | |
| # Not in main repository
 | |
| configure_flags_deb += -Dcloudproviders=false
 | |
| else
 | |
| configure_flags_deb += -Dcloudproviders=true
 | |
| endif
 | |
| 
 | |
| configure_flags_udeb = \
 | |
| 	-Dbroadway_backend=false \
 | |
| 	-Dcolord=no \
 | |
| 	-Dgtk_doc=false \
 | |
| 	-Dintrospection=false \
 | |
| 	-Dman=false \
 | |
| 	-Dprint_backends=file \
 | |
| 	-Dwayland_backend=false \
 | |
| 	$(NULL)
 | |
| 
 | |
| %:
 | |
| 	dh $@ $(dh_options)
 | |
| 
 | |
| fuzzy_reftests =
 | |
| 
 | |
| # https://gitlab.gnome.org/GNOME/gtk/-/issues/5545
 | |
| fuzzy_reftests += label-background
 | |
| 
 | |
| # Debian-specific
 | |
| ignore_reftests += \
 | |
| 	flipping-icons \
 | |
| 	$(NULL)
 | |
| 
 | |
| ifneq (,$(filter $(DEB_HOST_ARCH_CPU),i386))
 | |
| ignore_reftests += linear-gradient
 | |
| endif
 | |
| 
 | |
| # https://bugs.debian.org/1024392
 | |
| ifeq (big,$(DEB_HOST_ARCH_ENDIAN))
 | |
| 	ignore_reftests += border-image-excess-size
 | |
| endif
 | |
| 
 | |
| xfail_reftests = \
 | |
| 	$(NULL)
 | |
| 
 | |
| override_dh_clean:
 | |
| 	rm -f $(call dh_subst_files,$(all_binaries))
 | |
| 	rm -rf debian/build debian/install
 | |
| 	# The build system does not automatically update the GResource files
 | |
| 	# when resources change. Force an update in case we ship a patch which
 | |
| 	# modifies the theme CSS files.
 | |
| 	rm -f gtk/theme/Adwaita/gtk-contained.css
 | |
| 	rm -f gtk/theme/Adwaita/gtk-contained-dark.css
 | |
| 	rm -f gtk/theme/HighContrast/gtk-contained.css
 | |
| 	rm -f gtk/theme/HighContrast/gtk-contained-inverse.css
 | |
| 	dh_clean
 | |
| 
 | |
| # Add dependencies to generate files from the debian/*.in ones
 | |
| override_dh_auto_build: $(call dh_subst_files,$(all_binaries))
 | |
| 
 | |
| override_dh_auto_build: rebuild-emoji
 | |
| rebuild-emoji:
 | |
| 	${DEB_BUILD_GNU_TYPE}-gcc ${CPPFLAGS_FOR_BUILD} ${CFLAGS_FOR_BUILD} ${LDFLAGS_FOR_BUILD} \
 | |
| 		-o debian/convert-emoji gtk/emoji/convert-emoji.c \
 | |
| 		$$(${DEB_BUILD_GNU_TYPE}-pkgconf --cflags --libs json-glib-1.0)
 | |
| 	set -eu; for input in debian/missing-sources/emojibase/packages/data/*/data.raw.json; do \
 | |
| 		lang=$$(echo $$input | sed -ne 's,^.*/\([a-z][a-z]\)/data.raw.json$$,\1,p'); \
 | |
| 		output=gtk/emoji/$$lang.data; \
 | |
| 		debian/convert-emoji $$input $$output; \
 | |
| 	done
 | |
| 
 | |
| override_dh_auto_configure: debian/control
 | |
| 	dh_auto_configure \
 | |
| 		--builddirectory=debian/build/deb \
 | |
| 		-- \
 | |
| 		$(configure_flags_common) \
 | |
| 		$(configure_flags_deb) \
 | |
| 		$(NULL)
 | |
| ifneq ($(filter %-udeb,$(built_binaries)),)
 | |
| 	dh_auto_configure \
 | |
| 		--builddirectory=debian/build/udeb \
 | |
| 		-- \
 | |
| 		$(configure_flags_common) \
 | |
| 		$(configure_flags_udeb) \
 | |
| 		$(NULL)
 | |
| endif
 | |
| 
 | |
| override_dh_auto_build:
 | |
| 	( cd gtk/theme/Adwaita; ./parse-sass.sh )
 | |
| 	( cd gtk/theme/HighContrast; ./parse-sass.sh )
 | |
| 	dh_auto_build --builddirectory=debian/build/deb
 | |
| ifneq ($(filter %-udeb,$(built_binaries)),)
 | |
| 	dh_auto_build --builddirectory=debian/build/udeb
 | |
| endif
 | |
| 
 | |
| override_dh_auto_test:
 | |
| # The tests require librsvg2-common which is only available on architectures
 | |
| # where rust has been ported to, disable the tests on the other ones
 | |
| ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 mips64el mipsel ppc64el s390x powerpc ppc64 riscv64 sparc64))
 | |
| ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
 | |
| 	# So that gsettings can find the (uninstalled) gtk schemas
 | |
| 	mkdir -p debian/build/glib-2.0/schemas/
 | |
| 	cp gtk/org.gtk.* debian/build/glib-2.0/schemas/
 | |
| 	glib-compile-schemas debian/build/glib-2.0/schemas/
 | |
| 	env \
 | |
| 		BUILDDIR=$(CURDIR)/debian/build/deb \
 | |
| 		FUZZY_REFTESTS="$(fuzzy_reftests)" \
 | |
| 		IGNORE_REFTESTS="$(ignore_reftests)" \
 | |
| 		LIBGL_ALWAYS_SOFTWARE=1 \
 | |
| 		XFAIL_REFTESTS="$(xfail_reftests)" \
 | |
| 	debian/run-tests.sh --timeout-multiplier 4
 | |
| endif
 | |
| endif
 | |
| 
 | |
| override_dh_auto_install:
 | |
| 	dh_auto_install --builddirectory=debian/build/deb --destdir=debian/install/deb
 | |
| ifneq ($(filter %-udeb,$(built_binaries)),)
 | |
| 	dh_auto_install --builddirectory=debian/build/udeb --destdir=debian/install/udeb
 | |
| endif
 | |
| 
 | |
| override_dh_install:
 | |
| 	dh_install -p$(UDEB_PKG) --sourcedir=debian/install/udeb
 | |
| 	dh_install --remaining-packages --sourcedir=debian/install/deb
 | |
| 
 | |
| # debhelper >= 13.4 makes all of /usr/libexec executable, which is not
 | |
| # quite right for installed-tests
 | |
| override_dh_fixperms:
 | |
| 	dh_fixperms -Xusr/libexec/installed-tests
 | |
| ifneq ($(filter $(EXAMPLES_PKG),$(built_binaries)),)
 | |
| 	chmod --recursive --changes a+rX,u+w,og-w debian/$(EXAMPLES_PKG)/usr/libexec/installed-tests
 | |
| endif
 | |
| 
 | |
| override_dh_missing:
 | |
| ifneq ($(filter %-udeb,$(built_binaries)),)
 | |
| 	dh_missing --sourcedir=debian/install/udeb --list-missing
 | |
| endif
 | |
| 	dh_missing --sourcedir=debian/install/deb --list-missing
 | |
| 
 | |
| override_dh_installchangelogs:
 | |
| 	dh_installchangelogs -XChangeLog
 | |
| 
 | |
| override_dh_installdocs:
 | |
| 	dh_installdocs -p$(COMMON_PKG) README.md NEWS
 | |
| 	# We need to install into /u/s/d/l-doc, not -dev according to
 | |
| 	# debhelper 11's defaults, otherwise it would have file conflicts
 | |
| 	dh_installdocs -p$(DOC_PKG) --doc-main-package=$(DOC_PKG) -X.in
 | |
| 	dh_installdocs --remaining-packages -A
 | |
| 
 | |
| override_dh_installman:
 | |
| 	dh_installman --sourcedir=debian/install/deb
 | |
| 
 | |
| override_dh_makeshlibs:
 | |
| 	dh_makeshlibs -p$(SHARED_PKG) --add-udeb=$(UDEB_PKG) -X$(MODULES_BASE_PATH) -- -c4
 | |
| 	dh_makeshlibs -plibgail-3-0t64 -- -c4
 | |
| 	dh_makeshlibs --remaining-packages -X$(MODULES_BASE_PATH)
 | |
| 
 | |
| dpkg_gencontrol_args = -Vgtk:BinVer=$(GTK_BINVER_DEP)
 | |
| # libcloudproviders is in Ubuntu "universe"
 | |
| ifneq ($(shell dpkg-vendor --query vendor),Ubuntu)
 | |
| dpkg_gencontrol_args += -VcloudProvider:Depends='libcloudproviders-dev (>= 0.3.2)'
 | |
| endif
 | |
| 
 | |
| override_dh_gencontrol:
 | |
| 	dh_gencontrol -- $(dpkg_gencontrol_args)
 | 
