]> git.xonotic.org Git - xonotic/xonotic.wiki.git/blob - Shared-libraries-(buildfiles).md
Update Shared libraries (buildfiles)
[xonotic/xonotic.wiki.git] / Shared-libraries-(buildfiles).md
1 darkplaces/Xonotic on Linux uses system libraries. For Windows and macOS external dlls and dylibs are needed. Those reside in xonotic/misc/buildfiles
2
3 Because at the time of writing there is no automatism to build or update the games dependencies for those 2 platforms and the current dlls/dylibs are VERY outdated and thus also contain vulnerabilities, this page should document on where to obtain or how to build them, retaining API compatibility to darkplaces and also older OS platform versions like Windows XP.
4
5 For Windows, all libraries can/should be obtained from https://packages.msys2.org/ [1] with the exception of an official DLL release from the upstream being available (this is the case for jpeg-turbo and freetype) or if it has to be compiled on under Windows for some reason (eg. libcurl for Schannel (Windows crypto for HTTPS) support).
6
7 A handy tool to check dll deps on Windows is https://github.com/lucasg/Dependencies
8
9 TODO: macOS
10
11 # libcurl
12 libcurl is used for downloading *.pk3 files from servers
13
14 ### Windows
15
16 ```
17 git clone -b curl-7_80_0 https://github.com/curl/curl || true
18 curl -o x86_64-w64-mingw32.cmake https://raw.githubusercontent.com/zyga/cmake-toolchains/master/Toolchain-Ubuntu-mingw64.cmake
19 d0=$(pwd)
20 rm -rf build
21 mkdir build
22 cd build
23 cmake -DCMAKE_TOOLCHAIN_FILE="$d0/x86_64-w64-mingw32.cmake" -DCMAKE_INSTALL_PREFIX="$d0/out" -DCURL_USE_SCHANNEL=YES -G"Unix Makefiles" "$d0/curl"
24 make
25 make install
26 cd "$d0"
27 cp out/bin/libcurl.dll ~/Games/xonotic/misc/buildfiles/win64/libcurl-4.dll
28 ```
29
30 ### macOS
31 Darkplaces loads `libcurl.4.dylib` or `libcurl.3.dylib` or `libcurl.2.dylib`
32
33 # libjpeg-turbo
34 libjpeg-turbo is needed to display jpeg images/textures
35
36 ### Windows
37
38 ```
39 git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git || true
40 curl -o x86_64-w64-mingw32.cmake https://raw.githubusercontent.com/zyga/cmake-toolchains/master/Toolchain-Ubuntu-mingw64.cmake
41 d0=$(pwd)
42 rm -rf build
43 mkdir build
44 cd build
45 cmake -DCMAKE_TOOLCHAIN_FILE="$d0/x86_64-w64-mingw32.cmake" -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_INSTALL_PREFIX="$d0/out" -G"Unix Makefiles" "$d0/libjpeg-turbo"
46 make
47 make install
48 cd "$d0"
49 cp out/bin/libjpeg-62.dll ~/Games/xonotic/misc/buildfiles/win64/libjpeg.dll
50 ```
51
52 ### macOS
53 Darkplaces loads `libjpeg.62.dylib`
54
55 # libpng
56 libpng is needed to display png images/textures
57
58 ### Windows
59 Darkplaces loads `libpng16.dll` or `libpng16-16.dll` or `libpng15-15.dll` or `libpng15.dll` or `libpng14-14.dll` or `libpng14.dll` or `libpng12.dll`
60
61 Obtainment instructions:
62 * be sure to use a 1.16.X release
63 * download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libpng
64 * use dll from `bin` folder
65
66 ### macOS
67 Darkplaces loads `libpng16.16.dylib` or `libpng15.15.dylib` or `libpng14.14.dylib` or `libpng12.0.dylib`
68
69 # zlib
70 zlib is required to read *.pk3 files. Also it is a dependency of libpng and probably some other libraries.
71
72 ### Windows
73 Darkplaces loads: ifdef ZLIB_USES_WINAPI `zlibwapi.dll` or `zlib.dll` else `zlib1.dll`. We use `zlib1.dll`!
74
75 Obtainment instructions:
76 * download as MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-zlib
77 * use dll from `bin` folder
78
79 ### macOS
80 Darkplaces loads `libz.dylib`
81
82 # libfreetype
83 Required for the Xolonium font
84
85 ### Windows
86 Darkplaces loads: `libfreetype-6.dll` or `freetype6.dll`
87
88 Obtainment instructions:
89 * Download x86 and x64 dlls from: https://github.com/ubawurinna/freetype-windows-binaries
90
91 ### macOS
92 Darkplaces loads: `libfreetype.6.dylib` or `libfreetype.dylib`
93
94 # libvorbis + libvorbisfile + libvorbisenc
95 libvorbis + libvorbisfile are used to play .ogg audio files while libvorbis + libvorbisenc is used for the audio in video capturing (cl_capturevideo)
96
97 ### Windows
98 Darkplaces loads `libvorbis-0.dll` or `libvorbis.dll` or `vorbis.dll` and `libvorbisfile-3.dll` or `libvorbisfile.dll` or `vorbisfile.dll` and `libvorbisenc-2.dll` or `vorbisenc-2.dll` or `vorbisenc.dll`
99
100 Obtainment instructions:
101 * download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libvorbis
102 * use dll from `bin` folder
103
104 ### macOS
105 Darkplaces loads `libvorbis.dylib` and `libvorbisfile.dylib`
106
107 # libtheora
108 libtheora is used for the video in cl_capturevideo
109 libtheoraenc/libtheoradec are not needed, they are the newer API; darkplaces uses the legacy pre 1.0 API (libtheora).
110
111 ### Windows
112 Darkplaces loads `libtheora-0.dll` or `theora-0.dll` or `theora.dll`
113
114 Obtainment instructions:
115 * download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libtheora
116 * use dll from `bin` folder
117
118 ### macOS
119 Darkplaces loads `libtheora.dylib`
120
121 # libogg
122 libogg is used for the container in cl_capturevideo
123
124 ### Windows
125 Darkplaces loads `libogg-0.dll` or `libogg.dll` or `ogg.dll`
126
127 Obtainment instructions:
128 * download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libogg
129 * use dll from `bin` folder
130
131 ### macOS
132 Darkplaces loads `libogg.dylib`
133
134 # libd0_blind_id-0 & libd0_rijndael-0
135 Internal project, see https://gitlab.com/xonotic/d0_blind_id
136
137 ### Linux
138
139 `LDFLAGS='-L$HOME/Games/xonotic/misc/builddeps/linux64/gmp/lib' CPPFLAGS='-I$HOME/Games/xonotic/misc/builddeps/linux64/gmp/include' ./configure --prefix=$HOME/Games/xonotic/misc/builddeps/linux64/d0_blind_id  --enable-static --disable-shared --with-pic`
140
141 # libgmp
142 A dependency of libd0_blind_id-0
143
144 ### Linux
145
146 `./configure --prefix=$HOME/Games/xonotic/misc/builddeps/linux64/gmp --enable-static --disable-shared --with-pic --enable-fat`
147
148 ### Windows
149 libd0_blind_id-0 loads `libgmp-10.dll`
150
151 Obtainment instructions:
152 * download as MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-gmp
153 * use dll from `bin` folder
154
155 # libode
156 Is not loaded under Windows and crashes the game if it is and a map is loaded up.
157 Also it is not statically linked and thus requires libstdc++-6.dll and libgcc_s_sjlj-1.dll.
158
159 ### Linux:
160
161 `./configure --enable-static --disable-shared --with-libccd=internal --enable-double-precision --prefix=$HOME/Games/xonotic/misc/builddeps/linux64/ode --with-pic`
162
163 # libavw
164 *Note:* Old and not used in Xonotic but also not disabled :) Adding this for the sake of completeness.
165
166 ### Windows
167 Darkplaces loads: `libavw.dll`
168
169 Source code: https://github.com/paulvortex/DpLibAVW
170
171 ### macOS
172 Darkplaces loads: `libavw.dylib`