%global debug_package %{nil}
%ifarch x86_64
%global platform_identificator x86_64-redhat-linux-gnu
%global target_x86_type 64
%else
%global platform_identificator i686-redhat-linux-gnu
%global target_x86_type 32
%endif
Name: wine-dxvk
Version: 1.3.2
Release: 1%{?dist}
Summary: Vulkan-based D3D11 and D3D10 implementation for Linux / Wine
License: zlib
URL: https://github.com/doitsujin/dxvk
Source0: %{url}/archive/v%{version}/dxvk-%{version}.tar.gz
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: glslang
BuildRequires: meson
BuildRequires: wine-devel
%ifarch x86_64
BuildRequires: mingw64-filesystem
BuildRequires: mingw64-binutils
BuildRequires: mingw64-headers
BuildRequires: mingw64-cpp
BuildRequires: mingw64-gcc
BuildRequires: mingw64-gcc-c++
BuildRequires: mingw64-winpthreads-static
%else
BuildRequires: mingw32-filesystem
BuildRequires: mingw32-binutils
BuildRequires: mingw32-headers
BuildRequires: mingw32-cpp
BuildRequires: mingw32-gcc
BuildRequires: mingw32-gcc-c++
BuildRequires: mingw32-winpthreads-static
%endif
Requires: wine >= 4.13
Requires: wine-dxvk-dxgi%{?_isa} = %{version}-%{release}
Requires: vulkan-loader%{?_isa}
# We want x86_64 users to alwyas have also 32 bit lib, it's the same what wine does
%ifarch x86_64
Requires: wine-dxvk(x86-32) = %{version}-%{release}
%endif
Requires(posttrans): %{_sbindir}/alternatives
Requires(preun): %{_sbindir}/alternatives
ExclusiveArch: %{ix86} x86_64
%description
%{summary}
%package dxgi
Summary: DXVK DXGI implementation
%description dxgi
%{summary}
%prep
%setup -q -n dxvk-%{version}
%build
/usr/bin/meson --buildtype=plain --wrap-mode=nodownload --auto-features=enabled . %{platform_identificator} \
--cross-file build-wine%{target_x86_type}.txt --buildtype release --prefix /builddir/build/BUILD/dxvk-%{version}/build
%meson_build
# Copy compiled .so files aside before cleaning up the build directory
cp /builddir/build/BUILD/dxvk-%{version}/%{platform_identificator}/src/dxgi/dxgi.dll.so /builddir/build/BUILD/dxvk-%{version}/dxgi.dll.so
cp /builddir/build/BUILD/dxvk-%{version}/%{platform_identificator}/src/d3d11/d3d11.dll.so /builddir/build/BUILD/dxvk-%{version}/d3d11.dll.so
cp /builddir/build/BUILD/dxvk-%{version}/%{platform_identificator}/src/d3d10/d3d10.dll.so /builddir/build/BUILD/dxvk-%{version}/d3d10.dll.so
cp /builddir/build/BUILD/dxvk-%{version}/%{platform_identificator}/src/d3d10/d3d10_1.dll.so /builddir/build/BUILD/dxvk-%{version}/d3d10_1.dll.so
cp /builddir/build/BUILD/dxvk-%{version}/%{platform_identificator}/src/d3d10/d3d10core.dll.so /builddir/build/BUILD/dxvk-%{version}/d3d10core.dll.so
/usr/bin/meson --wipe --buildtype=plain --wrap-mode=nodownload --auto-features=enabled . %{platform_identificator} \
--cross-file build-win%{target_x86_type}.txt --buildtype release --prefix /builddir/build/BUILD/dxvk-%{version}/build
%meson_build
%install
%meson_install
mkdir -p %{buildroot}%{_libdir}/wine/
install -p -m 755 /builddir/build/BUILD/dxvk-%{version}/dxgi.dll.so %{buildroot}%{_libdir}/wine/
install -p -m 755 /builddir/build/BUILD/dxvk-%{version}/d3d11.dll.so %{buildroot}%{_libdir}/wine/
install -p -m 755 /builddir/build/BUILD/dxvk-%{version}/d3d10.dll.so %{buildroot}%{_libdir}/wine/
install -p -m 755 /builddir/build/BUILD/dxvk-%{version}/d3d10_1.dll.so %{buildroot}%{_libdir}/wine/
install -p -m 755 /builddir/build/BUILD/dxvk-%{version}/d3d10core.dll.so %{buildroot}%{_libdir}/wine/
install -p -m 755 %buildroot/builddir/build/BUILD/dxvk-%{version}/build/bin/d3d10.dll %{buildroot}%{_libdir}/wine/
install -p -m 755 %buildroot/builddir/build/BUILD/dxvk-%{version}/build/bin/d3d10core.dll %{buildroot}%{_libdir}/wine/
install -p -m 755 %buildroot/builddir/build/BUILD/dxvk-%{version}/build/bin/d3d10_1.dll %{buildroot}%{_libdir}/wine/
install -p -m 755 %buildroot/builddir/build/BUILD/dxvk-%{version}/build/bin/d3d11.dll %{buildroot}%{_libdir}/wine/
rm -rf %buildroot/builddir/build/BUILD/dxvk-%{version}/build
mv %{buildroot}%{_libdir}/wine/dxgi.dll.so %{buildroot}%{_libdir}/wine/dxvk-dxgi.dll.so
mv %{buildroot}%{_libdir}/wine/d3d10.dll %{buildroot}%{_libdir}/wine/dxvk-d3d10.dll
mv %{buildroot}%{_libdir}/wine/d3d10core.dll %{buildroot}%{_libdir}/wine/dxvk-d3d10core.dll
mv %{buildroot}%{_libdir}/wine/d3d10_1.dll %{buildroot}%{_libdir}/wine/dxvk-d3d10_1.dll
mv %{buildroot}%{_libdir}/wine/d3d11.dll %{buildroot}%{_libdir}/wine/dxvk-d3d11.dll
%posttrans
%{_sbindir}/alternatives --install %{_libdir}/wine/dxgi.dll.so 'wine-dxgi%{?_isa}' %{_libdir}/wine/dxvk-dxgi.dll.so 20
%{_sbindir}/alternatives --install %{_libdir}/wine/d3d10.dll 'wine-d3d10%{?_isa}' %{_libdir}/wine/dxvk-d3d10.dll 20 \
--slave %{_libdir}/wine/d3d10_1.dll 'wine-d3d10_1%{?_isa}' %{_libdir}/wine/dxvk-d3d10_1.dll \
--slave %{_libdir}/wine/d3d10core.dll 'wine-d3d10core%{?_isa}' %{_libdir}/wine/dxvk-d3d10core.dll
%{_sbindir}/alternatives --install %{_libdir}/wine/d3d11.dll 'wine-d3d11%{?_isa}' %{_libdir}/wine/dxvk-d3d11.dll 20
%postun
%{_sbindir}/alternatives --remove 'wine-dxgi%{?_isa}' %{_libdir}/wine/dxvk-dxgi.dll.so
%{_sbindir}/alternatives --remove 'wine-d3d10%{?_isa}' %{_libdir}/wine/dxvk-d3d10.dll
%{_sbindir}/alternatives --remove 'wine-d3d11%{?_isa}' %{_libdir}/wine/dxvk-d3d11.dll
%files
%license LICENSE
%doc README.md
%{_libdir}/wine/dxvk-d3d10.dll
%{_libdir}/wine/dxvk-d3d10_1.dll
%{_libdir}/wine/dxvk-d3d10core.dll
%{_libdir}/wine/dxvk-d3d11.dll
%{_libdir}/wine/d3d10.dll.so
%{_libdir}/wine/d3d10_1.dll.so
%{_libdir}/wine/d3d10core.dll.so
%{_libdir}/wine/d3d11.dll.so
%files dxgi
%license LICENSE
%{_libdir}/wine/dxvk-dxgi.dll.so
%changelog
* Sun Aug 11 2019 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.3.2-1
- Release 1.3.2
- Use alternatives for .dll files and dxgi.dll.so
* Thu Jul 25 2019 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.3.1-1
- Initial packaging