#!/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) NATIVE_MESON_FLAGS = \ -Dnative_glfw=disabled \ -Dnative_sdl2=enabled \ -Dnative_sdl3=enabled \ $(NULL) 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: .*" # DXVK >= 2.0 now links to SPIRV headers using submodules # add temporary symlinks to use packaged headers instead mkdir -p include/spirv/include ln -fns /usr/include/spirv include/spirv/include/spirv # Assert that the headers have the expected layout test -f include/spirv/include/spirv/unified1/spirv.hpp # src:vulkan-loader is currently too old, we use the vendored copy # Assert that the headers have the expected layout test -f include/vulkan/include/vk_video/vulkan_video_codecs_common.h test -f include/vulkan/include/vulkan/vulkan.h # 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 test -f subprojects/libdisplay-info/displayid.c test -f subprojects/dxbc-spirv/dxbc/dxbc_interface.h # dxbc-spirv needs SPIRV-Headers, too mkdir -p subprojects/dxbc-spirv/submodules/spirv_headers/include ln -fns /usr/include/spirv subprojects/dxbc-spirv/submodules/spirv_headers/include/spirv test -f subprojects/dxbc-spirv/submodules/spirv_headers/include/spirv/unified1/spirv.hpp # DXVK Native requires a subset of MinGW DirectX headers test -f include/native/directx/d3d.h dh_auto_configure -- $(NATIVE_MESON_FLAGS) 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 LOCAL_HEADERS = \ -I$(CURDIR)/include/native \ -I$(CURDIR)/include/native/directx \ -I$(CURDIR)/include/native/windows \ $(NULL) execute_after_dh_auto_build: ifneq ($(filter amd64 arm64 i386,$(DEB_HOST_ARCH)),) make -C debian/tests/native \ DXVK_D3D9_CFLAGS="$(LOCAL_HEADERS)" \ DXVK_D3D9_LIBS="$(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)/src/d3d9/libdxvk_d3d9.so" \ DXVK_D3D11_CFLAGS="$(LOCAL_HEADERS)" \ DXVK_D3D11_LIBS="$(CURDIR)/obj-$(DEB_HOST_GNU_TYPE)/src/d3d11/libdxvk_d3d11.so" \ $(NULL) endif ifneq ($(filter dxvk-wine%,$(built_binaries)),) 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 # Create the directory unconditionally, it will stay empty on # architectures not supported by vkd3d install -d debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/installed-tests/dxvk-native ifneq ($(filter amd64 arm64 i386,$(DEB_HOST_ARCH)),) make -C debian/tests/native install \ tests_dir=/usr/lib/$(DEB_HOST_MULTIARCH)/installed-tests/dxvk-native \ DESTDIR=$(CURDIR)/debian/tmp endif 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: ifneq ($(filter amd64 arm64 i386,$(DEB_HOST_ARCH)),) make -C debian/tests/native clean endif rm -rf subprojects/dxbc-spirv/submodules rm -rf include/spirv