#!/usr/bin/make -f # add DEB_* variables to the environment include /usr/share/dpkg/architecture.mk include /usr/share/dpkg/pkg-info.mk include /usr/share/dpkg/vendor.mk # determine whether this is a stable or development build VERSION=$(shell echo $(DEB_SOURCE) | sed s/wine//g) ifeq (x$(VERSION), x) DEBSUFFIX=-stable else DEBSUFFIX=$(VERSION) endif export DEBSUFFIX # installation paths MANDIR=usr/share/man BINDIR=usr/lib/wine$(VERSION) DATDIR=usr/share/wine$(VERSION) INCDIR=usr/include/wine$(VERSION) LIBDIR=usr/lib/$(DEB_HOST_MULTIARCH)/wine$(VERSION) # extra information to add to the version string export VENDOR=$(DEB_VENDOR) $(DEB_VERSION) # enable verbose build log export DH_VERBOSE=1 # indicate that binary targets do not require root (not supported in Stretch) ifeq (,$(findstring ~bpo9,$(DEB_VERSION))) export DEB_RULES_REQUIRES_ROOT=no endif # enable hardening buildflags (fortify is not yet supported upstream) export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-fortify # linker options export DEB_LDFLAGS_MAINT_APPEND+=-Wl,-rpath,/$(LIBDIR) # gcc 10 defaults to -fno-common but wine assumes -fcommon, so set it manually export DEB_CFLAGS_MAINT_APPEND+=-fcommon # ignore shift overflow warnings (currently only an issue on arm) export DEB_CFLAGS_MAINT_APPEND+=-Wno-shift-overflow # ignore all defined but unused function warnings export DEB_CFLAGS_MAINT_APPEND+=-Wno-unused-function # ignore warning about deprecated CUPS API for now export DEB_CFLAGS_MAINT_APPEND+=-Wno-deprecated-declarations # configure options CONFLAGS=--with-gnutls \ --without-hal \ --without-mingw \ --without-netapi \ --disable-tests \ --enable-maintainer-mode \ --libdir=/$(LIBDIR) \ --bindir=/$(BINDIR) \ --mandir=/$(MANDIR) \ --includedir=/$(INCDIR) \ --datarootdir=/$(DATDIR) \ $(shell dpkg-buildflags --export=cmdline) \ # flags specific to kfreebsd ifeq ($(DEB_BUILD_ARCH_OS), kfreebsd) export DEB_LDFLAGS_MAINT_APPEND+=-lfreebsd-glue endif # enable oss only on kfreebsd ifneq ($(DEB_HOST_ARCH_OS), kfreebsd) CONFLAGS+=--without-oss endif # enable wine64 on 64-bit architectures ifeq ($(DEB_BUILD_ARCH_BITS), 64) CONFLAGS+=--enable-win64 endif # on armel build for armv5t ifeq ($(DEB_HOST_ARCH), armel) CONFLAGS+=--with-float-abi=soft export DEB_CFLAGS_MAINT_APPEND+=-march=armv5t export DEB_LDFLAGS_MAINT_APPEND+=-march=armv5t endif # on arm64 build using clang ifeq ($(DEB_HOST_ARCH), arm64) export CC=clang export CXX=clang++ export DEB_CFLAGS_MAINT_APPEND+=-Wno-enum-conversion -Wno-absolute-value -Wno-misleading-indentation -Wno-implicit-const-int-float-conversion -Wno-sizeof-array-div endif # use date of the latest changelog update as the build date export WIDL_TIME_OVERRIDE=$(SOURCE_DATE_EPOCH) # additional files to generate INSTALLS=$(shell ls debian/*VERSION* | sed s/VERSION/$(VERSION)/) \ debian/bug-control \ # sonames to compute additional dependencies sonamesDepends=$(shell \ grep "^\#define SONAME_" include/config.h | \ grep -E "libfontconfig|libfreetype|libncurses" | \ cut -d\" -f2) sonamesRecommends=$(shell \ grep "^\#define SONAME_" include/config.h | \ grep -v libnetapi | \ cut -d\" -f2) debian/control: debian/control.in sed "s/VERSION/$(VERSION)/g;s/DEBSUFFIX/$(DEBSUFFIX)/g" < $< > $@ debian/wine$(VERSION)%: debian/wineVERSION% sed "s/VERSION/$(VERSION)/g;s/DEBSUFFIX/$(DEBSUFFIX)/g" < $< > $@ debian/wine32$(VERSION)%: debian/wine32VERSION% sed "s/VERSION/$(VERSION)/g;s/DEBSUFFIX/$(DEBSUFFIX)/g" < $< > $@ debian/wine64$(VERSION)%: debian/wine64VERSION% sed "s/VERSION/$(VERSION)/g;s/DEBSUFFIX/$(DEBSUFFIX)/g" < $< > $@ debian/libwine$(VERSION)%: debian/libwineVERSION% sed s/VERSION/$(VERSION)/g < $< > $@ debian/bug-control: debian/bug-control.in sed s/VERSION/$(VERSION)/g < $< > $@ %: dh $@ --parallel --with autoreconf override_dh_auto_configure: # output compiler information $(CC) --version # automatically generated files ./debian/scripts/generate libs/port/cptable.generated cpmap ./debian/scripts/generate server/trace.generated make_requests ./debian/scripts/generate server/request.generated make_requests ./tools/make_fir ./tools/make_unicode ./tools/make_requests cd dlls/opengl32 && ./make_opengl # autotools files ln -sf /usr/share/misc/config.sub tools ln -sf /usr/share/misc/config.guess tools # image files used to generate icons for parts of wine ln -sf ../../dlls/user32/resources/oic_hand.svg dlls/display.drv16/oic_hand.svg ln -sf ../../dlls/user32/resources/oic_bang.svg dlls/comctl32/idi_tt_warn_sm.svg ln -sf ../../dlls/user32/resources/oic_note.svg dlls/comctl32/idi_tt_info_sm.svg ln -sf ../../dlls/user32/resources/oic_hand.svg dlls/comctl32/idi_tt_error_sm.svg ln -sf ../../dlls/shell32/resources/move.svg dlls/comctl32/idi_dragarrow.svg ln -sf ../../dlls/shell32/resources/image.svg programs/regedit/bin.svg ln -sf ../../dlls/shell32/resources/folder.svg programs/regedit/folder.svg ln -sf ../../dlls/shell32/resources/document.svg programs/regedit/string.svg ln -sf ../../dlls/shell32/resources/mycomputer.svg programs/regedit/computer.svg ln -sf ../../dlls/shell32/resources/folder_open.svg programs/regedit/folderopen.svg ln -sf ../../dlls/shell32/resources/window.svg programs/taskmgr/window.svg ln -sf ../../dlls/shell32/resources/window.svg programs/taskmgr/windowsm.svg ln -sf ../../dlls/shell32/resources/drive.svg dlls/comdlg32/hdisk.svg ln -sf ../../dlls/shell32/resources/folder.svg dlls/comdlg32/folder.svg ln -sf ../../dlls/shell32/resources/network.svg dlls/comdlg32/network.svg ln -sf ../../dlls/shell32/resources/folder_open.svg dlls/comdlg32/folder2.svg ln -sf ../../dlls/shell32/resources/disk_drive.svg dlls/comdlg32/floppy.svg ln -sf ../../dlls/shell32/resources/optical_drive.svg dlls/comdlg32/cdrom.svg # execute wine's configure script ./configure $(CONFLAGS) override_dh_auto_build-indep: ./tools/makedep libs/port tools/sfnt2fon fonts make -C libs/port make -C tools/sfnt2fon make -C fonts override_dh_auto_install-indep: $(INSTALLS) mkdir -p debian/tmp cp ANNOUNCE debian/tmp/NEWS cp programs/winedbg/README debian/tmp/README.winedbg sed "s|DEBSUFFIX|$(DEBSUFFIX)|g" debian/scripts/wineapploader.in > debian/tmp/wineapploader chmod 755 debian/tmp/wineapploader sed "s|BINDIR|$(BINDIR)|g;s|VERSION|$(VERSION)|g" debian/scripts/wine.in > debian/tmp/wine$(DEBSUFFIX) for dir in loader server programs/msiexec programs/winedbg \ programs/wineconsole programs/regedit programs/regsvr32 \ programs/wineboot programs/winefile programs/winepath \ programs/winecfg; do \ ./tools/makedep $$dir; \ make -C $$dir install-man; \ done for file in $$(find . ! -path "./debian/*" -name \*.man); do \ rename=$$(basename $$file | sed "s/\\./$(DEBSUFFIX)./;s/UTF-8\\.//"); \ cp $$file debian/tmp/$$rename || true; \ done # extract hicolor icon from logo.svg sed '/image\/png/d;s|width="611"|width="209"|' programs/winecfg/logo.svg > debian/tmp/wine$(DEBSUFFIX).svg override_dh_auto_install-arch: $(INSTALLS) mkdir -p debian/tmp cp ANNOUNCE debian/tmp/NEWS cp tools/winedump/README debian/tmp/README.winedump cp server/wineserver debian/tmp/wineserver$(DEB_BUILD_ARCH_BITS) sed "s|BINDIR|$(BINDIR)|g" debian/scripts/winegcc.in > debian/tmp/winegcc$(DEBSUFFIX) sed "s|BINDIR|$(BINDIR)|g;s|VERSION|$(VERSION)|g" debian/scripts/wineserver.in > debian/tmp/wineserver chmod 755 debian/tmp/wineserver dh_auto_install for file in $$(find . ! -path "./debian/*" -name \*.man); do \ rename=$$(basename $$file | sed "s/\\./$(DEBSUFFIX)./;s/UTF-8\\.//"); \ cp $$file debian/tmp/$$rename || true; \ done cp loader/wine.man debian/tmp/usr/share/man/man1/wine64$(DEBSUFFIX).1 test -f debian/tmp/$(BINDIR)/wine-preloader || \ cp debian/scripts/wine-preloader debian/tmp/$(BINDIR) override_dh_shlibdeps: mkdir -p debian/tmp ./debian/scripts/sonames2elf $(sonamesDepends) > debian/tmp/elf.depends ./debian/scripts/sonames2elf $(sonamesRecommends) > debian/tmp/elf.recommends dpkg-shlibdeps --warnings=1 \ -pdlopen \ -dDepends -edebian/tmp/elf.depends \ -dRecommends -edebian/tmp/elf.recommends \ -Tdebian/libwine$(VERSION).substvars dh_shlibdeps override_dh_gencontrol: dh_gencontrol -- \ -Vbuilt:Using="$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W khronos-api unicode-data)" \ override_dh_bugfiles: dh_bugfiles -A override_dh_clean: dh_clean -- $(INSTALLS) make -f debian/rules debian/control override_dh_auto_clean: git clean -Xdf || true make -f debian/rules debian/control QUILT_PATCHES=debian/patches quilt push -af || true dh_auto_clean