3 |
3 |
|
4 |
4 |
EAPI=8
|
5 |
5 |
|
6 |
|
# note: version <2.0 should be kept for longer given it's the
|
7 |
|
# last version to support <wine-7.1 and <nvidia-drivers-510
|
8 |
|
|
|
6 |
PYTHON_COMPAT=( python3_{10..12} )
|
9 |
7 |
MULTILIB_ABIS="amd64 x86" # allow usage on /no-multilib/
|
10 |
8 |
MULTILIB_COMPAT=( abi_x86_{32,64} )
|
11 |
|
inherit flag-o-matic meson-multilib
|
|
9 |
inherit flag-o-matic meson-multilib python-any-r1
|
12 |
10 |
|
13 |
11 |
if [[ ${PV} == 9999 ]]; then
|
14 |
12 |
inherit git-r3
|
15 |
13 |
EGIT_REPO_URI="https://github.com/doitsujin/dxvk.git"
|
|
14 |
EGIT_SUBMODULES=(
|
|
15 |
# picky about headers and is cross-compiled making -I/usr/include troublesome
|
|
16 |
include/{spirv,vulkan}
|
|
17 |
subprojects/libdisplay-info
|
|
18 |
)
|
16 |
19 |
else
|
17 |
|
SRC_URI="https://github.com/doitsujin/dxvk/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
|
|
20 |
HASH_SPIRV=0bcc624926a25a2a273d07877fd25a6ff5ba1cfb
|
|
21 |
HASH_VULKAN=98f440ce6868c94f5ec6e198cc1adda4760e8849
|
|
22 |
HASH_DISPLAYINFO=d39344f466caae0495ebac4d49b03a886d83ba3a
|
|
23 |
SRC_URI="
|
|
24 |
https://github.com/doitsujin/dxvk/archive/refs/tags/v${PV}.tar.gz
|
|
25 |
-> ${P}.tar.gz
|
|
26 |
https://github.com/KhronosGroup/SPIRV-Headers/archive/${HASH_SPIRV}.tar.gz
|
|
27 |
-> ${PN}-spirv-headers-${HASH_SPIRV::10}.tar.gz
|
|
28 |
https://github.com/KhronosGroup/Vulkan-Headers/archive/${HASH_VULKAN}.tar.gz
|
|
29 |
-> ${PN}-vulkan-headers-${HASH_VULKAN::10}.tar.gz
|
|
30 |
https://gitlab.freedesktop.org/JoshuaAshton/libdisplay-info/-/archive/${HASH_DISPLAYINFO}/${PN}-libdisplay-info-${HASH_DISPLAYINFO::10}.tar.bz2"
|
18 |
31 |
KEYWORDS="-* amd64 x86"
|
19 |
32 |
fi
|
|
33 |
# setup_dxvk.sh is no longer provided, fetch old until a better solution
|
|
34 |
SRC_URI+=" https://raw.githubusercontent.com/doitsujin/dxvk/cd21cd7fa3b0df3e0819e21ca700b7627a838d69/setup_dxvk.sh"
|
20 |
35 |
|
21 |
36 |
DESCRIPTION="Vulkan-based implementation of D3D9, D3D10 and D3D11 for Linux / Wine"
|
22 |
37 |
HOMEPAGE="https://github.com/doitsujin/dxvk/"
|
23 |
38 |
|
24 |
|
LICENSE="ZLIB"
|
|
39 |
LICENSE="ZLIB Apache-2.0 MIT"
|
25 |
40 |
SLOT="0"
|
26 |
41 |
IUSE="+abi_x86_32 crossdev-mingw +d3d9 +d3d10 +d3d11 debug +dxgi"
|
27 |
42 |
REQUIRED_USE="
|
28 |
43 |
|| ( d3d9 d3d10 d3d11 dxgi )
|
29 |
44 |
d3d10? ( d3d11 )
|
30 |
|
dxgi? ( d3d11 )"
|
|
45 |
d3d11? ( dxgi )"
|
31 |
46 |
|
32 |
47 |
BDEPEND="
|
|
48 |
${PYTHON_DEPS}
|
33 |
49 |
dev-util/glslang
|
34 |
50 |
!crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )"
|
35 |
51 |
|
36 |
52 |
PATCHES=(
|
37 |
|
"${FILESDIR}"/${PN}-1.10.3-gcc13.patch
|
38 |
53 |
"${FILESDIR}"/${PN}-1.10.3-wow64-setup.patch
|
39 |
54 |
)
|
40 |
55 |
|
... | ... | |
60 |
75 |
}
|
61 |
76 |
|
62 |
77 |
src_prepare() {
|
|
78 |
if [[ ${PV} != 9999 ]]; then
|
|
79 |
rmdir include/{spirv,vulkan} subprojects/libdisplay-info || die
|
|
80 |
mv ../SPIRV-Headers-${HASH_SPIRV} include/spirv || die
|
|
81 |
mv ../Vulkan-Headers-${HASH_VULKAN} include/vulkan || die
|
|
82 |
mv ../libdisplay-info-${HASH_DISPLAYINFO} subprojects/libdisplay-info || die
|
|
83 |
fi
|
|
84 |
cp -- "${DISTDIR}"/setup_dxvk.sh . || die
|
|
85 |
|
63 |
86 |
default
|
64 |
87 |
|
65 |
88 |
sed -i "/^basedir=/s|=.*|=${EPREFIX}/usr/lib/${PN}|" setup_dxvk.sh || die
|
... | ... | |
110 |
133 |
$(meson_use {,enable_}d3d11)
|
111 |
134 |
$(meson_use {,enable_}dxgi)
|
112 |
135 |
$(usev !debug --strip) # portage won't strip .dll, so allow it here
|
113 |
|
-Denable_tests=false # needs wine/vulkan and is intended for manual use
|
114 |
136 |
)
|
115 |
137 |
|
116 |
138 |
meson_src_configure
|
... | ... | |
134 |
156 |
elog " WINEPREFIX=/path/to/prefix setup_dxvk.sh install --symlink"
|
135 |
157 |
elog
|
136 |
158 |
elog "See ${EROOT}/usr/share/doc/${PF}/README.md* for details."
|
|
159 |
elog "Note: setup_dxvk.sh is unofficially temporarily provided as it was"
|
|
160 |
elog "removed upstream, handling may change in the future."
|
137 |
161 |
elif [[ -v DXVK_HAD_OVERLAY ]]; then
|
138 |
162 |
# temporary warning until this version is more widely used
|
139 |
163 |
elog "Gentoo's main repo ebuild for ${PN} uses different paths than most overlays."
|
... | ... | |
145 |
169 |
elog "Also, if you were using /etc/${PN}.conf, ${PN} is no longer patched to load"
|
146 |
170 |
elog "it. See ${EROOT}/usr/share/doc/${PF}/README.md* for handling configs."
|
147 |
171 |
fi
|
|
172 |
|
|
173 |
if [[ ! ${REPLACING_VERSIONS##* } ]] ||
|
|
174 |
ver_test ${REPLACING_VERSIONS##* } -lt 2.0
|
|
175 |
then
|
|
176 |
elog
|
|
177 |
elog ">=${PN}-2.0 requires drivers and Wine to support vulkan-1.3, meaning:"
|
|
178 |
elog ">=wine-*-7.1 (or >=wine-proton-7.0), and >=mesa-22.0 (or >=nvidia-drivers-510)"
|
|
179 |
elog "For details, see: https://github.com/doitsujin/dxvk/wiki/Driver-support"
|
|
180 |
fi
|
148 |
181 |
}
|