1
0

165 lines
6.3 KiB
Bash
Raw Normal View History

#!/bin/bash
set -e
fix package , fix ci build, tune cmake flags and rules * tune up gitlab ci: * remove package part cos we have obs service * add feladora 38 and feladora 37 too * remove winbuntu 14, add debian 11, 12, winbuntu 17, 20, 22 * use minenux minetest repo game (seems not work) * remove non buildable stages.. only build and package shit win * set multicraft as prefix path and artifacts * back cmake in list new behaviour for blacklist locales * gitlab ci buil for debian 8 using backports on jsoncpp * solved https://github.com/minetest/minetest/issues/6567 * solved https://github.com/minetest/minetest/issues/7681 * cmake fixed to minimum supported and c++11 standar able * close https://codeberg.org/minenux/minetest-engine-multicraft2/issues/51 * allow distro hardening and cflags env close https://codeberg.org/minenux/minetest-engine-multicraft2/issues/55 * Fix no locales being generated when APPLY_LOCALE_BLACKLIST=0 * Fix linking with Postgres libs: * closes https://github.com/minetest/minetest/issues/12149 * closes https://github.com/minetest/minetest/issues/11219 * PostgreSQL fallback code missed the includes https://github.com/minetest/minetest/issues/11219 * https://github.com/minetest/minetest/commit/a24899bf2dcd58916922d671ee8761448b6876e5 * https://github.com/minetest/minetest/commit/3e2145d662d26443e96ac7191eda093c85c6f2bc * integrates https://github.com/minetest/minetest/pull/11215 * https://github.com/minetest/minetest/commit/a24899bf2dcd58916922d671ee8761448b6876e5 * backported https://github.com/minetest/minetest/commit/998e4820c982c0ea9d257c15f93f1f21d85d6327 * tune up windoser build scripts for multicraft: * fix build paths builds script due repo change name * fix winbuntu image fosal and fix missing deploy for win shit package * use SSE registers for FP operations on i386 for modern gcc platforms only * only use if related are given, by example 32bit using gcc compilers/stdlibs becouse of the long time bugs around those errors by desing, its not about to crash the engine.. its about to permits to hacked clients (either players or the client program per se) making predictable results, so predictable results permits to catch securit issues! * floating point problems are only on modern gcc and modern platform arches, raising problems like bad calculations positions.. a long time bug reported at https://git.minetest.land/Mineclonia/Mineclonia/issues/201 and addressed at https://github.com/minetest/minetest/issues/11742#issuecomment-994444462 with enought explanations but not accepted byt stupid developers.. now years later.. the problems were solved and reconiced as big bug! A workaround were proposed at https://github.com/minetest/minetest/pull/12389/files but never accepted (included in this repository), cos was superset by https://github.com/minetest/minetest/commit/8ff3fadba033dbc686c4f834811f0744099fedfb * closes https://codeberg.org/minenux/minetest-engine-multicraft2/issues/57
2023-09-16 02:16:25 +00:00
CORE_GIT=https://gitlab.com/minenux/minetest-engine-multicraft2
CORE_BRANCH=minenux
CORE_NAME=multicraft
GAME_GIT=https://gitlab.com/minenux/minetest-game-minetest
GAME_BRANCH=stable-5.2
GAME_NAME=minetest
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ $# -ne 1 ]; then
echo "Usage: $0 <build directory>"
exit 1
fi
builddir=$1
mkdir -p $builddir
builddir="$( cd "$builddir" && pwd )"
packagedir=$builddir/packages
libdir=$builddir/libs
toolchain_file=$dir/toolchain_x86_64-w64-mingw32.cmake
irrlicht_version=1.8.4
2023-04-19 12:34:00 +03:00
ogg_version=1.3.5
vorbis_version=1.3.7
curl_version=8.0.1
gettext_version=0.20.2
freetype_version=2.12.1
sqlite3_version=3.41.2
luajit_version=20230221
leveldb_version=1.23
zlib_version=1.2.13
mkdir -p $packagedir
mkdir -p $libdir
cd $builddir
# Get stuff
[ -e $packagedir/irrlicht-$irrlicht_version.zip ] || wget http://minetest.kitsunemimi.pw/irrlicht-$irrlicht_version-win64.zip \
-c -O $packagedir/irrlicht-$irrlicht_version.zip
[ -e $packagedir/zlib-$zlib_version.zip ] || wget http://minetest.kitsunemimi.pw/zlib-$zlib_version-win64.zip \
-c -O $packagedir/zlib-$zlib_version.zip
[ -e $packagedir/libogg-$ogg_version.zip ] || wget http://minetest.kitsunemimi.pw/libogg-$ogg_version-win64.zip \
-c -O $packagedir/libogg-$ogg_version.zip
[ -e $packagedir/libvorbis-$vorbis_version.zip ] || wget http://minetest.kitsunemimi.pw/libvorbis-$vorbis_version-win64.zip \
-c -O $packagedir/libvorbis-$vorbis_version.zip
[ -e $packagedir/curl-$curl_version.zip ] || wget http://minetest.kitsunemimi.pw/curl-$curl_version-win64.zip \
-c -O $packagedir/curl-$curl_version.zip
[ -e $packagedir/gettext-$gettext_version.zip ] || wget http://minetest.kitsunemimi.pw/gettext-$gettext_version-win64.zip \
-c -O $packagedir/gettext-$gettext_version.zip
2023-04-19 12:34:00 +03:00
[ -e $packagedir/freetype-$freetype_version.zip ] || wget http://minetest.kitsunemimi.pw/freetype-$freetype_version-win64.zip \
-c -O $packagedir/freetype-$freetype_version.zip
[ -e $packagedir/sqlite3-$sqlite3_version.zip ] || wget http://minetest.kitsunemimi.pw/sqlite3-$sqlite3_version-win64.zip \
2015-01-08 21:30:07 +01:00
-c -O $packagedir/sqlite3-$sqlite3_version.zip
2016-12-07 10:18:18 +01:00
[ -e $packagedir/luajit-$luajit_version.zip ] || wget http://minetest.kitsunemimi.pw/luajit-$luajit_version-win64.zip \
-c -O $packagedir/luajit-$luajit_version.zip
[ -e $packagedir/libleveldb-$leveldb_version.zip ] || wget http://minetest.kitsunemimi.pw/libleveldb-$leveldb_version-win64.zip \
-c -O $packagedir/libleveldb-$leveldb_version.zip
[ -e $packagedir/openal_stripped.zip ] || wget http://minetest.kitsunemimi.pw/openal_stripped64.zip \
-c -O $packagedir/openal_stripped.zip
# Extract stuff
cd $libdir
[ -d irrlicht ] || unzip -o $packagedir/irrlicht-$irrlicht_version.zip -d irrlicht
[ -d zlib ] || unzip -o $packagedir/zlib-$zlib_version.zip -d zlib
[ -d libogg ] || unzip -o $packagedir/libogg-$ogg_version.zip -d libogg
[ -d libvorbis ] || unzip -o $packagedir/libvorbis-$vorbis_version.zip -d libvorbis
[ -d libcurl ] || unzip -o $packagedir/curl-$curl_version.zip -d libcurl
[ -d gettext ] || unzip -o $packagedir/gettext-$gettext_version.zip -d gettext
2023-04-19 12:34:00 +03:00
[ -d freetype ] || unzip -o $packagedir/freetype-$freetype_version.zip -d freetype
2015-01-08 21:30:07 +01:00
[ -d sqlite3 ] || unzip -o $packagedir/sqlite3-$sqlite3_version.zip -d sqlite3
[ -d openal_stripped ] || unzip -o $packagedir/openal_stripped.zip
[ -d luajit ] || unzip -o $packagedir/luajit-$luajit_version.zip -d luajit
[ -d leveldb ] || unzip -o $packagedir/libleveldb-$leveldb_version.zip -d leveldb
# Get minetest
cd $builddir
if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then
cd /$EXISTING_MINETEST_DIR # must be absolute path
2014-12-05 15:54:19 +01:00
else
fix package , fix ci build, tune cmake flags and rules * tune up gitlab ci: * remove package part cos we have obs service * add feladora 38 and feladora 37 too * remove winbuntu 14, add debian 11, 12, winbuntu 17, 20, 22 * use minenux minetest repo game (seems not work) * remove non buildable stages.. only build and package shit win * set multicraft as prefix path and artifacts * back cmake in list new behaviour for blacklist locales * gitlab ci buil for debian 8 using backports on jsoncpp * solved https://github.com/minetest/minetest/issues/6567 * solved https://github.com/minetest/minetest/issues/7681 * cmake fixed to minimum supported and c++11 standar able * close https://codeberg.org/minenux/minetest-engine-multicraft2/issues/51 * allow distro hardening and cflags env close https://codeberg.org/minenux/minetest-engine-multicraft2/issues/55 * Fix no locales being generated when APPLY_LOCALE_BLACKLIST=0 * Fix linking with Postgres libs: * closes https://github.com/minetest/minetest/issues/12149 * closes https://github.com/minetest/minetest/issues/11219 * PostgreSQL fallback code missed the includes https://github.com/minetest/minetest/issues/11219 * https://github.com/minetest/minetest/commit/a24899bf2dcd58916922d671ee8761448b6876e5 * https://github.com/minetest/minetest/commit/3e2145d662d26443e96ac7191eda093c85c6f2bc * integrates https://github.com/minetest/minetest/pull/11215 * https://github.com/minetest/minetest/commit/a24899bf2dcd58916922d671ee8761448b6876e5 * backported https://github.com/minetest/minetest/commit/998e4820c982c0ea9d257c15f93f1f21d85d6327 * tune up windoser build scripts for multicraft: * fix build paths builds script due repo change name * fix winbuntu image fosal and fix missing deploy for win shit package * use SSE registers for FP operations on i386 for modern gcc platforms only * only use if related are given, by example 32bit using gcc compilers/stdlibs becouse of the long time bugs around those errors by desing, its not about to crash the engine.. its about to permits to hacked clients (either players or the client program per se) making predictable results, so predictable results permits to catch securit issues! * floating point problems are only on modern gcc and modern platform arches, raising problems like bad calculations positions.. a long time bug reported at https://git.minetest.land/Mineclonia/Mineclonia/issues/201 and addressed at https://github.com/minetest/minetest/issues/11742#issuecomment-994444462 with enought explanations but not accepted byt stupid developers.. now years later.. the problems were solved and reconiced as big bug! A workaround were proposed at https://github.com/minetest/minetest/pull/12389/files but never accepted (included in this repository), cos was superset by https://github.com/minetest/minetest/commit/8ff3fadba033dbc686c4f834811f0744099fedfb * closes https://codeberg.org/minenux/minetest-engine-multicraft2/issues/57
2023-09-16 02:16:25 +00:00
[ -d $CORE_NAME ] && (cd $CORE_NAME && git pull) || (git clone -b $CORE_BRANCH $CORE_GIT $CORE_NAME)
cd $CORE_NAME
2014-12-05 15:54:19 +01:00
fi
git_hash=$(git rev-parse --short HEAD)
# Get minetest_game
2014-12-05 15:54:19 +01:00
if [ "x$NO_MINETEST_GAME" = "x" ]; then
cd games
fix package , fix ci build, tune cmake flags and rules * tune up gitlab ci: * remove package part cos we have obs service * add feladora 38 and feladora 37 too * remove winbuntu 14, add debian 11, 12, winbuntu 17, 20, 22 * use minenux minetest repo game (seems not work) * remove non buildable stages.. only build and package shit win * set multicraft as prefix path and artifacts * back cmake in list new behaviour for blacklist locales * gitlab ci buil for debian 8 using backports on jsoncpp * solved https://github.com/minetest/minetest/issues/6567 * solved https://github.com/minetest/minetest/issues/7681 * cmake fixed to minimum supported and c++11 standar able * close https://codeberg.org/minenux/minetest-engine-multicraft2/issues/51 * allow distro hardening and cflags env close https://codeberg.org/minenux/minetest-engine-multicraft2/issues/55 * Fix no locales being generated when APPLY_LOCALE_BLACKLIST=0 * Fix linking with Postgres libs: * closes https://github.com/minetest/minetest/issues/12149 * closes https://github.com/minetest/minetest/issues/11219 * PostgreSQL fallback code missed the includes https://github.com/minetest/minetest/issues/11219 * https://github.com/minetest/minetest/commit/a24899bf2dcd58916922d671ee8761448b6876e5 * https://github.com/minetest/minetest/commit/3e2145d662d26443e96ac7191eda093c85c6f2bc * integrates https://github.com/minetest/minetest/pull/11215 * https://github.com/minetest/minetest/commit/a24899bf2dcd58916922d671ee8761448b6876e5 * backported https://github.com/minetest/minetest/commit/998e4820c982c0ea9d257c15f93f1f21d85d6327 * tune up windoser build scripts for multicraft: * fix build paths builds script due repo change name * fix winbuntu image fosal and fix missing deploy for win shit package * use SSE registers for FP operations on i386 for modern gcc platforms only * only use if related are given, by example 32bit using gcc compilers/stdlibs becouse of the long time bugs around those errors by desing, its not about to crash the engine.. its about to permits to hacked clients (either players or the client program per se) making predictable results, so predictable results permits to catch securit issues! * floating point problems are only on modern gcc and modern platform arches, raising problems like bad calculations positions.. a long time bug reported at https://git.minetest.land/Mineclonia/Mineclonia/issues/201 and addressed at https://github.com/minetest/minetest/issues/11742#issuecomment-994444462 with enought explanations but not accepted byt stupid developers.. now years later.. the problems were solved and reconiced as big bug! A workaround were proposed at https://github.com/minetest/minetest/pull/12389/files but never accepted (included in this repository), cos was superset by https://github.com/minetest/minetest/commit/8ff3fadba033dbc686c4f834811f0744099fedfb * closes https://codeberg.org/minenux/minetest-engine-multicraft2/issues/57
2023-09-16 02:16:25 +00:00
[ -d $GAME_NAME ] && (cd $GAME_NAME && git pull) || (git clone -b $GAME_BRANCH $GAME_GIT $GAME_NAME)
cd ..
2014-12-05 15:54:19 +01:00
fi
# Build the thing
[ -d _build ] && rm -Rf _build/
mkdir _build
cd _build
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=$toolchain_file \
-DCMAKE_INSTALL_PREFIX=/tmp \
-DVERSION_EXTRA=$git_hash \
-DBUILD_CLIENT=1 -DBUILD_SERVER=0 \
\
-DENABLE_SOUND=1 \
-DENABLE_CURL=1 \
-DENABLE_GETTEXT=1 \
-DENABLE_FREETYPE=1 \
-DENABLE_LEVELDB=1 \
\
-DIRRLICHT_INCLUDE_DIR=$libdir/irrlicht/include \
-DIRRLICHT_LIBRARY=$libdir/irrlicht/lib/Win64-gcc/libIrrlicht.dll.a \
-DIRRLICHT_DLL=$libdir/irrlicht/bin/Win64-gcc/Irrlicht.dll \
\
-DZLIB_INCLUDE_DIR=$libdir/zlib/include \
-DZLIB_LIBRARIES=$libdir/zlib/lib/libz.dll.a \
-DZLIB_DLL=$libdir/zlib/bin/zlib1.dll \
\
-DLUA_INCLUDE_DIR=$libdir/luajit/include \
-DLUA_LIBRARY=$libdir/luajit/libluajit.a \
\
-DOGG_INCLUDE_DIR=$libdir/libogg/include \
-DOGG_LIBRARY=$libdir/libogg/lib/libogg.dll.a \
-DOGG_DLL=$libdir/libogg/bin/libogg-0.dll \
\
-DVORBIS_INCLUDE_DIR=$libdir/libvorbis/include \
-DVORBIS_LIBRARY=$libdir/libvorbis/lib/libvorbis.dll.a \
-DVORBIS_DLL=$libdir/libvorbis/bin/libvorbis-0.dll \
-DVORBISFILE_LIBRARY=$libdir/libvorbis/lib/libvorbisfile.dll.a \
-DVORBISFILE_DLL=$libdir/libvorbis/bin/libvorbisfile-3.dll \
\
-DOPENAL_INCLUDE_DIR=$libdir/openal_stripped/include/AL \
-DOPENAL_LIBRARY=$libdir/openal_stripped/lib/libOpenAL32.dll.a \
-DOPENAL_DLL=$libdir/openal_stripped/bin/OpenAL32.dll \
\
-DCURL_DLL=$libdir/libcurl/bin/libcurl-4.dll \
-DCURL_INCLUDE_DIR=$libdir/libcurl/include \
-DCURL_LIBRARY=$libdir/libcurl/lib/libcurl.dll.a \
\
-DGETTEXT_MSGFMT=`which msgfmt` \
-DGETTEXT_DLL=$libdir/gettext/bin/libintl-8.dll \
-DGETTEXT_ICONV_DLL=$libdir/gettext/bin/libiconv-2.dll \
-DGETTEXT_INCLUDE_DIR=$libdir/gettext/include \
-DGETTEXT_LIBRARY=$libdir/gettext/lib/libintl.dll.a \
\
-DFREETYPE_INCLUDE_DIR_freetype2=$libdir/freetype/include/freetype2 \
-DFREETYPE_INCLUDE_DIR_ft2build=$libdir/freetype/include/freetype2 \
-DFREETYPE_LIBRARY=$libdir/freetype/lib/libfreetype.dll.a \
-DFREETYPE_DLL=$libdir/freetype/bin/libfreetype-6.dll \
\
2015-01-08 21:30:07 +01:00
-DSQLITE3_INCLUDE_DIR=$libdir/sqlite3/include \
-DSQLITE3_LIBRARY=$libdir/sqlite3/lib/libsqlite3.dll.a \
-DSQLITE3_DLL=$libdir/sqlite3/bin/libsqlite3-0.dll \
\
-DLEVELDB_INCLUDE_DIR=$libdir/leveldb/include \
-DLEVELDB_LIBRARY=$libdir/leveldb/lib/libleveldb.dll.a \
-DLEVELDB_DLL=$libdir/leveldb/bin/libleveldb.dll
make -j$(nproc)
[ "x$NO_PACKAGE" = "x" ] && make package
exit 0
# EOF