From fae17644b9ef2382994bf3ce7d288e08211c42ef Mon Sep 17 00:00:00 2001
From: Christian Segundo
Date: Sun, 1 Sep 2024 20:34:09 +0200
Subject: migrate more stuff
---
content/posts/2018-08-01-dxvk-gentoo.md | 135 ++++++++++++++++----------------
1 file changed, 68 insertions(+), 67 deletions(-)
(limited to 'content/posts/2018-08-01-dxvk-gentoo.md')
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.
@@ -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
+```
--
cgit v1.2.3