X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fxonotic.wiki.git;a=blobdiff_plain;f=Shared-libraries-%28buildfiles%29.md;h=73577fd9f9275932b156dd07f94e39bfc87670ab;hp=17f94fe40e434344645afd36f7d10d9b75fc4f64;hb=refs%2Fheads%2Fmaster;hpb=4367d0f360fbee93b7b634da2dbeebf837d11ca2 diff --git a/Shared-libraries-(buildfiles).md b/Shared-libraries-(buildfiles).md index 17f94fe..5605358 100644 --- a/Shared-libraries-(buildfiles).md +++ b/Shared-libraries-(buildfiles).md @@ -62,24 +62,25 @@ Obtainment instructions: * 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! ** +Cross-compiling: ``` 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/libzlib1.dll ~/Games/xonotic/misc/buildfiles/win64/zlib1.dll +cp out/bin/zlib1.dll ~/Games/xonotic/misc/buildfiles/win64/zlib1.dll ``` ### macOS @@ -96,7 +97,7 @@ Obtainment instructions: * 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!) +Cross-compiling (requires zlib): ``` d0=$(pwd) @@ -146,6 +147,37 @@ cp out/bin/libfreetype.dll ~/Games/xonotic/misc/buildfiles/win64/libfreetype-6.d ### macOS Darkplaces loads: `libfreetype.6.dylib` or `libfreetype.dylib` +# libogg +libogg is used for the container in cl_capturevideo + +### Windows +Darkplaces loads `libogg-0.dll` or `libogg.dll` or `ogg.dll` + +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: + +``` +d0=$(pwd) +OGGVER="v1.3.5" +git clone -b $OGGVER https://gitlab.xiph.org/xiph/ogg.git +sed -i 's/^LIBRARY ogg$/LIBRARY libogg/' "$d0/ogg/win32/ogg.def" # Call it libogg +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" -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` + # libvorbis + libvorbisfile + libvorbisenc libvorbis + libvorbisfile are used to play .ogg audio files while libvorbis + libvorbisenc is used for the audio in video capturing (cl_capturevideo) @@ -156,6 +188,33 @@ Obtainment instructions: * download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libvorbis * use dll from `bin` folder +Cross-compiling (requires libogg): + +``` +d0=$(pwd) +VORBISVER="v1.3.7" +OGG_ROOT=$d0/../ogg/out + +git clone -b $VORBISVER https://gitlab.xiph.org/xiph/vorbis.git + +# Fix win32 def files +sed -i 's/^LIBRARY$/LIBRARY libvorbis/' "$d0/vorbis/win32/vorbis.def" +sed -i 's/^LIBRARY$/LIBRARY libvorbisenc/' "$d0/vorbis/win32/vorbisenc.def" +sed -i 's/^LIBRARY$/LIBRARY libvorbisfile/' "$d0/vorbis/win32/vorbisfile.def" + +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" -DBUILD_SHARED_LIBS=true -DOGG_INCLUDE_DIR=$OGG_ROOT/include -DOGG_LIBRARY=$OGG_ROOT/lib/libogg.dll.a -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_INSTALL_PREFIX="$d0/out" -G"Unix Makefiles" "$d0/vorbis" +make +make install +cd "$d0" +cp out/bin/libvorbis.dll ~/Games/xonotic/misc/buildfiles/win64/libvorbis.dll +cp out/bin/libvorbisfile.dll ~/Games/xonotic/misc/buildfiles/win64/libvorbisfile.dll +cp out/bin/libvorbisenc.dll ~/Games/xonotic/misc/buildfiles/win64/libvorbisenc.dll +``` + ### macOS Darkplaces loads `libvorbis.dylib` and `libvorbisfile.dylib` @@ -170,39 +229,70 @@ Obtainment instructions: * download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libtheora * use dll from `bin` folder +Cross-compiling (requires libogg and libvorbis): + +``` +d0=$(pwd) +THEORAVER="v1.1.1" +OGG_ROOT="$d0/../ogg/out" +VORBIS_ROOT="$d0/../vorbis/out" + +git clone -b $THEORAVER https://gitlab.xiph.org/xiph/theora.git + +# Fix mingw32 defs +sed -i '1iLIBRARY libtheoradec' "$d0/theora/win32/xmingw32/libtheoradec-all.def" +sed -i '1iLIBRARY libtheoraenc' "$d0/theora/win32/xmingw32/libtheoraenc-all.def" +sed -i '/TH_VP31_QUANT_INFO/d' "$d0/theora/win32/xmingw32/libtheoraenc-all.def" +sed -i '/TH_VP31_HUFF_CODES/d' "$d0/theora/win32/xmingw32/libtheoraenc-all.def" + +# Start build +mkdir out +mkdir build +cd build +$d0/theora/autogen.sh --host=x86_64-w64-mingw32 --prefix="$d0/out" --with-ogg="$OGG_ROOT" --with-vorbis="$VORBIS_ROOT" --enable-shared --disable-examples --disable-sdltest --disable-vorbistest --disable-oggtest +make +make install +cd "$d0" +cp out/bin/libtheora-0.dll ~/Games/xonotic/misc/buildfiles/win64/libtheora-0.dll +``` + ### macOS Darkplaces loads `libtheora.dylib` -# libogg -libogg is used for the container in cl_capturevideo +# 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 -Darkplaces loads `libogg-0.dll` or `libogg.dll` or `ogg.dll` +libd0_blind_id-0 loads `libgmp-10.dll` Obtainment instructions: -* download MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-libogg +* download as MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-gmp * 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 +GMPVER="6.2.1" + +curl -o gmp-$GMPVER.tar.xz https://gmplib.org/download/gmp/gmp-$GMPVER.tar.xz +tar xf gmp-$GMPVER.tar.xz +rm gmp-$GMPVER.tar.xz + +mkdir out 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" +"$d0/gmp-$GMPVER/configure" --prefix="$d0/out" --host=x86_64-w64-mingw32 --with-pic --enable-fat --disable-static --enable-shared make make install cd "$d0" -cp out/bin/libogg.dll ~/Games/xonotic/misc/buildfiles/win64/libogg.dll +cp out/bin/libgmp-10.dll ~/Games/xonotic/misc/buildfiles/win64/libgmp-10.dll ``` -### macOS -Darkplaces loads `libogg.dylib` - # libd0_blind_id-0 & libd0_rijndael-0 Internal project, see https://gitlab.com/xonotic/d0_blind_id @@ -210,19 +300,34 @@ Internal project, see https://gitlab.com/xonotic/d0_blind_id `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 +### Windows +Cross-compiling (requires libgmp): -### Linux +``` +d0=$(pwd) +GMP_ROOT="$d0/../gmp/out" +export LDFLAGS="-L$GMP_ROOT/lib" +export CPPFLAGS="-I$GMP_ROOT/include" -`./configure --prefix=$HOME/Games/xonotic/misc/builddeps/linux64/gmp --enable-static --disable-shared --with-pic --enable-fat` +git clone https://gitlab.com/xonotic/d0_blind_id.git -### Windows -libd0_blind_id-0 loads `libgmp-10.dll` +cd d0_blind_id +./autogen.sh +sed -i '/libd0_blind_id_la_LDFLAGS/ s/$/ -no-undefined/' Makefile.am +sed -i '/libd0_rijndael_la_LDFLAGS/ s/$/ -no-undefined/' Makefile.am -Obtainment instructions: -* download as MSYS2 Package [1] in x86 and x64 versions: https://packages.msys2.org/base/mingw-w64-gmp -* use dll from `bin` folder +cd "$d0" +mkdir build +mkdir out +cd build +"$d0/d0_blind_id/configure" --with-pic --prefix="$d0/out" --host=x86_64-w64-mingw32 +make +make install + +cd "$d0" +cp out/bin/libd0_blind_id-0.dll ~/Games/xonotic/misc/buildfiles/win64/libd0_blind_id-0.dll +cp out/bin/libd0_rijndael-0.dll ~/Games/xonotic/misc/buildfiles/win64/libd0_rijndael-0.dll +``` # libode Is not loaded under Windows and crashes the game if it is and a map is loaded up.