X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fxonotic.git;a=blobdiff_plain;f=misc%2Ftools%2Fall%2Fxonotic.subr;h=0938974ca9b46bcfa8fd36442cf7de74267d49b7;hp=3aa15837fcee39af4d5baeff43e78d056d7a249a;hb=b21867380b07a080c13c6bc29eb8fffe40b51df1;hpb=ceb891e7b45e92bdd8dce6ad9f4dce3642600584 diff --git a/misc/tools/all/xonotic.subr b/misc/tools/all/xonotic.subr index 3aa15837..0938974c 100644 --- a/misc/tools/all/xonotic.subr +++ b/misc/tools/all/xonotic.subr @@ -8,9 +8,10 @@ case "$cmd" in msg "Usage: ./all compile-map mapname1 mapname2 mapname3" msg "For example: ./all compile-map dance xoylent" fi - if ! [ -f "netradiant/install/q3map2" ] ; then - msg "q3map2 needed! Building netradiant..." - make -C netradiant BUILD=native install/q3map2 + if ! [ -f "netradiant/build/q3map2" ] ; then + msg "q3map2 needed! Building q3map2..." + cmake -H'netradiant' -B'netradiant/build' -G'Unix Makefiles' -D'CMAKE_BUILD_TYPE=Release' -DBUILD_RADIANT=OFF -DDOWNLOAD_GAMEPACKS=OFF + cmake --build 'netradiant/build' -- q3map2 fi for mapfile in "$@"; do mapfile="data/xonotic-maps.pk3dir/maps/$mapfile.map" @@ -26,8 +27,8 @@ case "$cmd" in cleandp=false cleanqcc=false cleanqc=false - compiled0=false - debug=debug + compiled0= + debug=release # when changing this default, change the description in the zsh autocompletion script if [ -z "$CC" ]; then export CC="gcc" fi @@ -38,6 +39,10 @@ case "$cmd" in compiled0=true shift ;; + -1) + compiled0=false + shift + ;; -c) cleand0=true cleandp=true @@ -49,8 +54,11 @@ case "$cmd" in cleanqc=true shift ;; - -r|-p) + -d|-p|-r) case "$1" in + -d) + debug=debug + ;; -p) debug=profile ;; @@ -82,6 +90,8 @@ case "$cmd" in if [ x"`uname`" = x"Darwin" ]; then TARGETS="sv-$debug sdl-$debug" export CC="$CC -fno-reorder-blocks" + elif [ -n "$WE_HATE_OUR_USERS" ]; then + TARGETS="sv-$debug sdl-$debug" else TARGETS="sv-$debug cl-$debug sdl-$debug" fi @@ -100,7 +110,7 @@ case "$cmd" in sdl) TARGETS="$TARGETS sdl-$debug" ;; - glx|wgl) + glx) TARGETS="$TARGETS cl-$debug" ;; dedicated) @@ -119,6 +129,10 @@ case "$cmd" in fi fi + if [ -z "$MAKE" ]; then + MAKE=make + fi + if [ -z "$MAKEFLAGS" ]; then ncpus=`getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null || echo 1` if [ $ncpus -gt 1 ]; then @@ -131,7 +145,14 @@ case "$cmd" in if [ -n "$WE_HATE_OUR_USERS" ]; then # win32: use SDL2 - MAKEFLAGS="$MAKEFLAGS SDL_CONFIG=$d0/misc/builddeps/win32/sdl/bin/sdl2-config" + case `uname -m` in + x86_64) + MAKEFLAGS="$MAKEFLAGS SDL_CONFIG=$d0/misc/builddeps/win64/sdl/bin/sdl2-config" + ;; + *) + MAKEFLAGS="$MAKEFLAGS SDL_CONFIG=$d0/misc/builddeps/win32/sdl/bin/sdl2-config" + ;; + esac # win32: don't rely on jpeg includes MAKEFLAGS="$MAKEFLAGS LIB_JPEG= CFLAGS_LIBJPEG=" @@ -151,7 +172,7 @@ case "$cmd" in MAKEFLAGS="$MAKEFLAGS CFLAGS_SSE= CFLAGS_SSE2=" ;; esac - + if ! verbose $CC misc/tools/conftest.c -o conftest; then msg "" msg "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" @@ -179,28 +200,32 @@ case "$cmd" in rm -f conftest verbose cd "$d0/d0_blind_id" - if ! $compiled0; then + if [ -z "$compiled0" ]; then + # In doubt, compile. + compiled0=true + # compilation of crypto library failed # use binaries then, if we can... mkdir -p .libs if [ -n "$WE_HATE_OUR_USERS" ]; then - verbose cp "$d0/misc/buildfiles/win32/libd0_blind_id"-* .libs/ - verbose cp "$d0/misc/buildfiles/win32/libd0_rijndael"-* .libs/ - verbose cp "$d0/misc/buildfiles/win32/libgmp"-* .libs/ + case `uname -m` in + x86_64) + verbose cp "$d0/misc/buildfiles/win64/libd0_blind_id"-* .libs/ + verbose cp "$d0/misc/buildfiles/win64/libd0_rijndael"-* .libs/ + verbose cp "$d0/misc/buildfiles/win64/libgmp"-* .libs/ + compiled0=false + ;; + *) + verbose cp "$d0/misc/buildfiles/win32/libd0_blind_id"-* .libs/ + verbose cp "$d0/misc/buildfiles/win32/libd0_rijndael"-* .libs/ + verbose cp "$d0/misc/buildfiles/win32/libgmp"-* .libs/ + compiled0=false + ;; + esac else case "`uname`" in Linux) case `uname -m` in - x86_64) - # No cp commands, we want to use static linking instead. - export CC="$CC -I../../../../misc/builddeps/linux64/d0_blind_id/include" - export CC="$CC -L../../../../misc/builddeps/linux64/d0_blind_id/lib" - export CC="$CC -Wl,-rpath,../../../../misc/builddeps/linux64/d0_blind_id/lib" - export CC="$CC -I../../../../misc/builddeps/linux64/gmp/include" - export CC="$CC -L../../../../misc/builddeps/linux64/gmp/lib" - export CC="$CC -Wl,-rpath,../../../../misc/builddeps/linux64/gmp/lib" - MAKEFLAGS="$MAKEFLAGS DP_LINK_CRYPTO=shared DP_LINK_CRYPTO_RIJNDAEL=shared LIB_CRYPTO=../../../../misc/builddeps/linux64/d0_blind_id/lib/libd0_blind_id.a LIB_CRYPTO+=../../../../misc/builddeps/linux64/gmp/lib/libgmp.a LIB_CRYPTO_RIJNDAEL=../../../../misc/builddeps/linux64/d0_blind_id/lib/libd0_rijndael.a" - ;; *86) # No cp commands, we want to use static linking instead. export CC="$CC -I../../../../misc/builddeps/linux32/d0_blind_id/include" @@ -210,18 +235,20 @@ case "$cmd" in export CC="$CC -L../../../../misc/builddeps/linux32/gmp/lib" export CC="$CC -Wl,-rpath,../../../../misc/builddeps/linux32/gmp/lib" MAKEFLAGS="$MAKEFLAGS DP_LINK_CRYPTO=shared DP_LINK_CRYPTO_RIJNDAEL=shared LIB_CRYPTO=../../../../misc/builddeps/linux32/d0_blind_id/lib/libd0_blind_id.a LIB_CRYPTO+=../../../../misc/builddeps/linux32/gmp/lib/libgmp.a LIB_CRYPTO_RIJNDAEL=../../../../misc/builddeps/linux32/d0_blind_id/lib/libd0_rijndael.a" + compiled0=false ;; *) - compiled0=true + msg "Always need to compile libd0_blind_id on Linux `uname -m`." ;; esac ;; Darwin) verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_blind_id".* .libs/ verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_rijndael".* .libs/ + compiled0=false ;; *) - compiled0=true + msg "Always need to compile libd0_blind_id on `uname`." ;; esac fi @@ -229,31 +256,36 @@ case "$cmd" in if $compiled0; then if $cleand0; then if [ -f Makefile ]; then - verbose make $MAKEFLAGS distclean + verbose $MAKE $MAKEFLAGS distclean fi fi if ! [ -f Makefile ]; then verbose sh autogen.sh verbose ./configure fi - verbose make $MAKEFLAGS + verbose $MAKE $MAKEFLAGS fi verbose cd "$d0/gmqcc" if $cleanqcc; then - verbose make $MAKEFLAGS clean + verbose $MAKE $MAKEFLAGS clean fi if [ -n "$WE_HATE_OUR_USERS" ]; then - verbose make $MAKEFLAGS gmqcc.exe + verbose $MAKE $MAKEFLAGS gmqcc.exe else - verbose make $MAKEFLAGS gmqcc + verbose $MAKE $MAKEFLAGS gmqcc fi + if [ -n "$MSYSTEM" ]; then + DATAMAKE=mingw32-make + else + DATAMAKE=$MAKE + fi verbose cd "$d0/data/xonotic-data.pk3dir" if $cleanqc; then - verbose make QCC="../../../../gmqcc/gmqcc" "$@" $MAKEFLAGS clean + verbose ${DATAMAKE} QCC="../../../../gmqcc/gmqcc" "$@" $MAKEFLAGS clean fi - verbose make QCC="../../../../gmqcc/gmqcc" "$@" $MAKEFLAGS + verbose ${DATAMAKE} QCC="../../../../gmqcc/gmqcc" "$@" $MAKEFLAGS # 4 levels up: data, xonotic-data, qcsrc, server verbose cd "$d0/darkplaces" @@ -261,10 +293,10 @@ case "$cmd" in $ECHO "Warning: invalid empty client, default clients will be used." fi if $cleandp; then - verbose make $MAKEFLAGS clean + verbose $MAKE $MAKEFLAGS clean fi for T in $TARGETS; do - verbose make $MAKEFLAGS STRIP=: "$@" "$T" + verbose $MAKE $MAKEFLAGS STRIP=: "$@" "$T" done for T in $BAD_TARGETS; do $ECHO "Warning: discarded invalid client $T." @@ -274,32 +306,38 @@ case "$cmd" in ;; run) if [ -n "$WE_HATE_OUR_USERS" ]; then - client= - export PATH="$d0/misc/buildfiles/win32:$d0/d0_blind_id/.libs:$PATH" + case `uname -m` in + x86_64) + export PATH="$d0/misc/buildfiles/win64:$d0/d0_blind_id/.libs:$PATH" + ;; + *) + export PATH="$d0/misc/buildfiles/win32:$d0/d0_blind_id/.libs:$PATH" + ;; + esac elif [ x"`uname`" = x"Darwin" ]; then export DYLD_LIBRARY_PATH="$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS:$d0/d0_blind_id/.libs" export DYLD_FRAMEWORK_PATH="$d0/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks" - client=-sdl else - export LD_LIBRARY_PATH="$d0/d0_blind_id/.libs" - client=-sdl + export LD_LIBRARY_PATH="$d0/d0_blind_id/.libs${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" fi + + client=-sdl + USE_RLWRAP=no case "$1" in dedicated) client=-$1 + USE_RLWRAP= shift ;; - sdl|glx) - USE_RLWRAP=no - client=-$1 + sdl) shift ;; - wgl) - USE_RLWRAP=no - client= + glx) + client=-$1 shift ;; esac + if ! [ -x "darkplaces/darkplaces$client" ]; then if [ -x "darkplaces/darkplaces$client.exe" ]; then client=$client.exe @@ -350,12 +388,21 @@ case "$cmd" in fi ;; help) - $ECHO " $SELF compile [-c] [-qc] [-r|-p] [-0] [sdl|glx|wgl|dedicated]" + $ECHO " $SELF compile [-c] [-qc] [-d|-p|-r] [-0] [-1] [sdl|glx|dedicated]" $ECHO " $SELF update-maps" - $ECHO " $SELF run [sdl|glx|wgl|dedicated] options..." + $ECHO " $SELF run [sdl|glx|dedicated] options..." $ECHO " $SELF compile-map mapname1 mapname2... (e.g. \"./all compile-map dance drain fuse\")" handled=false ;; + serverbench) + # TODO(rpolzer): Why does :anticheat: output differ? Total game time differs? Why? + verbose "$SELF" run "$@" -noconfig -nohome +exec serverbench.cfg |\ + tee /dev/stderr |\ + grep '^:' |\ + grep -v '^:gamestart:' |\ + grep -v '^:anticheat:' |\ + md5sum + ;; *) handled=false ;;