X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=Shared-libraries-%28buildfiles%29.md;h=de1a82695f86c80b0741da15b68b8d11390ea226;hb=c195ef729f2e70c496537a75015d4ebccae99463;hp=943b2353fed139f049f88e75d03b07a4dbdbd457;hpb=1166e70d00b3fcd9d66c76d581ebed4a1dd2a3f4;p=xonotic%2Fxonotic.wiki.git diff --git a/Shared-libraries-(buildfiles).md b/Shared-libraries-(buildfiles).md index 943b235..de1a826 100644 --- a/Shared-libraries-(buildfiles).md +++ b/Shared-libraries-(buildfiles).md @@ -6,16 +6,26 @@ For Windows, all libraries can/should be obtained from https://packages.msys2.or A handy tool to check dll deps on Windows is https://github.com/lucasg/Dependencies +TODO: macOS + # libcurl libcurl is used for downloading *.pk3 files from servers ### Windows -Darkplaces loads `libcurl-4.dll` or `libcurl-3.dll` -Build instructions: -* clone https://gitlab.com/incognico/build-libcurl-windows -* run `build.bat` in a VS2019 Development Shell -* rename the built dlls (x64 & x86) to `libcurl-4.dll` +``` +git clone -b curl-7_80_0 https://github.com/curl/curl || true +curl -o x86_64-w64-mingw32.cmake https://raw.githubusercontent.com/zyga/cmake-toolchains/master/Toolchain-Ubuntu-mingw64.cmake +d0=$(pwd) +rm -rf build +mkdir build +cd build +cmake -DCMAKE_TOOLCHAIN_FILE="$d0/x86_64-w64-mingw32.cmake" -DCMAKE_INSTALL_PREFIX="$d0/out" -DCURL_USE_SCHANNEL=YES -G"Unix Makefiles" "$d0/curl" +make +make install +cd "$d0" +cp out/bin/libcurl.dll ~/Games/xonotic/misc/buildfiles/win64/libcurl-4.dll +``` ### macOS Darkplaces loads `libcurl.4.dylib` or `libcurl.3.dylib` or `libcurl.2.dylib` @@ -24,41 +34,91 @@ Darkplaces loads `libcurl.4.dylib` or `libcurl.3.dylib` or `libcurl.2.dylib` libjpeg-turbo is needed to display jpeg images/textures ### Windows -Darkplaces loads `libjpeg.dll` -Obtainment instructions: -* download `libjpeg-turbo-VERSION-vc.exe` & `libjpeg-turbo-VERSION-vc64.exe` from https://sourceforge.net/projects/libjpeg-turbo/files/ -* extract the *.exe files and use `bin/jpeg62.dll` -* rename the dlls (x64 & x86) to `libjpeg.dll` +``` +git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git || true +curl -o x86_64-w64-mingw32.cmake https://raw.githubusercontent.com/zyga/cmake-toolchains/master/Toolchain-Ubuntu-mingw64.cmake +d0=$(pwd) +rm -rf build +mkdir build +cd build +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" +make +make install +cd "$d0" +cp out/bin/libjpeg-62.dll ~/Games/xonotic/misc/buildfiles/win64/libjpeg.dll +``` ### macOS Darkplaces loads `libjpeg.62.dylib` -# libpng -libpng is needed to display png images/textures +# zlib +zlib is required to read *.pk3 files. Also it is a dependency of libpng and probably some other libraries. ### Windows -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` +Darkplaces loads: ifdef ZLIB_USES_WINAPI `zlibwapi.dll` or `zlib.dll` else `zlib1.dll`. We use `zlib1.dll`! Obtainment instructions: -* download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libpng +* download as MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-zlib * use dll from `bin` folder +Cross-compiling: ** TODO : Remove the "lib" prefix so libpng can load it properly later! ** + +``` +ZLIBVER="1.2.11" +curl -L -o zlib-$ZLIBVER.tar.xz https://zlib.net/zlib-$ZLIBVER.tar.xz || true +tar -xf zlib-$ZLIBVER.tar.xz +rm zlib-$ZLIBVER.tar.xz +curl -o x86_64-w64-mingw32.cmake https://raw.githubusercontent.com/zyga/cmake-toolchains/master/Toolchain-Ubuntu-mingw64.cmake + +d0=$(pwd) +rm -rf build +mkdir build +cd build +sed -i '/zlib PROPERTIES SUFFIX/i set_target_properties(zlib PROPERTIES PREFIX "")' "$d0/zlib-$ZLIBVER/CMakeLists.txt" # Remove the "lib" prefix. TODO Do this through the cmake cache? +cmake -DCMAKE_TOOLCHAIN_FILE="$d0/x86_64-w64-mingw32.cmake" -DBUILD_SHARED_LIBS=true -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_INSTALL_PREFIX="$d0/out" -G"Unix Makefiles" "$d0/zlib-$ZLIBVER" +make +make install +cd "$d0" +cp out/bin/zlib1.dll ~/Games/xonotic/misc/buildfiles/win64/zlib1.dll +``` + ### macOS -Darkplaces loads `libpng16.16.dylib` or `libpng15.15.dylib` or `libpng14.14.dylib` or `libpng12.0.dylib` +Darkplaces loads `libz.dylib` -# zlib -zlib is required to read *.pk3 files. Also it is a dependency of libpng and probably some other libraries. +# libpng +libpng is needed to display png images/textures ### Windows -Darkplaces loads: ifdef ZLIB_USES_WINAPI `zlibwapi.dll` or `zlib.dll` else `zlib1.dll`. We use `zlib1.dll`! +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` Obtainment instructions: -* download as MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-zlib +* be sure to use a 1.16.X release +* download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libpng * use dll from `bin` folder +Cross-compiling: (WARNING: RESULTING LIBRARY DOESN'T LOAD - THIS MUST BE ADJUSTED!) + +``` +d0=$(pwd) +PNGVER="libpng16" +ZLIB_ROOT=$d0/../zlib/out # Location to the zlib compiled library + +git clone -b $PNGVER git://git.code.sf.net/p/libpng/code libpng || true +curl -o x86_64-w64-mingw32.cmake https://raw.githubusercontent.com/zyga/cmake-toolchains/master/Toolchain-Ubuntu-mingw64.cmake + +rm -rf build +mkdir build +cd build +cmake -DCMAKE_TOOLCHAIN_FILE="$d0/x86_64-w64-mingw32.cmake" -DPNG_STATIC=false -DPNG_TESTS=false -DPNG_EXECUTABLES=false -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DZLIB_INCLUDE_DIR=$ZLIB_ROOT/include -DZLIB_LIBRARY=$ZLIB_ROOT/lib/libzlib.dll.a -DCMAKE_INSTALL_PREFIX="$d0/out" -G"Unix Makefiles" "$d0/libpng" +make +make install +cd "$d0" +cp out/bin/libpng16.dll ~/Games/xonotic/misc/buildfiles/win64/libpng16.dll +``` + ### macOS -Darkplaces loads `libz.dylib` +Darkplaces loads `libpng16.16.dylib` or `libpng15.15.dylib` or `libpng14.14.dylib` or `libpng12.0.dylib` # libfreetype Required for the Xolonium font @@ -66,8 +126,23 @@ Required for the Xolonium font ### Windows Darkplaces loads: `libfreetype-6.dll` or `freetype6.dll` -Obtainment instructions: -* Download x86 and x64 dlls from: https://github.com/ubawurinna/freetype-windows-binaries +``` +FTVER="2.11.1" +curl -L -o freetype-$FTVER.tar.xz https://download.savannah.gnu.org/releases/freetype/freetype-$FTVER.tar.xz || true +tar -xf freetype-$FTVER.tar.xz +rm freetype-$FTVER.tar.xz + +curl -o x86_64-w64-mingw32.cmake https://raw.githubusercontent.com/zyga/cmake-toolchains/master/Toolchain-Ubuntu-mingw64.cmake +d0=$(pwd) +rm -rf build +mkdir build +cd build +cmake -DCMAKE_TOOLCHAIN_FILE="$d0/x86_64-w64-mingw32.cmake" -DBUILD_SHARED_LIBS=true -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_INSTALL_PREFIX="$d0/out" -G"Unix Makefiles" "$d0/freetype-$FTVER" +make +make install +cd "$d0" +cp out/bin/libfreetype.dll ~/Games/xonotic/misc/buildfiles/win64/libfreetype-6.dll +``` ### macOS Darkplaces loads: `libfreetype.6.dylib` or `libfreetype.dylib` @@ -85,8 +160,9 @@ Obtainment instructions: ### macOS Darkplaces loads `libvorbis.dylib` and `libvorbisfile.dylib` -# libtheora (+ libtheoraenc + libtheoradec)? +# libtheora libtheora is used for the video in cl_capturevideo +libtheoraenc/libtheoradec are not needed, they are the newer API; darkplaces uses the legacy pre 1.0 API (libtheora). ### Windows Darkplaces loads `libtheora-0.dll` or `theora-0.dll` or `theora.dll` @@ -99,7 +175,7 @@ Obtainment instructions: Darkplaces loads `libtheora.dylib` # libogg -libogg is used as container in cl_capturevideo +libogg is used for the container in cl_capturevideo ### Windows Darkplaces loads `libogg-0.dll` or `libogg.dll` or `ogg.dll` @@ -108,15 +184,40 @@ Obtainment instructions: * download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libogg * use dll from `bin` folder +Cross-compiling: + +``` +OGGVER="v1.3.5" +git clone -b $OGGVER https://gitlab.xiph.org/xiph/ogg.git +curl -o x86_64-w64-mingw32.cmake https://raw.githubusercontent.com/zyga/cmake-toolchains/master/Toolchain-Ubuntu-mingw64.cmake +d0=$(pwd) +rm -rf build +mkdir build +cd build +cmake -DCMAKE_TOOLCHAIN_FILE="$d0/x86_64-w64-mingw32.cmake" -DBUILD_SHARED_LIBS=true -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_INSTALL_PREFIX="$d0/out" -G"Unix Makefiles" "$d0/ogg" +make +make install +cd "$d0" +cp out/bin/libogg.dll ~/Games/xonotic/misc/buildfiles/win64/libogg.dll +``` + ### macOS Darkplaces loads `libogg.dylib` # libd0_blind_id-0 & libd0_rijndael-0 Internal project, see https://gitlab.com/xonotic/d0_blind_id +### Linux + +`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` + # libgmp A dependency of libd0_blind_id-0 +### Linux + +`./configure --prefix=$HOME/Games/xonotic/misc/builddeps/linux64/gmp --enable-static --disable-shared --with-pic --enable-fat` + ### Windows libd0_blind_id-0 loads `libgmp-10.dll` @@ -125,7 +226,12 @@ Obtainment instructions: * use dll from `bin` folder # libode -Is not loaded under Windows and crashes the game if it is. +Is not loaded under Windows and crashes the game if it is and a map is loaded up. +Also it is not statically linked and thus requires libstdc++-6.dll and libgcc_s_sjlj-1.dll. + +### Linux: + +`./configure --enable-static --disable-shared --with-libccd=internal --enable-double-precision --prefix=$HOME/Games/xonotic/misc/builddeps/linux64/ode --with-pic` # libavw *Note:* Old and not used in Xonotic but also not disabled :) Adding this for the sake of completeness.