summaryrefslogtreecommitdiff
path: root/content/posts/2018-08-01-dxvk-gentoo.md
diff options
context:
space:
mode:
authorChristian Segundo2024-09-01 20:34:09 +0200
committerChristian Segundo2024-09-01 20:34:09 +0200
commitfae17644b9ef2382994bf3ce7d288e08211c42ef (patch)
tree66305cadf6371bb777f8c2e7fa62db4930621e4c /content/posts/2018-08-01-dxvk-gentoo.md
parent82c70566e88d9260d68f69ab59e6761197d828ec (diff)
downloadcheck-caps-lock-fae17644b9ef2382994bf3ce7d288e08211c42ef.tar.gz
migrate more stuff
Diffstat (limited to 'content/posts/2018-08-01-dxvk-gentoo.md')
-rw-r--r--content/posts/2018-08-01-dxvk-gentoo.md135
1 files changed, 68 insertions, 67 deletions
diff --git a/content/posts/2018-08-01-dxvk-gentoo.md b/content/posts/2018-08-01-dxvk-gentoo.md
index e71cac3..93b554b 100644
--- a/content/posts/2018-08-01-dxvk-gentoo.md
+++ b/content/posts/2018-08-01-dxvk-gentoo.md
@@ -1,14 +1,17 @@
---
layout: post
-draft: true
title: Building DXVK's DLLs on Gentoo
+tags:
+- wine
+- dxvk
+- gentoo
TocOpen: true
ShowToc: true
---
By far the easiest way to do it is on a Debian chroot, but that ain't as fun as
-building your own toolchains and do it on Gentoo.
+building your own toolchain and do it on Gentoo.
<hr>
@@ -21,81 +24,73 @@ According to the official documentation:
- MinGW64 compiler and headers (requires threading support)
- glslang front end and validator
-{% highlight code %}
+All but MinGW you can install directly from portage:
-# emerge virtual/wine dev-util/meson dev-util/glslang
-
-{% endhighlight %}
+```
+emerge virtual/wine dev-util/meson dev-util/glslang
+```
## MinGW64
-MinGW with POSIX threads is needed, problem is by default crossdev will compile
-GCC with Win32 threads.
-
-Start by creating your toolchains, tuple for x86 is `i686-w64-mingw32` and
-`x86_64-w64-mingw32` for x64.
-
-{% highlight code %}
-
-# crossdev -t i686-w64-mingw32
-
-# crossdev -t x86_64-w64-mingw32
+MinGW with POSIX threads is required, problem is, by default `crossdev` will
+compile GCC with Win32 threads instead of POSIX. Start by creating your
+toolchain with `crossdev`, tuple for x86 is `i686-w64-mingw32` and
+`x86_64-w64-mingw32` for x64:
-{% endhighlight %}
+```
+crossdev -t i686-w64-mingw32
+crossdev -t x86_64-w64-mingw32
+```
-Fix GCC by enabling POSIX threads and adding the `libraries` USE to
-`mingw64-runtime`.
+Fix GCC by enabling POSIX threads:
-{% highlight code %}
+```
+mkdir /etc/portage/{env,package.env}
+echo 'EXTRA_ECONF="--enable-threads=posix"' > /etc/portage/env/mingw32_posix_threads
+echo -e 'cross-i686-w64-mingw32/gcc mingw32_posix_threads\ncross-x86_64-w64-mingw32/gcc mingw32_posix_threads' > /etc/portage/package.env/mingw32_posix_threads
+```
-# mkdir /etc/portage/{env,package.env}
+Then add the `libraries` `USE` to `mingw64-runtime`:
-# echo 'EXTRA_ECONF="--enable-threads=posix"' > /etc/portage/env/mingw32_posix_threads
-
-# echo -e 'cross-i686-w64-mingw32/gcc mingw32_posix_threads\ncross-x86_64-w64-mingw32/gcc mingw32_posix_threads' > /etc/portage/package.env/mingw32_posix_threads
-
-{% endhighlight %}
-
-{% highlight code %} cross-i686-w64-mingw32/mingw64-runtime libraries
-cross-x86_64-w64-mingw32/mingw64-runtime libraries {% endhighlight %}
+```
+cross-i686-w64-mingw32/mingw64-runtime libraries
+cross-x86_64-w64-mingw32/mingw64-runtime libraries
+```
Rebuild `mingw64-runtime` and `gcc`. Order matters, `mingw64-runtime` with
-`libraries` provides `pthreads.h` and other stuff that is needed to compile GCC
-with POSIX thread model.
-
-{% highlight code %}
-
-# emerge -1 cross-i686-w64-mingw32/mingw64-runtime cross-x86_64-w64-mingw32/mingw64-runtime
+`libraries` provides `pthreads.h` and other stuff that's required to compile
+GCC with the POSIX thread model.
-# emerge -1 cross-i686-w64-mingw32/gcc cross-x86_64-w64-mingw32/gcc
+```
+emerge -1 cross-i686-w64-mingw32/mingw64-runtime cross-x86_64-w64-mingw32/mingw64-runtime
+emerge -1 cross-i686-w64-mingw32/gcc cross-x86_64-w64-mingw32/gcc
+```
-{% endhighlight %}
+Depending on the runtime version, libraries may end up in the wrong place (see
+bug #653246), if that's the case sysmlink those and then rebuild GCC:
-_Depending on the runtime version, libraries may end up in the wrong place (see
-bug #653246), if that is the case sysmlink those and then rebuild GCC._ _eg_
-{% highlight code %}
-
-# ln -s /usr/x86_64-w64-mingw32/usr/lib64/{libmangle.a,libpthread.a,libpthread.dll.a,libwinpthread.a,libwinpthread.dll.a,libwinpthread.la} /usr/x86_64-w64-mingw32/usr/lib/
-
-{% endhighlight %}
+```sh
+ln -s /usr/x86_64-w64-mingw32/usr/lib64/{libmangle.a,libpthread.a,libpthread.dll.a,libwinpthread.a,libwinpthread.dll.a,libwinpthread.la} \
+ /usr/x86_64-w64-mingw32/usr/lib/
+```
Final result should be:
-{% highlight code %}
+```
+i686-w64-mingw32-gcc -v
-# i686-w64-mingw32-gcc -v
+... Thread model: posix ...
-# x86_64-w64-mingw32-gcc -v
+x86_64-w64-mingw32-gcc -v
-... Thread model: posix ... {% endhighlight %}
+... Thread model: posix ...
+```
# Crosscompiling DLLs
-{% highlight code %}
-
-# su user
-
-$ cd $ git clone https://github.com/doitsujin/dxvk.git $ cd dxvk
+```
+git clone https://github.com/doitsujin/dxvk.git
+cd dxvk
### 32-bit build. For 64-bit builds, replace
@@ -103,22 +98,28 @@ $ cd $ git clone https://github.com/doitsujin/dxvk.git $ cd dxvk
### build.w32 with build.w64
-$ meson --cross-file build-win32.txt --prefix /some/install/prefix build.w32 $
-cd build.w32/ $ meson configure -Dbuildtype=release $ ninja $ ninja install
-{% endhighlight %} {% highlight code %} $ ls /some/install/prefix/bin d3d11.dll
-dxgi.dll setup_dxvk.sh {% endhighlight %}
+meson --cross-file build-win32.txt --prefix /some/install/prefix build.w32
+cd build.w32/
+meson configure -Dbuildtype=release
+ninja
+ninja install
+```
-These are the toolchains I used.
+```
+ls /some/install/prefix/bin
+d3d11.dll dxgi.dll setup_dxvk.sh
+```
-{% highlight code %} cross-i686-w64-mingw32/binutils-2.30-r3
-cross-i686-w64-mingw32/gcc-7.3.0-r3 cross-i686-w64-mingw32/mingw64-runtime-5.0.4
+These are the toolchains I used.
-cross-x86_64-w64-mingw32/binutils-2.30-r3 cross-x86_64-w64-mingw32/gcc-7.3.0-r3
+```
+cross-i686-w64-mingw32/binutils-2.30-r3
+cross-i686-w64-mingw32/gcc-7.3.0-r3
+cross-i686-w64-mingw32/mingw64-runtime-5.0.4
+cross-x86_64-w64-mingw32/binutils-2.30-r3
+cross-x86_64-w64-mingw32/gcc-7.3.0-r3
### symlinks from ...lib64/ -> ...lib/ required! see bug #653246
-cross-x86_64-w64-mingw32/mingw64-runtime-5.0.4 {% endhighlight %}
-
----
-
-#### [Original in spanish](/gnu/linux/2018/08/01/dxvk-gentoo/)
+cross-x86_64-w64-mingw32/mingw64-runtime-5.0.4
+```