Blob Blame History Raw
%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.5.4
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 always have also 32 bit lib, it's the same what wine does
%ifarch x86_64
Requires:       wine-dxvk(x86-32) = %{version}-%{release}
%endif

# Recommend also the d3d9 (former D9VK)
Recommends:     wine-dxvk-d3d9%{?_isa} = %{version}-%{release}

Requires(posttrans):   %{_sbindir}/alternatives
Requires(preun):       %{_sbindir}/alternatives

ExclusiveArch:  %{ix86} x86_64

%description
%{summary}

%package dxgi
Summary:        DXVK DXGI implementation

%description dxgi
%{summary}

%package d3d9
Summary:        DXVK D3D9 implementation

Requires:       wine-dxvk%{?_isa} = %{version}-%{release}

# We want x86_64 users to always have also 32 bit lib, it's the same what wine does
%ifarch x86_64
Requires:       wine-dxvk-d3d9(x86-32) = %{version}-%{release}
%endif

%description d3d9
%{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
cp /builddir/build/BUILD/dxvk-%{version}/%{platform_identificator}/src/d3d9/d3d9.dll.so /builddir/build/BUILD/dxvk-%{version}/d3d9.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 /builddir/build/BUILD/dxvk-%{version}/d3d9.dll.so %{buildroot}%{_libdir}/wine/

install -p -m 755 %buildroot/builddir/build/BUILD/dxvk-%{version}/build/bin/d3d9.dll %{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
mv %{buildroot}%{_libdir}/wine/d3d9.dll %{buildroot}%{_libdir}/wine/dxvk-d3d9.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

%posttrans d3d9
%{_sbindir}/alternatives --install %{_libdir}/wine/d3d9.dll 'wine-d3d9%{?_isa}' %{_libdir}/wine/dxvk-d3d9.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

%postun d3d9
%{_sbindir}/alternatives --remove 'wine-d3d9%{?_isa}' %{_libdir}/wine/dxvk-d3d9.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 d3d9
%{_libdir}/wine/dxvk-d3d9.dll
%{_libdir}/wine/d3d9.dll.so

%files dxgi
%license LICENSE
%{_libdir}/wine/dxvk-dxgi.dll.so


%changelog
* Sun Feb 09 2020 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.5.4-1
- Release 1.5.4

* Fri Jan 31 2020 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.5.3-1
- Release 1.5.3

* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild

* Fri Jan 10 2020 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.5.1-1
- Release 1.5.1
- Support D3D9 (wine-dxvk-d3d9 subpackage)

* Sat Dec 07 2019 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.4.6-1
- Release 1.4.6

* Thu Nov 21 2019 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.4.5-1
- Release 1.4.5

* Tue Oct 29 2019 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.4.4-1
- Release 1.4.4

* Sat Oct 19 2019 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.4.3-1
- Release 1.4.3

* Sat Sep 28 2019 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.4.1-1
- Release 1.4.1

* Mon Sep 23 2019 Frantisek Zatloukal <fzatlouk@redhat.com> - 1.4-1
- Release 1.4

* 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