#!/usr/bin/make -f built_binaries := $(shell dh_listpackages) include /usr/share/dpkg/architecture.mk # The name of the build-*.txt profile to choose WINE_BUILD_NAME = win$(DEB_HOST_ARCH_BITS) # The directory in which we will build WINE_BUILD_DIR = build-$(WINE_BUILD_NAME) %: dh $@ # fails with: unrecognized option '-z' export DEB_BUILD_MAINT_OPTIONS := hardening=-relro # Use amd64 build flags when building the package on 64 bit architectures, i386 # otherwise ifeq ($(DEB_HOST_ARCH_BITS),64) WINE_CFLAGS = $(shell dpkg-architecture -aamd64 -f -c dpkg-buildflags --get CFLAGS) WINE_CXXFLAGS = $(shell dpkg-architecture -aamd64 -f -c dpkg-buildflags --get CXXFLAGS) else WINE_CFLAGS = $(shell dpkg-architecture -ai386 -f -c dpkg-buildflags --get CFLAGS) WINE_CXXFLAGS = $(shell dpkg-architecture -ai386 -f -c dpkg-buildflags --get CXXFLAGS) endif LDFLAGS += -flto -Wl,--build-id # Meson flags # TODO: why do dll files end-up in the bindir directory??? WINE_MESON_FLAGS = --buildtype=plain \ --cross-file=build-$(WINE_BUILD_NAME).txt \ --prefix=/usr \ --bindir=lib/dxvk/wine$(DEB_HOST_ARCH_BITS) \ --libdir=lib/dxvk/wine$(DEB_HOST_ARCH_BITS) \ $(WINE_BUILD_DIR) execute_after_dh_auto_clean: rm -fr $(WINE_BUILD_DIR) override_dh_auto_configure: echo "blhc: ignore-line-regexp: C\+\+ linker for the build machine: .*" mkdir -p include/vulkan/include include/spirv/include # DXVK 2.0 now links to vulkan and spirv headers using submodules # add temporary symlinks to use packaged headers instead ln -s /usr/include/vulkan include/vulkan/include/vulkan ln -s /usr/include/vk_video include/vulkan/include/vk_video ln -s /usr/include/spirv include/spirv/include/spirv # DXVK 2.1 now embeds libdisplay-info # TODO: use libdisplay-info-src instead when no need for the fork #ln -s /usr/src/libdisplay-info-src subprojects/libdisplay-info mkdir -p subprojects rm -fr subprojects/libdisplay-info ln -fns ../libdisplay-info subprojects/ test -f subprojects/libdisplay-info/displayid.c # DXVK Native requires a subset of MinGW DirectX headers mkdir -p include/native rm -fr include/native/directx ln -fns ../../mingw-directx-headers include/native/directx test -f include/native/directx/d3d.h dh_auto_configure ifneq ($(filter dxvk-wine%,$(built_binaries)),) echo "WINE_MESON_FLAGS: $(WINE_MESON_FLAGS)" CFLAGS="$(WINE_CFLAGS)" CXXFLAGS="$(WINE_CXXFLAGS)" meson setup $(WINE_MESON_FLAGS) endif ifneq ($(filter dxvk-wine%,$(built_binaries)),) execute_after_dh_auto_build: dh_auto_build --buildsystem=ninja --builddirectory=$(WINE_BUILD_DIR) endif execute_after_dh_auto_install: find debian/tmp/usr/include \( -name "*.txt" -o -name "*.md" \) -delete ifneq ($(filter dxvk-wine%,$(built_binaries)),) dh_auto_install --buildsystem=ninja --builddirectory=$(WINE_BUILD_DIR) # we could change the install script but then the previous installations would be broken rename 's/\.dll$$/.dll.so/' debian/tmp/usr/lib/dxvk/wine$(DEB_HOST_ARCH_BITS)/*.dll endif override_dh_strip: ifneq ($(filter dxvk-wine%,$(built_binaries)),) # strip debug info out of ddls and store it in a separate debug file # (dh_strip for windows) ./debian/strip_debug.sh dxvk-wine$(DEB_HOST_ARCH_BITS) endif # call dh_strip to create the doc directory dh_strip override_dh_shlibdeps: dh_shlibdeps -- -l/usr/lib/$(DEB_HOST_MULTIARCH)/wine execute_after_dh_clean: rm -rf include/vulkan include/spirv subprojects