X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fxonotic.git;a=blobdiff_plain;f=misc%2Ftools%2Fall%2Fxonotic.subr;h=cb3b67537fadc1955d7908e9cd3e8452891e03db;hp=225f448a88a00380e96882a0eda87c692eb0d6ac;hb=dee2bf9bd9f453220f9913137cb3d407afcb25f4;hpb=09fb8dba19ee95a58c2be4102faa869fe1fd9278 diff --git a/misc/tools/all/xonotic.subr b/misc/tools/all/xonotic.subr index 225f448a..cb3b6753 100644 --- a/misc/tools/all/xonotic.subr +++ b/misc/tools/all/xonotic.subr @@ -26,8 +26,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 +38,10 @@ case "$cmd" in compiled0=true shift ;; + -1) + compiled0=false + shift + ;; -c) cleand0=true cleandp=true @@ -45,8 +49,15 @@ case "$cmd" in cleanqc=true shift ;; - -r|-p) + -qc) + cleanqc=true + shift + ;; + -d|-p|-r) case "$1" in + -d) + debug=debug + ;; -p) debug=profile ;; @@ -74,14 +85,16 @@ case "$cmd" in ;; esac done - if [ -n "$WE_HATE_OUR_USERS" ]; then - TARGETS="sv-$debug cl-$debug" - elif [ x"`uname`" = x"Darwin" ]; then + + 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" - export CC="$CC -fno-reorder-blocks -I$PWD/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL.framework/Headers -F$PWD/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks" else TARGETS="sv-$debug cl-$debug sdl-$debug" fi + if [ $# -gt 0 ] && [ x"$1" = x"" ]; then # if we give the command make the arg "", it will surely fail (invalid filename), # so better handle it as an empty client option @@ -95,11 +108,8 @@ case "$cmd" in case "$X" in sdl) TARGETS="$TARGETS sdl-$debug" - if [ -n "$WE_HATE_OUR_USERS" ]; then - export PATH="$PATH:$d0/misc/builddeps/win32/sdl/bin" - fi ;; - glx|wgl) + glx) TARGETS="$TARGETS cl-$debug" ;; dedicated) @@ -117,6 +127,11 @@ case "$cmd" in BAD_TARGETS= 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 @@ -127,11 +142,27 @@ case "$cmd" in fi fi - # win32: don't rely on jpeg includes if [ -n "$WE_HATE_OUR_USERS" ]; then + # win32: use SDL2 + 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=" fi + if [ x"`uname`" = x"Darwin" ]; then + # osx: use SDL2 + f=$d0/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks + MAKEFLAGS="$MAKEFLAGS SDLCONFIG_MACOSXCFLAGS=-I$f/SDL2.framework/Headers SDLCONFIG_MACOSXLIBS=-F$f SDLCONFIG_MACOSXLIBS+=-framework SDLCONFIG_MACOSXLIBS+=SDL2 SDLCONFIG_MACOSXLIBS+=-framework SDLCONFIG_MACOSXLIBS+=Cocoa SDLCONFIG_MACOSXLIBS+=-I$f/SDL2.framework/Headers SDLCONFIG_MACOSXSTATICLIBS=-F$f SDLCONFIG_MACOSXSTATICLIBS+=-framework SDLCONFIG_MACOSXSTATICLIBS+=SDL2 SDLCONFIG_MACOSXSTATICLIBS+=-framework SDLCONFIG_MACOSXSTATICLIBS+=Cocoa SDLCONFIG_MACOSXSTATICLIBS+=-I$f/SDL2.framework/Headers" + fi + # workaround ARM issue in DP's makefile.inc case `uname -m` in x86_64|*86) @@ -140,7 +171,7 @@ case "$cmd" in MAKEFLAGS="$MAKEFLAGS CFLAGS_SSE= CFLAGS_SSE2=" ;; esac - + if ! verbose $CC misc/tools/conftest.c -o conftest; then msg "" msg "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" @@ -168,28 +199,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" @@ -199,18 +234,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 @@ -218,31 +255,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" @@ -250,10 +292,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." @@ -263,32 +305,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 @@ -339,12 +387,23 @@ case "$cmd" in fi ;; help) - $ECHO " $SELF compile [-c] [-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? + trap "rm -rf .serverbench_temp" 0 1 2 3 11 13 15 + mkdir -p .serverbench_temp + verbose "$SELF" run dedicated "$@" -noconfig -userdir .serverbench_temp +exec serverbench.cfg |\ + tee /dev/stderr |\ + grep '^:' |\ + grep -v '^:gamestart:' |\ + grep -v '^:anticheat:' |\ + md5sum + ;; *) handled=false ;;