diff options
author | Christian Segundo | 2024-09-01 20:34:09 +0200 |
---|---|---|
committer | Christian Segundo | 2024-09-01 20:34:09 +0200 |
commit | fae17644b9ef2382994bf3ce7d288e08211c42ef (patch) | |
tree | 66305cadf6371bb777f8c2e7fa62db4930621e4c /content/posts/2018-08-01-dxvk-gentoo.md | |
parent | 82c70566e88d9260d68f69ab59e6761197d828ec (diff) | |
download | check-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.md | 135 |
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 +``` |