try to fix some build types.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5108 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2017-05-23 07:48:45 +00:00
parent bdd0af432f
commit 9689f7680e
5 changed files with 769 additions and 739 deletions

View File

@ -1,409 +1,417 @@
#!/bin/bash #!/bin/bash
#sets up dependancies for debian-jessie (8.7) #sets up dependancies for debian-jessie (8.7)
#this script must be run twice. first time as root, which installs system packages #this script must be run twice. first time as root, which installs system packages
#second time as a regular user (probably not your normal one), which installs 3rd-party stuff #second time as a regular user (probably not your normal one), which installs 3rd-party stuff
SVNROOT=$(cd "$(dirname "$BASH_SOURCE")" && pwd) SVNROOT=$(cd "$(dirname "$BASH_SOURCE")" && pwd)
FTEROOT=$(realpath $SVNROOT/..) FTEROOT=$(realpath $SVNROOT/..)
FTEROOT=${FTEROOT:-~} FTEROOT=${FTEROOT:-~}
FTECONFIG=$SVNROOT/build.cfg FTECONFIG=$SVNROOT/build.cfg
BUILDFOLDER=`echo ~`/htdocs BUILDFOLDER=`echo ~`/htdocs
BUILDLOGFOLDER=$BUILDFOLDER/build_logs BUILDLOGFOLDER=$BUILDFOLDER/build_logs
#mac defaults #mac defaults
OSXCROSSROOT=$FTEROOT/osxcross OSXCROSSROOT=$FTEROOT/osxcross
#emscripten defaults #emscripten defaults
EMSCRIPTENROOT=$FTEROOT/emsdk-portable EMSCRIPTENROOT=$FTEROOT/emsdk-portable
#nacl defaults #nacl defaults
NACLROOT=$FTEROOT/nacl_sdk NACLROOT=$FTEROOT/nacl_sdk
NACLSDKVERSION=pepper_49 NACLSDKVERSION=pepper_49
#android defaults #android defaults
ANDROIDROOT=$FTEROOT/android ANDROIDROOT=$FTEROOT/android
if [ ! -z "$(uname -o 2>&1 | grep Cygwin)" ]; then if [ ! -z "$(uname -o 2>&1 | grep Cygwin)" ]; then
ANDROID_HOSTSYSTEM=windows-x86_64 ANDROID_HOSTSYSTEM=windows-x86_64
else else
ANDROID_HOSTSYSTEM=linux-$(uname -m) ANDROID_HOSTSYSTEM=linux-$(uname -m)
fi fi
ANDROIDBUILDTOOLS=25.0.0 ANDROIDBUILDTOOLS=25.0.0
ANDROID_ZIPALIGN=$ANDROIDROOT/build-tools/$ANDROIDBUILDTOOLS/zipalign #relative to ndk tools ANDROID_ZIPALIGN=$ANDROIDROOT/build-tools/$ANDROIDBUILDTOOLS/zipalign #relative to ndk tools
THREADS="-j 4" THREADS="-j 4"
#windows is always cross compiled, so we don't have issues with non-native ffmpeg #windows is always cross compiled, so we don't have issues with non-native ffmpeg
PLUGINS_LINUXx86="ode qi ezhud xmpp irc" PLUGINS_LINUXx86="ode qi ezhud xmpp irc"
PLUGINS_LINUXx64="ode qi ezhud xmpp irc" PLUGINS_LINUXx64="ode qi ezhud xmpp irc"
PLUGINS_LINUXx32="qi ezhud xmpp irc" PLUGINS_LINUXx32="qi ezhud xmpp irc"
PLUGINS_LINUXarmhf="qi ezhud xmpp irc" PLUGINS_LINUXarmhf="qi ezhud xmpp irc"
if [ "$(uname -m)" != "x86_64" ]; then if [ "$(uname -m)" != "x86_64" ]; then
PLUGINS_LINUXx86="ffmpeg ode qi ezhud xmpp irc" PLUGINS_LINUXx86="ffmpeg ode qi ezhud xmpp irc"
fi fi
if [ "$(uname -m)" == "x86_64" ]; then if [ "$(uname -m)" == "x86_64" ]; then
PLUGINS_LINUX64="ffmpeg ode qi ezhud xmpp irc" PLUGINS_LINUX64="ffmpeg ode qi ezhud xmpp irc"
fi fi
#windows doesn't cross compile, so no system dependancy issues #windows doesn't cross compile, so no system dependancy issues
#skip some dependancies if we're running on cygwin, ode is buggy. #skip some dependancies if we're running on cygwin, ode is buggy.
if [ "$(uname -s)" == "Linux" ]; then if [ "$(uname -s)" == "Linux" ]; then
PLUGINS_WINDOWS="ffmpeg ode qi ezhud xmpp irc" PLUGINS_WINDOWS="ffmpeg ode qi ezhud xmpp irc"
else else
PLUGINS_WINDOWS="qi ezhud xmpp irc" PLUGINS_WINDOWS="qi ezhud xmpp irc"
fi fi
echo echo
echo "This is Spike's script to set up various cross compilers and dependancies." echo "This is Spike's script to set up various cross compilers and dependancies."
echo "This script will check dependancies. If something isn't installed you can either rerun the script as root (which will ONLY install system packages), or manually apt-get or whatever. You can then re-run the script as a regular user to finish configuring 3rd party dependancies." echo "This script will check dependancies. If something isn't installed you can either rerun the script as root (which will ONLY install system packages), or manually apt-get or whatever. You can then re-run the script as a regular user to finish configuring 3rd party dependancies."
echo echo
echo "You can change your choices later by just re-running this script" echo "You can change your choices later by just re-running this script"
echo "(Your settings will be autosaved in $FTECONFIG)" echo "(Your settings will be autosaved in $FTECONFIG)"
echo echo
echo "If you just want to compile a native build, just use the following command:" echo "If you just want to compile a native build, just use the following command:"
echo "cd $SVNROOT/engine && make gl-rel" echo "cd $SVNROOT/engine && make gl-rel"
echo "(if you're in cygwin, add FTE_TARGET=win32 to compile for native windows)" echo "(if you're in cygwin, add FTE_TARGET=win32 to compile for native windows)"
echo "(add plugins-rel qcc-rel qccgui-rel sv-rel vk-rel etc for additional targets)" echo "(add plugins-rel qcc-rel qccgui-rel sv-rel vk-rel etc for additional targets)"
echo "(or use -dbg if you want debug builds for whatever reason)" echo "(or use -dbg if you want debug builds for whatever reason)"
echo echo
#always execute it if it exists, so that we preserve custom paths etc that are not prompted for here #always execute it if it exists, so that we preserve custom paths etc that are not prompted for here
if [ -e $FTECONFIG ]; then if [ -e $FTECONFIG ]; then
. $FTECONFIG . $FTECONFIG
if [ $UID -eq 0 ]; then if [ $UID -eq 0 ]; then
REUSE_CONFIG=y #root shouldn't be writing/owning the config file. REUSE_CONFIG=y #root shouldn't be writing/owning the config file.
else else
read -n 1 -p "Reuse previous build config? [y/N] " REUSE_CONFIG && echo read -n 1 -p "Reuse previous build config? [y/N] " REUSE_CONFIG && echo
REUSE_CONFIG=${REUSE_CONFIG:-n} REUSE_CONFIG=${REUSE_CONFIG:-n}
fi fi
else else
if [ $UID -eq 0 ]; then if [ $UID -eq 0 ]; then
exit #root can't create the output, as that would take ownership. exit #root can't create the output, as that would take ownership.
else else
REUSE_CONFIG=n REUSE_CONFIG=n
fi fi
fi fi
if [ "$REUSE_CONFIG" != "y" ]; then if [ "$REUSE_CONFIG" != "y" ]; then
#linux compiles are native-only, so don't bug out on cygwin which lacks a cross compiler. #linux compiles are native-only, so don't bug out on cygwin which lacks a cross compiler.
BUILD_LINUXx86=n BUILD_LINUXx86=n
BUILD_LINUXx64=n BUILD_LINUXx64=n
BUILD_LINUXx32=n BUILD_LINUXx32=n
BUILD_LINUXarmhf=n BUILD_LINUXarmhf=n
if [ "$(uname -s)" == "Linux" ]; then if [ "$(uname -s)" == "Linux" ]; then
read -n 1 -p "Build for Linux x86? [Y/n] " BUILD_LINUXx86 && echo read -n 1 -p "Build for Linux x86? [Y/n] " BUILD_LINUXx86 && echo
read -n 1 -p "Build for Linux x86_64? [Y/n] " BUILD_LINUXx64 && echo read -n 1 -p "Build for Linux x86_64? [Y/n] " BUILD_LINUXx64 && echo
read -n 1 -p "Build for Linux x32? [y/N] " BUILD_LINUXx32 && echo read -n 1 -p "Build for Linux x32? [y/N] " BUILD_LINUXx32 && echo
#ubuntu's gcc-multilib-arm-foo package conflicts with gcc-multilib... #ubuntu's gcc-multilib-arm-foo package conflicts with gcc-multilib...
#the whole point of multilib was to avoid conflicts... someone fucked up. #the whole point of multilib was to avoid conflicts... someone fucked up.
#read -n 1 -p "Build for Linux armhf [y/N] " BUILD_LINUXarmhf && echo #read -n 1 -p "Build for Linux armhf [y/N] " BUILD_LINUXarmhf && echo
else else
echo "Skipping Linux options." echo "Skipping Linux options."
fi fi
BUILD_CYGWIN=n BUILD_CYGWIN=n
BUILD_MSVC=n BUILD_MSVC=n
if [ "$(uname -o)" == "Cygwin" ]; then if [ "$(uname -o)" == "Cygwin" ]; then
read -n 1 -p "Build for Cygwin? [y/N] " BUILD_CYGWIN && echo read -n 1 -p "Build for Cygwin? [y/N] " BUILD_CYGWIN && echo
read -n 1 -p "Build with MSVC? (requires windows7 sdk) [y/N] " BUILD_MSVC && echo read -n 1 -p "Build with MSVC? (requires windows7 sdk) [y/N] " BUILD_MSVC && echo
else else
echo "Skipping Cygwin options." echo "Skipping Cygwin options."
fi fi
read -n 1 -p "Build for Windows? [Y/n] " BUILD_WINDOWS && echo read -n 1 -p "Build for Windows? [Y/n] " BUILD_WINDOWS && echo
read -n 1 -p "Build for SDL? [y/N] " BUILD_SDL && echo read -n 1 -p "Build for Dos? [y/N] " BUILD_WINDOWS && echo
read -n 1 -p "Build for Android? [y/N] " BUILD_ANDROID && echo read -n 1 -p "Build for SDL? [y/N] " BUILD_SDL && echo
read -n 1 -p "Build for Emscripten? [y/N] " BUILD_WEB && echo read -n 1 -p "Build for Android? [y/N] " BUILD_ANDROID && echo
if [ 0 -ne 0 ]; then read -n 1 -p "Build for Emscripten? [y/N] " BUILD_WEB && echo
read -n 1 -p "Build for MacOSX? [y/N] " BUILD_MAC && echo if [ 0 -ne 0 ]; then
else read -n 1 -p "Build for MacOSX? [y/N] " BUILD_MAC && echo
echo "Skipping mac option." else
fi echo "Skipping mac option."
read -n 1 -p "Build for NaCL? [y/N] " BUILD_NACL && echo fi
fi read -n 1 -p "Build for NaCL? [y/N] " BUILD_NACL && echo
fi
BUILD_LINUXx86=${BUILD_LINUXx86:-y}
BUILD_LINUXx64=${BUILD_LINUXx64:-y} BUILD_LINUXx86=${BUILD_LINUXx86:-y}
BUILD_LINUXx32=${BUILD_LINUXx32:-n} BUILD_LINUXx64=${BUILD_LINUXx64:-y}
BUILD_LINUXarmhf=${BUILD_LINUXarmhf:-n} BUILD_LINUXx32=${BUILD_LINUXx32:-n}
BUILD_CYGWIN=${BUILD_CYGWIN:-n} BUILD_LINUXarmhf=${BUILD_LINUXarmhf:-n}
BUILD_WINDOWS=${BUILD_WINDOWS:-y} BUILD_CYGWIN=${BUILD_CYGWIN:-n}
BUILD_MSVC=${BUILD_MSVC:-n} BUILD_WINDOWS=${BUILD_WINDOWS:-y}
BUILD_SDL=${BUILD_SDL:-n} BUILD_DOS=${BUILD_DOS:-n}
BUILD_ANDROID=${BUILD_ANDROID:-n} BUILD_MSVC=${BUILD_MSVC:-n}
BUILD_WEB=${BUILD_WEB:-n} BUILD_SDL=${BUILD_SDL:-n}
BUILD_MAC=${BUILD_MAC:-n} BUILD_ANDROID=${BUILD_ANDROID:-n}
BUILD_NACL=${BUILD_NACL:-n} BUILD_WEB=${BUILD_WEB:-n}
BUILD_MAC=${BUILD_MAC:-n}
if [ "$UID" != "0" ]; then BUILD_NACL=${BUILD_NACL:-n}
echo "#path config for fte build scripts" >$FTECONFIG
echo "THREADS=\"$THREADS\"" >>$FTECONFIG if [ "$UID" != "0" ]; then
echo "BUILDFOLDER=\"$BUILDFOLDER\"" >>$FTECONFIG echo "#path config for fte build scripts" >$FTECONFIG
echo "BUILDLOGFOLDER=\"$BUILDLOGFOLDER\"" >>$FTECONFIG echo "THREADS=\"$THREADS\"" >>$FTECONFIG
echo "SVNROOT=\"$SVNROOT\"" >>$FTECONFIG echo "BUILDFOLDER=\"$BUILDFOLDER\"" >>$FTECONFIG
echo "ANDROIDROOT=\"$ANDROIDROOT\"" >>$FTECONFIG echo "BUILDLOGFOLDER=\"$BUILDLOGFOLDER\"" >>$FTECONFIG
echo "export ANDROID_HOSTSYSTEM=\"ANDROID_HOSTSYSTEM\"" >>$FTECONFIG echo "SVNROOT=\"$SVNROOT\"" >>$FTECONFIG
echo "export ANDROID_ZIPALIGN=\"ANDROID_ZIPALIGN\"" >>$FTECONFIG echo "ANDROIDROOT=\"$ANDROIDROOT\"" >>$FTECONFIG
echo "EMSCRIPTENROOT=\"$EMSCRIPTENROOT\"" >>$FTECONFIG echo "export ANDROID_HOSTSYSTEM=\"ANDROID_HOSTSYSTEM\"" >>$FTECONFIG
echo "OSXCROSSROOT=\"$OSXCROSSROOT\"" >>$FTECONFIG echo "export ANDROID_ZIPALIGN=\"ANDROID_ZIPALIGN\"" >>$FTECONFIG
echo "NACLROOT=\"$NACLROOT\"" >>$FTECONFIG echo "EMSCRIPTENROOT=\"$EMSCRIPTENROOT\"" >>$FTECONFIG
echo "NACL_SDK_ROOT=\"$NACLROOT/nacl_sdk/$NACLSDKVERSION\"" >>$FTECONFIG echo "OSXCROSSROOT=\"$OSXCROSSROOT\"" >>$FTECONFIG
echo "NACLSDKVERSION=\"$NACLSDKVERSION\"" >>$FTECONFIG echo "NACLROOT=\"$NACLROOT\"" >>$FTECONFIG
echo "NACL_SDK_ROOT=\"$NACLROOT/nacl_sdk/$NACLSDKVERSION\"" >>$FTECONFIG
echo "BUILD_LINUXx86=\"$BUILD_LINUXx86\"" >>$FTECONFIG echo "NACLSDKVERSION=\"$NACLSDKVERSION\"" >>$FTECONFIG
echo "BUILD_LINUXx64=\"$BUILD_LINUXx64\"" >>$FTECONFIG
echo "BUILD_LINUXx32=\"$BUILD_LINUXx32\"" >>$FTECONFIG echo "BUILD_LINUXx86=\"$BUILD_LINUXx86\"" >>$FTECONFIG
echo "BUILD_LINUXarmhf=\"$BUILD_LINUXarmhf\"" >>$FTECONFIG echo "BUILD_LINUXx64=\"$BUILD_LINUXx64\"" >>$FTECONFIG
echo "BUILD_CYGWIN=\"$BUILD_CYGWIN\"" >>$FTECONFIG echo "BUILD_LINUXx32=\"$BUILD_LINUXx32\"" >>$FTECONFIG
echo "BUILD_WINDOWS=\"$BUILD_WINDOWS\"" >>$FTECONFIG echo "BUILD_LINUXarmhf=\"$BUILD_LINUXarmhf\"" >>$FTECONFIG
echo "BUILD_MSVC=\"$BUILD_MSVC\"" >>$FTECONFIG echo "BUILD_CYGWIN=\"$BUILD_CYGWIN\"" >>$FTECONFIG
echo "BUILD_ANDROID=\"$BUILD_ANDROID\"" >>$FTECONFIG echo "BUILD_WINDOWS=\"$BUILD_WINDOWS\"" >>$FTECONFIG
echo "BUILD_SDL=\"$BUILD_SDL\"" >>$FTECONFIG echo "BUILD_DOS=\"$BUILD_DOS\"" >>$FTECONFIG
echo "BUILD_WEB=\"$BUILD_WEB\"" >>$FTECONFIG echo "BUILD_MSVC=\"$BUILD_MSVC\"" >>$FTECONFIG
echo "BUILD_MAC=\"$BUILD_MAC\"" >>$FTECONFIG echo "BUILD_ANDROID=\"$BUILD_ANDROID\"" >>$FTECONFIG
echo "BUILD_NACL=\"$BUILD_NACL\"" >>$FTECONFIG echo "BUILD_SDL=\"$BUILD_SDL\"" >>$FTECONFIG
echo "BUILD_WEB=\"$BUILD_WEB\"" >>$FTECONFIG
echo "PLUGINS_WINDOWS=\"$PLUGINS_WINDOWS\"" >>$FTECONFIG echo "BUILD_MAC=\"$BUILD_MAC\"" >>$FTECONFIG
echo "PLUGINS_LINUXx86=\"$PLUGINS_LINUXx86\"" >>$FTECONFIG echo "BUILD_NACL=\"$BUILD_NACL\"" >>$FTECONFIG
echo "PLUGINS_LINUXx64=\"$PLUGINS_LINUXx64\"" >>$FTECONFIG
echo "PLUGINS_LINUXx32=\"$PLUGINS_LINUXx32\"" >>$FTECONFIG echo "PLUGINS_WINDOWS=\"$PLUGINS_WINDOWS\"" >>$FTECONFIG
echo "PLUGINS_LINUXarmhf=\"$PLUGINS_LINUXarmhf\"" >>$FTECONFIG echo "PLUGINS_LINUXx86=\"$PLUGINS_LINUXx86\"" >>$FTECONFIG
fi echo "PLUGINS_LINUXx64=\"$PLUGINS_LINUXx64\"" >>$FTECONFIG
echo "PLUGINS_LINUXx32=\"$PLUGINS_LINUXx32\"" >>$FTECONFIG
true echo "PLUGINS_LINUXarmhf=\"$PLUGINS_LINUXarmhf\"" >>$FTECONFIG
true=$? fi
false
false=$? true
true=$?
if [ "$(uname -s)" == "Linux" ]; then false
. /etc/os-release false=$?
fi
function debianpackages { if [ "$(uname -s)" == "Linux" ]; then
#make sure apt-get is installed . /etc/os-release
if [ -z `which apt-get 2>>/dev/null` ]; then fi
return $false function debianpackages {
fi #make sure apt-get is installed
local ret=$true if [ -z `which apt-get 2>>/dev/null` ]; then
for i in "$@" return $false
do fi
dpkg -s $i 2>&1 >> /dev/null local ret=$true
if [ $? -eq 1 ]; then for i in "$@"
ret=$false do
fi dpkg -s $i 2>&1 >> /dev/null
done if [ $? -eq 1 ]; then
ret=$false
if [ $ret == $false ]; then fi
if [ $UID -eq 0 ]; then done
apt-get install --no-install-recommends $@
ret=$true if [ $ret == $false ]; then
else if [ $UID -eq 0 ]; then
echo "Packages not installed. Run as root to easily install dependancies." apt-get install --no-install-recommends $@
fi ret=$true
fi else
return $ret echo "Packages not installed. Run as root to easily install dependancies."
} fi
function jessiepackages { fi
if [ "$PRETTY_NAME" != "Debian GNU/Linux 8 (jessie)" ]; then return $ret
return $false }
fi function jessiepackages {
if [ "$PRETTY_NAME" != "Debian GNU/Linux 8 (jessie)" ]; then
debianpackages $@ return $false
return $? fi
}
debianpackages $@
#we don't really know what system we're on. assume they have any system dependancies. return $?
#fixme: args are programs findable with which }
function otherpackages {
if [ -z "$PRETTY_NAME" ]; then #we don't really know what system we're on. assume they have any system dependancies.
return $true #fixme: args are programs findable with which
fi function otherpackages {
return $false if [ -z "$PRETTY_NAME" ]; then
} return $true
fi
return $false
#Note: only the native linux-sdl target can be compiled, as libSDL[2]-dev doesn't support multiarch properly, and we depend upon it instead of building from source (thus ensuring it has whatever distro stuff needed... though frankly that should be inside the .so instead of the headers). }
if [ $UID -eq 0 ] && [ ! -z `which apt-get` ]; then
#because multiarch requires separate packages for some things, we'll need to set that up now (in case noone did that yet) #Note: only the native linux-sdl target can be compiled, as libSDL[2]-dev doesn't support multiarch properly, and we depend upon it instead of building from source (thus ensuring it has whatever distro stuff needed... though frankly that should be inside the .so instead of the headers).
dpkg --add-architecture i386
apt-get update if [ $UID -eq 0 ] && [ ! -z `which apt-get` ]; then
fi #because multiarch requires separate packages for some things, we'll need to set that up now (in case noone did that yet)
dpkg --add-architecture i386
#generic crap. much of this is needed to set up and decompress dependancies and stuff. apt-get update
debianpackages subversion make automake libtool p7zip-full zip || otherpackages z7 make svn || exit fi
if [ "$BUILD_LINUXx86" == "y" ]; then #generic crap. much of this is needed to set up and decompress dependancies and stuff.
#for building linux targets debianpackages subversion make automake libtool p7zip-full zip || otherpackages z7 make svn || exit
debianpackages gcc-multilib g++-multilib mesa-common-dev libasound2-dev libvorbis-dev || otherpackages gcc || exit
jessiepackages libgnutls28-dev || debianpackages libgnutls28-dev || otherpackages gcc || exit if [ "$BUILD_LINUXx86" == "y" ]; then
if [[ "$PLUGINS_LINUXx86" =~ "ffmpeg" ]]; then #for building linux targets
debianpackages libswscale-dev libavcodec-dev || otherpackages || exit debianpackages gcc-multilib g++-multilib mesa-common-dev libasound2-dev libvorbis-dev || otherpackages gcc || exit
fi jessiepackages libgnutls28-dev || debianpackages libgnutls28-dev || otherpackages gcc || exit
fi if [[ "$PLUGINS_LINUXx86" =~ "ffmpeg" ]]; then
if [ "$BUILD_LINUXx64" == "y" ]; then debianpackages libswscale-dev libavcodec-dev || otherpackages || exit
#for building linux targets fi
debianpackages gcc-multilib g++-multilib mesa-common-dev libasound2-dev || otherpackages gcc || exit fi
jessiepackages libgnutls28-dev || debianpackages libgnutls28-dev || otherpackages gcc || exit if [ "$BUILD_LINUXx64" == "y" ]; then
if [[ "$PLUGINS_LINUXx64" =~ "ffmpeg" ]]; then #for building linux targets
debianpackages libswscale-dev libavcodec-dev || otherpackages || exit debianpackages gcc-multilib g++-multilib mesa-common-dev libasound2-dev || otherpackages gcc || exit
fi jessiepackages libgnutls28-dev || debianpackages libgnutls28-dev || otherpackages gcc || exit
fi if [[ "$PLUGINS_LINUXx64" =~ "ffmpeg" ]]; then
if [ "$BUILD_LINUXx32" == "y" ]; then debianpackages libswscale-dev libavcodec-dev || otherpackages || exit
#for building linux targets fi
debianpackages gcc-multilib g++-multilib mesa-common-dev libasound2-dev || otherpackages gcc || exit fi
jessiepackages libgnutls28-dev || debianpackages libgnutls28-dev || otherpackages gcc || exit if [ "$BUILD_LINUXx32" == "y" ]; then
fi #for building linux targets
if [ "$BUILD_LINUXarmhf" == "y" ]; then debianpackages gcc-multilib g++-multilib mesa-common-dev libasound2-dev || otherpackages gcc || exit
#for building linux targets jessiepackages libgnutls28-dev || debianpackages libgnutls28-dev || otherpackages gcc || exit
debianpackages gcc-multilib-arm-linux-gnueabihf g++-multilib-arm-linux-gnueabihf mesa-common-dev libasound2-dev || otherpackages gcc || exit fi
jessiepackages libgnutls28-dev || debianpackages libgnutls28-dev || otherpackages gcc || exit if [ "$BUILD_LINUXarmhf" == "y" ]; then
fi #for building linux targets
if [ "$BUILD_SDL" == "y" ]; then debianpackages gcc-multilib-arm-linux-gnueabihf g++-multilib-arm-linux-gnueabihf mesa-common-dev libasound2-dev || otherpackages gcc || exit
#for building SDL targets jessiepackages libgnutls28-dev || debianpackages libgnutls28-dev || otherpackages gcc || exit
debianpackages libSDL1.2-dev libSDL2-dev libspeex-dev libspeexdsp-dev || otherpackages || exit fi
fi if [ "$BUILD_SDL" == "y" ]; then
#for building SDL targets
if [ "$BUILD_WINDOWS" == "y" ]; then debianpackages libSDL1.2-dev libSDL2-dev libspeex-dev libspeexdsp-dev || otherpackages || exit
#for building windows targets fi
debianpackages mingw-w64 || otherpackages x86_64-w64-mingw32-gcc || exit
fi if [ "$BUILD_WINDOWS" == "y" ]; then
#for building windows targets
debianpackages mingw-w64 || otherpackages x86_64-w64-mingw32-gcc || exit
if [ "$BUILD_ANDROID" == "y" ]; then fi
( (jessiepackages openjdk-8-jdk-headless || debianpackages openjdk-8-jdk-headless ) && debianpackages ant) || otherpackages || exit
fi
if [ "$BUILD_ANDROID" == "y" ]; then
if [ "$BUILD_WEB" == "y" ]; then ( (jessiepackages openjdk-8-jdk-headless || debianpackages openjdk-8-jdk-headless ) && debianpackages ant) || otherpackages || exit
( (jessiepackages cmake || debianpackages cmake) && debianpackages git build-essential) || exit fi
fi
if [ "$BUILD_WEB" == "y" ]; then
if [ "$BUILD_MAC" == "y" ]; then ( (jessiepackages cmake || debianpackages cmake) && debianpackages git build-essential) || exit
debianpackages git cmake libxml2-dev fuse || otherpackages || exit fi
fi
debianpackages subversion make build-essential || otherpackages svn make || exit if [ "$BUILD_MAC" == "y" ]; then
debianpackages git cmake libxml2-dev fuse || otherpackages || exit
echo "System Package checks complete." fi
debianpackages subversion make build-essential || otherpackages svn make || exit
if [ "$UID" == "0" ]; then
#avoid root taking ownership of anything. echo "System Package checks complete."
echo "Refusing to update/rebuild toolchains as root."
echo "Please continue running this script as a regular user." if [ "$UID" == "0" ]; then
exit #avoid root taking ownership of anything.
fi echo "Refusing to update/rebuild toolchains as root."
echo "Please continue running this script as a regular user."
echo exit
echo "(Any new toolchains will be installed to $FTEROOT)" fi
echo "(Say no if you're certain you already set up everything)"
read -n 1 -p "Rebuild/update any toolchains now? [y/N] " REBUILD_TOOLCHAINS && echo echo
REBUILD_TOOLCHAINS=${REBUILD_TOOLCHAINS:-n} echo "(Any new toolchains will be installed to $FTEROOT)"
mkdir -p $FTEROOT echo "(Say no if you're certain you already set up everything)"
read -n 1 -p "Rebuild/update any toolchains now? [y/N] " REBUILD_TOOLCHAINS && echo
#android shit. WARNING: should come first as it spits out some EULAs that need confirming. REBUILD_TOOLCHAINS=${REBUILD_TOOLCHAINS:-n}
if [ "$BUILD_ANDROID" == "y" ] && [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then mkdir -p $FTEROOT
mkdir -p $ANDROIDROOT
cd $ANDROIDROOT #dos shit
wget -N https://dl.google.com/android/repository/tools_r25.2.3-linux.zip if [ "$BUILD_DOS" == "y" ] && [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then
unzip -qn tools_r25.2.3-linux.zip echo "You'll need to manually install djgpp for DOS builds."
cd tools/bin fi
#yes, android-8 is fucking old now. newer versions won't work on older devices.
echo "downloading android build tools" #android shit. WARNING: should come first as it spits out some EULAs that need confirming.
./sdkmanager "build-tools;$ANDROID_BUILDTOOLS" if [ "$BUILD_ANDROID" == "y" ] && [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then
echo "downloading android platform tools" mkdir -p $ANDROIDROOT
./sdkmanager "platform-tools" cd $ANDROIDROOT
echo "downloading android-9" wget -N https://dl.google.com/android/repository/tools_r25.2.3-linux.zip
./sdkmanager "platforms;android-9" unzip -qn tools_r25.2.3-linux.zip
echo "downloading android ndk" cd tools/bin
./sdkmanager "ndk-bundle" #yes, android-8 is fucking old now. newer versions won't work on older devices.
cd ~ echo "downloading android build tools"
fi ./sdkmanager "build-tools;$ANDROID_BUILDTOOLS"
echo "downloading android platform tools"
#emscripten/web shit ./sdkmanager "platform-tools"
if [ "$BUILD_WEB" == "y" ] && [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then echo "downloading android-9"
mkdir -p $EMSCRIPTENROOT ./sdkmanager "platforms;android-9"
cd $EMSCRIPTENROOT/.. echo "downloading android ndk"
wget -N https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz ./sdkmanager "ndk-bundle"
cd $EMSCRIPTENROOT cd ~
tar xzf ../emsdk-portable.tar.gz --strip-components=1 fi
./emsdk install latest
./emsdk activate latest #emscripten/web shit
cd ~ if [ "$BUILD_WEB" == "y" ] && [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then
fi mkdir -p $EMSCRIPTENROOT
cd $EMSCRIPTENROOT/..
wget -N https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz
#osxcross, for mac crap cd $EMSCRIPTENROOT
if [ "$BUILD_MAC" == "y" ] && [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then tar xzf ../emsdk-portable.tar.gz --strip-components=1
echo "Setting up OSXCross... THIS IS TOTALLY UNTESTED" ./emsdk install latest
read -p "You need to download xcode first. Where did you download the .dmg file to?" XCODE ./emsdk activate latest
git clone https://github.com/tpoechtrager/osxcross.git $OSXCROSSROOT cd ~
cd $OSXCROSSROOT fi
tools/gen_sdk_package_darling_dmg.sh $XCODE
cp *.tar.xz
SDK_VERSION=10.10 UNATTENDED=0 ./build.sh #osxcross, for mac crap
cd ~ if [ "$BUILD_MAC" == "y" ] && [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then
fi echo "Setting up OSXCross... THIS IS TOTALLY UNTESTED"
read -p "You need to download xcode first. Where did you download the .dmg file to?" XCODE
if [ "$BUILD_NACL" == "y" ] && [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then git clone https://github.com/tpoechtrager/osxcross.git $OSXCROSSROOT
echo "Setting up NaCL..." cd $OSXCROSSROOT
mkdir -p $NACLROOT tools/gen_sdk_package_darling_dmg.sh $XCODE
cd $NACLROOT/.. cp *.tar.xz
wget -N https://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip SDK_VERSION=10.10 UNATTENDED=0 ./build.sh
unzip -qn nacl_sdk.zip cd ~
cd $NACLROOT fi
./naclsdk update $NACLSDKVERSION
fi if [ "$BUILD_NACL" == "y" ] && [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then
echo "Setting up NaCL..."
mkdir -p $NACLROOT
#initial checkout of fte's svn cd $NACLROOT/..
if [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then wget -N https://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip
if [ ! -d $SVNROOT ]; then unzip -qn nacl_sdk.zip
svn checkout https://svn.code.sf.net/p/fteqw/code/trunk $SVNROOT cd $NACLROOT
else ./naclsdk update $NACLSDKVERSION
cd $SVNROOT fi
svn up
fi
#initial checkout of fte's svn
#FIXME: there may be race conditions when compiling. if [ $UID -ne 0 ] && [ $REBUILD_TOOLCHAINS == "y" ]; then
#so make sure we've pre-built certain targets without using -j if [ ! -d $SVNROOT ]; then
#linux distros vary too much with various dependancies and versions and such, so we might as well pre-build our own copies of certain libraries. this really only needs to be done once, but its safe to retry anyway. svn checkout https://svn.code.sf.net/p/fteqw/code/trunk $SVNROOT
cd $SVNROOT/engine else
if [ "$BUILD_LINUXx86" == "y" ]; then cd $SVNROOT
echo "Making libraries (x86)..." svn up
make FTE_TARGET=linux32 makelibs CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null fi
fi
if [ "$BUILD_LINUXx64" == "y" ]; then #FIXME: there may be race conditions when compiling.
echo "Making libraries (linux x86_64)..." #so make sure we've pre-built certain targets without using -j
make FTE_TARGET=linux64 makelibs CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null #linux distros vary too much with various dependancies and versions and such, so we might as well pre-build our own copies of certain libraries. this really only needs to be done once, but its safe to retry anyway.
fi cd $SVNROOT/engine
if [ "$BUILD_LINUXx32" == "y" ]; then if [ "$BUILD_LINUXx86" == "y" ]; then
echo "Making libraries (linux x32)..." echo "Making libraries (x86)..."
make FTE_TARGET=linuxx32 makelibs CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null make FTE_TARGET=linux32 makelibs CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null
fi fi
if [ "$BUILD_LINUXarmhf" == "y" ]; then if [ "$BUILD_LINUXx64" == "y" ]; then
echo "Making libraries (linux armhf)..." echo "Making libraries (linux x86_64)..."
make FTE_TARGET=linuxarmhf makelibs CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null make FTE_TARGET=linux64 makelibs CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null
fi fi
if [ "$BUILD_WINDOWS" == "y" ] && [[ "$PLUGINS_WINDOWS" =~ "ode" ]]; then if [ "$BUILD_LINUXx32" == "y" ]; then
echo "Prebuilding ODE library (win32)..." echo "Making libraries (linux x32)..."
make FTE_TARGET=win32 plugins-rel NATIVE_PLUGINS=ode 2>&1 >>/dev/null make FTE_TARGET=linuxx32 makelibs CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null
echo "Prebuilding ODE library (win64)..." fi
make FTE_TARGET=win64 plugins-rel NATIVE_PLUGINS=ode 2>&1 >>/dev/null if [ "$BUILD_LINUXarmhf" == "y" ]; then
fi echo "Making libraries (linux armhf)..."
if [ "$BUILD_LINUXx86" == "y" ] && [[ "$PLUGINS_LINUXx86" =~ "ode" ]]; then make FTE_TARGET=linuxarmhf makelibs CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null
echo "Prebuilding ODE library (linux x86)..." fi
make FTE_TARGET=linux32 plugins-rel NATIVE_PLUGINS=ode CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null if [ "$BUILD_WINDOWS" == "y" ] && [[ "$PLUGINS_WINDOWS" =~ "ode" ]]; then
fi echo "Prebuilding ODE library (win32)..."
if [ "$BUILD_LINUXx64" == "y" ] && [[ "$PLUGINS_LINUXx64" =~ "ode" ]]; then make FTE_TARGET=win32 plugins-rel NATIVE_PLUGINS=ode 2>&1 >>/dev/null
echo "Prebuilding ODE library (linux x86_64)..." echo "Prebuilding ODE library (win64)..."
make FTE_TARGET=linux64 plugins-rel NATIVE_PLUGINS=ode CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null make FTE_TARGET=win64 plugins-rel NATIVE_PLUGINS=ode 2>&1 >>/dev/null
fi fi
if [ "$BUILD_WINDOWS" == "y" ]; then if [ "$BUILD_LINUXx86" == "y" ] && [[ "$PLUGINS_LINUXx86" =~ "ode" ]]; then
echo "Obtaining ffmpeg library (win32)..." echo "Prebuilding ODE library (linux x86)..."
make FTE_TARGET=win32 plugins-rel NATIVE_PLUGINS=ffmpeg 2>&1 >>/dev/null make FTE_TARGET=linux32 plugins-rel NATIVE_PLUGINS=ode CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null
echo "Obtaining ffmpeg library (win64)..." fi
make FTE_TARGET=win64 plugins-rel NATIVE_PLUGINS=ffmpeg 2>&1 >>/dev/null if [ "$BUILD_LINUXx64" == "y" ] && [[ "$PLUGINS_LINUXx64" =~ "ode" ]]; then
fi echo "Prebuilding ODE library (linux x86_64)..."
cd ~ make FTE_TARGET=linux64 plugins-rel NATIVE_PLUGINS=ode CPUOPTIMISATIONS=-fno-finite-math-only 2>&1 >>/dev/null
fi fi
if [ "$BUILD_WINDOWS" == "y" ]; then
echo "Obtaining ffmpeg library (win32)..."
make FTE_TARGET=win32 plugins-rel NATIVE_PLUGINS=ffmpeg 2>&1 >>/dev/null
echo "Setup script complete." echo "Obtaining ffmpeg library (win64)..."
echo "When you run build_wip.sh output will be written to $BUILDFOLDER/*" make FTE_TARGET=win64 plugins-rel NATIVE_PLUGINS=ffmpeg 2>&1 >>/dev/null
fi
cd ~
fi
echo "Setup script complete."
echo "When you run build_wip.sh output will be written to $BUILDFOLDER/*"

View File

@ -1,324 +1,329 @@
#!/bin/bash #!/bin/bash
START=$(date +%s) START=$(date +%s)
SVNROOT=$(cd "$(dirname "$(readlink "$BASH_SOURCE")")" && pwd) SVNROOT=$(cd "$(dirname "$(readlink "$BASH_SOURCE")")" && pwd)
FTECONFIG=$SVNROOT/build.cfg FTECONFIG=$SVNROOT/build.cfg
HOME=`echo ~` HOME=`echo ~`
BASE=$SVNROOT/.. BASE=$SVNROOT/..
#set this if you want non-default branding, for customised builds. #set this if you want non-default branding, for customised builds.
#export BRANDING=wastes #export BRANDING=wastes
#defaults, if we're not set up properly. #defaults, if we're not set up properly.
#should be overriden in build.cfg #should be overriden in build.cfg
BUILDFOLDER=$HOME/htdocs BUILDFOLDER=$HOME/htdocs
BUILDLOGFOLDER=$BUILDFOLDER/build_logs BUILDLOGFOLDER=$BUILDFOLDER/build_logs
SVNROOT=$BASE/fteqw-code SVNROOT=$BASE/fteqw-code
BUILD_LINUXx86=y BUILD_LINUXx86=y
BUILD_LINUXx64=y BUILD_LINUXx64=y
BUILD_WINDOWS=y BUILD_WINDOWS=y
BUILD_ANDROID=y BUILD_ANDROID=y
BUILD_WEB=y BUILD_WEB=y
PLUGINS_LINUXx86="qi ezhud xmpp irc" PLUGINS_LINUXx86="qi ezhud xmpp irc"
PLUGINS_LINUXx64="qi ezhud xmpp irc" PLUGINS_LINUXx64="qi ezhud xmpp irc"
PLUGINS_LINUXx32="qi ezhud xmpp irc" PLUGINS_LINUXx32="qi ezhud xmpp irc"
PLUGINS_WINDOWS="avplug ode qi ezhud xmpp irc" PLUGINS_WINDOWS="avplug ode qi ezhud xmpp irc"
THREADS="-j 4" THREADS="-j 4"
########### NaCL stuff ########### NaCL stuff
NACL_SDK_ROOT=/opt/nacl_sdk/pepper_31/ NACL_SDK_ROOT=/opt/nacl_sdk/pepper_31/
if [ -e $FTECONFIG ]; then if [ -e $FTECONFIG ]; then
. $FTECONFIG . $FTECONFIG
else else
echo "WARNING: $FTECONFIG does not exist yet." echo "WARNING: $FTECONFIG does not exist yet."
fi fi
export NACL_SDK_ROOT export NACL_SDK_ROOT
########### Emscripten / Web Stuff ########### Emscripten / Web Stuff
export EMSDK=$EMSCRIPTENROOT export EMSDK=$EMSCRIPTENROOT
#export WEB_PREJS="--pre-js $HOME/prejs.js" #export WEB_PREJS="--pre-js $HOME/prejs.js"
########### Android Stuff. so messy... ########### Android Stuff. so messy...
#This is some android password that you should keep private. You should keep the keystore file private too, of course. Frankly, that part is more important than this small random number. #This is some android password that you should keep private. You should keep the keystore file private too, of course. Frankly, that part is more important than this small random number.
KEYPASSFILE=$BASE/.fte_keypass KEYPASSFILE=$BASE/.fte_keypass
if [ ! -e $KEYPASSFILE ]; then if [ ! -e $KEYPASSFILE ]; then
dd if=/dev/urandom count=9 bs=1 2>/dev/null | base64 > $KEYPASSFILE dd if=/dev/urandom count=9 bs=1 2>/dev/null | base64 > $KEYPASSFILE
chmod 400 $KEYPASSFILE chmod 400 $KEYPASSFILE
fi fi
KEYPASS=`cat $KEYPASSFILE` KEYPASS=`cat $KEYPASSFILE`
export JAVA_HOME=/usr export JAVA_HOME=/usr
if [ ! -z "$ANDROIDROOT" ]; then if [ ! -z "$ANDROIDROOT" ]; then
export ANDROID_HOME=$ANDROIDROOT export ANDROID_HOME=$ANDROIDROOT
fi fi
if [ ! -z "$ANDROIDNDKROOT" ]; then if [ ! -z "$ANDROIDNDKROOT" ]; then
export ANDROID_NDK_ROOT=$ANDROIDNDKROOT export ANDROID_NDK_ROOT=$ANDROIDNDKROOT
else else
export ANDROID_NDK_ROOT=$ANDROID_HOME/ndk-bundle export ANDROID_NDK_ROOT=$ANDROID_HOME/ndk-bundle
fi fi
export KEYTOOLARGS="-keypass $KEYPASS -storepass $KEYPASS -dname \"CN=fteqw.com, OU=ID, O=FTE, L=Unknown, S=Unknown, C=GB\"" export KEYTOOLARGS="-keypass $KEYPASS -storepass $KEYPASS -dname \"CN=fteqw.com, OU=ID, O=FTE, L=Unknown, S=Unknown, C=GB\""
export JARSIGNARGS="-storepass $KEYPASS" export JARSIGNARGS="-storepass $KEYPASS"
########### Various Output etc Paths ########### Various Output etc Paths
QCCBUILDFOLDER=$BUILDFOLDER/fteqcc QCCBUILDFOLDER=$BUILDFOLDER/fteqcc
SVNFOLDER=$SVNROOT/engine/release SVNFOLDER=$SVNROOT/engine/release
ARCHIVEFOLDER=$BUILDFOLDER/archive ARCHIVEFOLDER=$BUILDFOLDER/archive
SVNDBGFOLDER=$SVNROOT/engine/debug SVNDBGFOLDER=$SVNROOT/engine/debug
WARNINGLEVEL="-w" WARNINGLEVEL="-w"
FILELOCK=$BASE/.fte_buildlock FILELOCK=$BASE/.fte_buildlock
#./ccache-alias.sh #./ccache-alias.sh
exec 9>$FILELOCK exec 9>$FILELOCK
if ! flock -n 9 ; then if ! flock -n 9 ; then
echo "Build script is already running!"; echo "Build script is already running!";
exit 1 exit 1
fi fi
mkdir -p $BUILDLOGFOLDER mkdir -p $BUILDLOGFOLDER
if [ ! -d $SVNROOT ]; then if [ ! -d $SVNROOT ]; then
#just in case... #just in case...
svn checkout https://svn.code.sf.net/p/fteqw/code/trunk $SVNROOT svn checkout https://svn.code.sf.net/p/fteqw/code/trunk $SVNROOT
fi fi
cd $SVNROOT/ cd $SVNROOT/
echo "SVN Update" echo "SVN Update"
svn update svn update
cd engine cd engine
date > $BUILDLOGFOLDER/buildlog.txt date > $BUILDLOGFOLDER/buildlog.txt
echo "Starting build" >> $BUILDLOGFOLDER/buildlog.txt echo "Starting build" >> $BUILDLOGFOLDER/buildlog.txt
function build { function build {
BUILDSTART=$(date +%s) BUILDSTART=$(date +%s)
NAME=$1 NAME=$1
DEST=$2 DEST=$2
shift; shift shift; shift
make clean >> /dev/null make clean >> /dev/null
echo -n "Making $NAME... " echo -n "Making $NAME... "
date > $BUILDLOGFOLDER/$DEST.txt date > $BUILDLOGFOLDER/$DEST.txt
echo make $THREADS $* >> $BUILDLOGFOLDER/$DEST.txt 2>&1 echo make $THREADS $* >> $BUILDLOGFOLDER/$DEST.txt 2>&1
make $THREADS $* >> $BUILDLOGFOLDER/$DEST.txt 2>&1 make $THREADS $* >> $BUILDLOGFOLDER/$DEST.txt 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
BUILDEND=$(date +%s) BUILDEND=$(date +%s)
BUILDTIME=$(( $BUILDEND - $BUILDSTART )) BUILDTIME=$(( $BUILDEND - $BUILDSTART ))
echo "$BUILDTIME seconds" echo "$BUILDTIME seconds"
echo "$NAME done, took $BUILDTIME seconds" >> $BUILDLOGFOLDER/buildlog.txt echo "$NAME done, took $BUILDTIME seconds" >> $BUILDLOGFOLDER/buildlog.txt
rm -rf $BUILDFOLDER/$DEST >> /dev/null 2>&1 rm -rf $BUILDFOLDER/$DEST >> /dev/null 2>&1
mkdir $BUILDFOLDER/$DEST 2>> /dev/null mkdir $BUILDFOLDER/$DEST 2>> /dev/null
mkdir $BUILDFOLDER/$DEST/debug 2>> /dev/null mkdir $BUILDFOLDER/$DEST/debug 2>> /dev/null
cp $SVNFOLDER/* $BUILDFOLDER/$DEST >> /dev/null 2>> /dev/null cp $SVNFOLDER/* $BUILDFOLDER/$DEST >> /dev/null 2>> /dev/null
cp $SVNDBGFOLDER/* $BUILDFOLDER/$DEST/debug >> /dev/null 2>> /dev/null cp $SVNDBGFOLDER/* $BUILDFOLDER/$DEST/debug >> /dev/null 2>> /dev/null
rm -rf $BUILDFOLDER/$DEST/*.a >> /dev/null 2>&1 rm -rf $BUILDFOLDER/$DEST/*.a >> /dev/null 2>&1
rm -rf $BUILDFOLDER/$DEST/debug/*.a >> /dev/null 2>&1 rm -rf $BUILDFOLDER/$DEST/debug/*.a >> /dev/null 2>&1
rmdir $BUILDFOLDER/$DEST/debug 2>> /dev/null rmdir $BUILDFOLDER/$DEST/debug 2>> /dev/null
else else
echo "$NAME failed" >> $BUILDLOGFOLDER/buildlog.txt echo "$NAME failed" >> $BUILDLOGFOLDER/buildlog.txt
echo "failed" echo "failed"
fi fi
} }
function build_fteqcc { function build_fteqcc {
echo "--- no code ---" echo "--- no code ---"
} }
echo "--- Engine builds ---" echo "--- Engine builds ---"
#the -fno-finite-math-only is to avoid a glibc dependancy #the -fno-finite-math-only is to avoid a glibc dependancy
if [ "$BUILD_LINUXx86" != "n" ]; then if [ "$BUILD_LINUXx86" != "n" ]; then
NATIVE_PLUGINS="$PLUGINS_LINUXx86" build "Linux 32-bit" linux_x86 FTE_TARGET=linux32 CPUOPTIMIZATIONS=-fno-finite-math-only qcc-rel rel dbg vk-rel plugins-rel plugins-dbg NATIVE_PLUGINS="$PLUGINS_LINUXx86" build "Linux 32-bit" linux_x86 FTE_TARGET=linux32 CPUOPTIMIZATIONS=-fno-finite-math-only qcc-rel rel dbg vk-rel plugins-rel plugins-dbg
fi fi
if [ "$BUILD_LINUXx64" != "n" ]; then if [ "$BUILD_LINUXx64" != "n" ]; then
NATIVE_PLUGINS="$PLUGINS_LINUXx64" build "Linux 64-bit" linux_amd64 FTE_TARGET=linux64 LDFLAGS="-Llibs/64" CPUOPTIMIZATIONS=-fno-finite-math-only qcc-rel rel dbg vk-rel plugins-rel plugins-dbg NATIVE_PLUGINS="$PLUGINS_LINUXx64" build "Linux 64-bit" linux_amd64 FTE_TARGET=linux64 LDFLAGS="-Llibs/64" CPUOPTIMIZATIONS=-fno-finite-math-only qcc-rel rel dbg vk-rel plugins-rel plugins-dbg
fi fi
if [ "$BUILD_LINUXx32" != "n" ]; then if [ "$BUILD_LINUXx32" != "n" ]; then
# CFLAGS="-DNO_JPEG" # CFLAGS="-DNO_JPEG"
NATIVE_PLUGINS="$PLUGINS_LINUXx32" build "Linux x32" linux_x32 FTE_TARGET=linuxx32 CPUOPTIMIZATIONS=-fno-finite-math-only qcc-rel rel dbg plugins-rel plugins-dbg NATIVE_PLUGINS="$PLUGINS_LINUXx32" build "Linux x32" linux_x32 FTE_TARGET=linuxx32 CPUOPTIMIZATIONS=-fno-finite-math-only qcc-rel rel dbg plugins-rel plugins-dbg
fi fi
if [ "$BUILD_LINUXarmhf" != "n" ]; then if [ "$BUILD_LINUXarmhf" != "n" ]; then
#debian/ubuntu's armhf targets armv7. we instead target armv6, because that means we work on rpi too (but still with hard-float). It should be compatible although we likely need more ops. #debian/ubuntu's armhf targets armv7. we instead target armv6, because that means we work on rpi too (but still with hard-float). It should be compatible although we likely need more ops.
NATIVE_PLUGINS="$PLUGINS_LINUXarmhf" build "Linux ARMhf" linux_armhf FTE_TARGET=linuxarmhf CPUOPTIMIZATIONS=-fno-finite-math-only rel dbg qcc-rel plugins-rel plugins-dbg NATIVE_PLUGINS="$PLUGINS_LINUXarmhf" build "Linux ARMhf" linux_armhf FTE_TARGET=linuxarmhf CPUOPTIMIZATIONS=-fno-finite-math-only rel dbg qcc-rel plugins-rel plugins-dbg
fi fi
if [ "$BUILD_CYGWIN" != "n" ]; then if [ "$BUILD_CYGWIN" != "n" ]; then
NATIVE_PLUGINS="qi ezhud" build "Cygwin" cygwin qcc-rel rel dbg plugins-rel plugins-dbg NATIVE_PLUGINS="qi ezhud" build "Cygwin" cygwin qcc-rel rel dbg plugins-rel plugins-dbg
fi fi
if [ "$BUILD_WINDOWS" != "n" ]; then if [ "$BUILD_WINDOWS" != "n" ]; then
NATIVE_PLUGINS="$PLUGINS_WINDOWS" build "Windows 32-bit" win32 FTE_TARGET=win32 CFLAGS="$WARNINGLEVEL" sv-rel gl-rel vk-rel mingl-rel m-rel d3d-rel qcc-rel qccgui-scintilla qccgui-dbg gl-dbg sv-dbg plugins-dbg plugins-rel NATIVE_PLUGINS="$PLUGINS_WINDOWS" NATIVE_PLUGINS="$PLUGINS_WINDOWS" build "Windows 32-bit" win32 FTE_TARGET=win32 CFLAGS="$WARNINGLEVEL" sv-rel gl-rel vk-rel mingl-rel m-rel d3d-rel qcc-rel qccgui-scintilla qccgui-dbg gl-dbg sv-dbg plugins-dbg plugins-rel NATIVE_PLUGINS="$PLUGINS_WINDOWS"
NATIVE_PLUGINS="$PLUGINS_WINDOWS" build "Windows 64-bit" win64 FTE_TARGET=win64 CFLAGS="$WARNINGLEVEL" sv-rel gl-rel vk-rel mingl-rel m-rel d3d-rel qcc-rel qccgui-scintilla qccgui-dbg gl-dbg sv-dbg plugins-dbg plugins-rel NATIVE_PLUGINS="$PLUGINS_WINDOWS" build "Windows 64-bit" win64 FTE_TARGET=win64 CFLAGS="$WARNINGLEVEL" sv-rel gl-rel vk-rel mingl-rel m-rel d3d-rel qcc-rel qccgui-scintilla qccgui-dbg gl-dbg sv-dbg plugins-dbg plugins-rel
fi fi
if [ "$BUILD_MSVC" != "n" ]; then if [ "$BUILD_MSVC" != "n" ]; then
NATIVE_PLUGINS="$PLUGINS_WINDOWS" build "Windows MSVC 32-bit" msvc FTE_TARGET=vc BITS=32 CFLAGS="$WARNINGLEVEL" sv-rel gl-rel vk-rel mingl-rel m-rel d3d-rel qcc-rel qccgui-scintilla qccgui-dbg gl-dbg sv-dbg plugins-dbg plugins-rel NATIVE_PLUGINS="$PLUGINS_WINDOWS" build "Windows MSVC 32-bit" msvc FTE_TARGET=vc BITS=32 CFLAGS="$WARNINGLEVEL" sv-rel gl-rel vk-rel mingl-rel m-rel d3d-rel qcc-rel qccgui-scintilla qccgui-dbg gl-dbg sv-dbg plugins-dbg plugins-rel
NATIVE_PLUGINS="$PLUGINS_WINDOWS" build "Windows MSVC 64-bit" msvc FTE_TARGET=vc BITS=64 CFLAGS="$WARNINGLEVEL" sv-rel gl-rel vk-rel mingl-rel m-rel d3d-rel qcc-rel qccgui-scintilla qccgui-dbg gl-dbg sv-dbg plugins-dbg plugins-rel NATIVE_PLUGINS="$PLUGINS_WINDOWS" build "Windows MSVC 64-bit" msvc FTE_TARGET=vc BITS=64 CFLAGS="$WARNINGLEVEL" sv-rel gl-rel vk-rel mingl-rel m-rel d3d-rel qcc-rel qccgui-scintilla qccgui-dbg gl-dbg sv-dbg plugins-dbg plugins-rel
fi fi
export NATIVE_PLUGINS="qi ezhud xmpp irc" export NATIVE_PLUGINS="qi ezhud xmpp irc"
if [ "$BUILD_ANDROID" != "n" ]; then if [ "$BUILD_ANDROID" != "n" ]; then
build "Android" android droid-rel build "Android" android droid-rel
fi fi
if [ "$BUILD_WINDOWS" != "n" ]; then if [ "$BUILD_WINDOWS" != "n" ]; then
build "NPFTE" npfte npfte-rel build "NPFTE" npfte npfte-rel
fi fi
if [ "$BUILD_WEB" != "n" ]; then if [ "$BUILD_DOS" == "y" ]; then
source $EMSDK/emsdk_env.sh >> /dev/null #no networking makes dedicated servers useless. and only a crappy sw renderer is implemented right now.
build "Emscripten" web FTE_TARGET=web gl-rel CC=emcc #the qcc might be useful to someone though!
fi build "DOS" dos m-rel qcc-rel
if [ "$BUILD_LINUX" != "n" ] && [ "$BUILD_SDL" != "n" ] && [ "$(uname -m)" != "x86_64" ]; then fi
build "Linux 32-bit (SDL)" linux_x86_sdl FTE_TARGET=SDL BITS=32 LTO=1 if [ "$BUILD_WEB" != "n" ]; then
fi source $EMSDK/emsdk_env.sh >> /dev/null
if [ "$BUILD_LINUX" != "n" ] && [ "$BUILD_SDL" != "n" ] && [ "$(uname -m)" == "x86_64" ]; then build "Emscripten" web FTE_TARGET=web gl-rel CC=emcc
build "Linux 64-bit (SDL)" linux_amd64_sdl FTE_TARGET=SDL BITS=64 LDFLAGS="-Llibs/64" LTO=1 fi
fi if [ "$BUILD_LINUX" != "n" ] && [ "$BUILD_SDL" != "n" ] && [ "$(uname -m)" != "x86_64" ]; then
if [ "$BUILD_WINDOWS" != "n" ] && [ "$BUILD_SDL" != "n" ]; then build "Linux 32-bit (SDL)" linux_x86_sdl FTE_TARGET=SDL BITS=32 LTO=1
build "Windows 32-bit (SDL)" win32_sdl FTE_TARGET=win32_SDL gl-rel mingl-rel fi
build "Windows 64-bit (SDL)" win64_sdl FTE_TARGET=win64_SDL LDFLAGS="-L./libs/mingw64-libs/" gl-rel mingl-rel if [ "$BUILD_LINUX" != "n" ] && [ "$BUILD_SDL" != "n" ] && [ "$(uname -m)" == "x86_64" ]; then
CFLAGS="$WARNINGLEVEL -DNOLEGACY -DOMIT_QCC" build "Windows 32-bit nocompat" nocompat FTE_TARGET=win32 LTO=1 NOCOMPAT=1 BOTLIB_CFLAGS="" BOTLIB_OBJS="" gl-rel m-rel -k build "Linux 64-bit (SDL)" linux_amd64_sdl FTE_TARGET=SDL BITS=64 LDFLAGS="-Llibs/64" LTO=1
fi fi
if [ "$BUILD_NACL" != "n" ]; then if [ "$BUILD_WINDOWS" != "n" ] && [ "$BUILD_SDL" != "n" ]; then
#non-pnacl is supported ONLY in chrome's store crap, but pnacl works anywhere. build "Windows 32-bit (SDL)" win32_sdl FTE_TARGET=win32_SDL gl-rel mingl-rel
# build "Native Client 64-bit" nacl_amd64 FTE_TARGET=nacl NARCH=x86_64 gl-rel build "Windows 64-bit (SDL)" win64_sdl FTE_TARGET=win64_SDL LDFLAGS="-L./libs/mingw64-libs/" gl-rel mingl-rel
# build "Native Client 32-bit" nacl_x86 FTE_TARGET=nacl NARCH=x86_32 gl-rel CFLAGS="$WARNINGLEVEL -DNOLEGACY -DOMIT_QCC" build "Windows 32-bit nocompat" nocompat FTE_TARGET=win32 LTO=1 NOCOMPAT=1 BOTLIB_CFLAGS="" BOTLIB_OBJS="" gl-rel m-rel -k
#internal compiler error build "Native Client ARM" nacl_arm FTE_TARGET=nacl NARCH=arm gl-rel fi
build "Native Client Portable" nacl_portable FTE_TARGET=nacl NARCH=pnacl gl-rel if [ "$BUILD_NACL" != "n" ]; then
fi #non-pnacl is supported ONLY in chrome's store crap, but pnacl works anywhere.
####build "MorphOS" morphos CFLAGS="-I$BASE/morphos/os-include/ -I$BASE/morphos/lib/ -L$BASE/morphos/lib/ -I$BASE/zlib/zlib-1.2.5 -L$BASE/zlib/zlib-1.2.5 -I./libs $WARNINGLEVEL" gl-rel mingl-rel sv-rel qcc-rel # build "Native Client 64-bit" nacl_amd64 FTE_TARGET=nacl NARCH=x86_64 gl-rel
if [ "$BUILD_MAC" != "n" ]; then # build "Native Client 32-bit" nacl_x86 FTE_TARGET=nacl NARCH=x86_32 gl-rel
#build "MacOSX" macosx_tiger CFLAGS="-I$BASE/mac/x86/include/ -L$BASE/mac/x86/lib -I./libs" FTE_TARGET=macosx_x86 sv-rel gl-rel mingl-rel qcc-rel #internal compiler error build "Native Client ARM" nacl_arm FTE_TARGET=nacl NARCH=arm gl-rel
#FIXME: figure out how to do universal binaries or whatever they're called build "Native Client Portable" nacl_portable FTE_TARGET=nacl NARCH=pnacl gl-rel
build "MacOSX 32-bit" osx32 CC=o32-clang CXX=o32-clang++ FTE_TARGET=osx_x86 BITS=32 sv-rel gl-rel mingl-rel qcc-rel fi
build "MacOSX 64-bit" osx64 CC=o64-clang CXX=o64-clang++ FTE_TARGET=osx_x86_64 BITS=64 sv-rel gl-rel mingl-rel qcc-rel ####build "MorphOS" morphos CFLAGS="-I$BASE/morphos/os-include/ -I$BASE/morphos/lib/ -L$BASE/morphos/lib/ -I$BASE/zlib/zlib-1.2.5 -L$BASE/zlib/zlib-1.2.5 -I./libs $WARNINGLEVEL" gl-rel mingl-rel sv-rel qcc-rel
fi if [ "$BUILD_MAC" != "n" ]; then
#build "MacOSX" macosx_tiger CFLAGS="-I$BASE/mac/x86/include/ -L$BASE/mac/x86/lib -I./libs" FTE_TARGET=macosx_x86 sv-rel gl-rel mingl-rel qcc-rel
#third party stuff / misc crap #FIXME: figure out how to do universal binaries or whatever they're called
if [ "$BUILD_WEB" != "n" ]; then build "MacOSX 32-bit" osx32 CC=o32-clang CXX=o32-clang++ FTE_TARGET=osx_x86 BITS=32 sv-rel gl-rel mingl-rel qcc-rel
cp $BASE/3rdparty/web/* $BUILDFOLDER/web/ build "MacOSX 64-bit" osx64 CC=o64-clang CXX=o64-clang++ FTE_TARGET=osx_x86_64 BITS=64 sv-rel gl-rel mingl-rel qcc-rel
fi fi
if [ "$BUILD_WINDOWS" != "n" ]; then
cp $BASE/3rdparty/win32/3rdparty.zip $BUILDFOLDER/win32/3rdparty.zip #third party stuff / misc crap
cp $BASE/3rdparty/win64/3rdparty.zip $BUILDFOLDER/win64/3rdparty.zip if [ "$BUILD_WEB" != "n" ]; then
if [ "$BUILD_SDL" != "n" ]; then cp $BASE/3rdparty/web/* $BUILDFOLDER/web/
cp $SVNROOT/engine/libs/SDL2-2.0.1/i686-w64-mingw32/bin/SDL2.dll $BUILDFOLDER/win32_sdl fi
cp $SVNROOT/engine/libs/SDL2-2.0.1/x86_64-w64-mingw32/bin/SDL2.dll $BUILDFOLDER/win64_sdl if [ "$BUILD_WINDOWS" != "n" ]; then
fi cp $BASE/3rdparty/win32/3rdparty.zip $BUILDFOLDER/win32/3rdparty.zip
cp $HOME/nocompat_readme.html $BUILDFOLDER/nocompat/README.html cp $BASE/3rdparty/win64/3rdparty.zip $BUILDFOLDER/win64/3rdparty.zip
fi if [ "$BUILD_SDL" != "n" ]; then
cp $SVNROOT/engine/libs/SDL2-2.0.1/i686-w64-mingw32/bin/SDL2.dll $BUILDFOLDER/win32_sdl
echo "--- QC builds ---" cp $SVNROOT/engine/libs/SDL2-2.0.1/x86_64-w64-mingw32/bin/SDL2.dll $BUILDFOLDER/win64_sdl
rm -rf $QCCBUILDFOLDER 2>&1 fi
mkdir -p $QCCBUILDFOLDER cp $HOME/nocompat_readme.html $BUILDFOLDER/nocompat/README.html
if [ -e "$BUILDFOLDER/linux_x86/fteqw-gl32" ] fi
then
echo "Making fteextensions.qc" echo "--- QC builds ---"
mkdir -p ~/.fte/fte rm -rf $QCCBUILDFOLDER 2>&1
echo "pr_dumpplatform -o fteextensions" > ~/.fte/fte/minusargsaresilly.cfg mkdir -p $QCCBUILDFOLDER
echo "pr_dumpplatform -o csqcsysdefs -Tcs" >> ~/.fte/fte/minusargsaresilly.cfg if [ -e "$BUILDFOLDER/linux_x86/fteqw-gl32" ]
echo "pr_dumpplatform -o menusysdefs -Tmenu" >> ~/.fte/fte/minusargsaresilly.cfg then
$BUILDFOLDER/linux_x86/fteqw-gl32 -basedir ~/.fte -nohome -quake +set snd_device none -nosound +set vid_renderer sv +exec minusargsaresilly.cfg +quit >> /dev/null echo "Making fteextensions.qc"
mv ~/.fte/fte/src/fteextensions.qc $QCCBUILDFOLDER mkdir -p ~/.fte/fte
mv ~/.fte/fte/src/csqcsysdefs.qc $QCCBUILDFOLDER echo "pr_dumpplatform -o fteextensions" > ~/.fte/fte/minusargsaresilly.cfg
mv ~/.fte/fte/src/menusysdefs.qc $QCCBUILDFOLDER echo "pr_dumpplatform -o csqcsysdefs -Tcs" >> ~/.fte/fte/minusargsaresilly.cfg
else echo "pr_dumpplatform -o menusysdefs -Tmenu" >> ~/.fte/fte/minusargsaresilly.cfg
echo "Skipping FTE Extensions, no Linux gl32 build located" $BUILDFOLDER/linux_x86/fteqw-gl32 -basedir ~/.fte -nohome -quake +set snd_device none -nosound +set vid_renderer sv +exec minusargsaresilly.cfg +quit >> /dev/null
fi mv ~/.fte/fte/src/fteextensions.qc $QCCBUILDFOLDER
mv ~/.fte/fte/src/csqcsysdefs.qc $QCCBUILDFOLDER
mv ~/.fte/fte/src/menusysdefs.qc $QCCBUILDFOLDER
if [ -e $BUILDFOLDER/linux_x86/fteqcc32 ]; then else
echo "Making csaddon + qcmenu" echo "Skipping FTE Extensions, no Linux gl32 build located"
mkdir -p $BUILDFOLDER/csaddon/ fi
cd $SVNROOT/quakec
cd csaddon/src
$BUILDFOLDER/linux_x86/fteqcc32 -srcfile csaddon.src > $BUILDLOGFOLDER/csaddon.txt if [ -e $BUILDFOLDER/linux_x86/fteqcc32 ]; then
mv ../csaddon.dat $BUILDFOLDER/csaddon/ echo "Making csaddon + qcmenu"
mkdir -p $BUILDFOLDER/csaddon/
cd ../../menusys cd $SVNROOT/quakec
$BUILDFOLDER/linux_x86/fteqcc32 -srcfile menu.src > $BUILDLOGFOLDER/menu.txt cd csaddon/src
rm fteqcc.log $BUILDFOLDER/linux_x86/fteqcc32 -srcfile csaddon.src > $BUILDLOGFOLDER/csaddon.txt
zip -q -9 -o -r $BUILDFOLDER/csaddon/menusys_src.zip . mv ../csaddon.dat $BUILDFOLDER/csaddon/
mv ../menu.dat $BUILDFOLDER/csaddon/
else cd ../../menusys
echo "Skiping csaddon + qcmenu, no compiler build" $BUILDFOLDER/linux_x86/fteqcc32 -srcfile menu.src > $BUILDLOGFOLDER/menu.txt
fi rm fteqcc.log
zip -q -9 -o -r $BUILDFOLDER/csaddon/menusys_src.zip .
cd $SVNROOT/engine/ mv ../menu.dat $BUILDFOLDER/csaddon/
svn info > $BUILDFOLDER/version.txt else
echo "Skiping csaddon + qcmenu, no compiler build"
if [ "$BUILD_LINUXx86" != "n" ]; then fi
cp $BUILDFOLDER/linux_x86/fteqcc32 $QCCBUILDFOLDER/linux32-fteqcc
fi cd $SVNROOT/engine/
if [ "$BUILD_LINUXx64" != "n" ]; then svn info > $BUILDFOLDER/version.txt
cp $BUILDFOLDER/linux_amd64/fteqcc64 $QCCBUILDFOLDER/linux64-fteqcc
fi if [ "$BUILD_LINUXx86" != "n" ]; then
if [ "$BUILD_LINUXx32" != "n" ]; then cp $BUILDFOLDER/linux_x86/fteqcc32 $QCCBUILDFOLDER/linux32-fteqcc
cp $BUILDFOLDER/linux_x32/fteqccx32 $QCCBUILDFOLDER/linuxx32-fteqcc fi
fi if [ "$BUILD_LINUXx64" != "n" ]; then
if [ "$BUILD_LINUXarmhf" != "n" ]; then cp $BUILDFOLDER/linux_amd64/fteqcc64 $QCCBUILDFOLDER/linux64-fteqcc
cp $BUILDFOLDER/linux_armhf/fteqccarmhf $QCCBUILDFOLDER/linuxarmhf-fteqcc fi
fi if [ "$BUILD_LINUXx32" != "n" ]; then
if [ "$BUILD_WINDOWS" != "n" ]; then cp $BUILDFOLDER/linux_x32/fteqccx32 $QCCBUILDFOLDER/linuxx32-fteqcc
cp $BUILDFOLDER/win32/fteqcc.exe $QCCBUILDFOLDER/win32-fteqcc.exe fi
cp $BUILDFOLDER/win32/fteqccgui.exe $QCCBUILDFOLDER/win32-fteqccgui.exe if [ "$BUILD_LINUXarmhf" != "n" ]; then
cp $BUILDFOLDER/win64/fteqcc64.exe $QCCBUILDFOLDER/win64-fteqcc.exe cp $BUILDFOLDER/linux_armhf/fteqccarmhf $QCCBUILDFOLDER/linuxarmhf-fteqcc
cp $BUILDFOLDER/win64/fteqccgui64.exe $QCCBUILDFOLDER/win64-fteqccgui.exe fi
fi if [ "$BUILD_WINDOWS" != "n" ]; then
#cp $BUILDFOLDER/morphos/fteqcc $QCCBUILDFOLDER/morphos-fteqcc cp $BUILDFOLDER/win32/fteqcc.exe $QCCBUILDFOLDER/win32-fteqcc.exe
#cp $BUILDFOLDER/macosx_tiger/fteqcc $QCCBUILDFOLDER/macosx_tiger-fteqcc cp $BUILDFOLDER/win32/fteqccgui.exe $QCCBUILDFOLDER/win32-fteqccgui.exe
cp $BUILDFOLDER/version.txt $QCCBUILDFOLDER/version.txt cp $BUILDFOLDER/win64/fteqcc64.exe $QCCBUILDFOLDER/win64-fteqcc.exe
cp $BUILDFOLDER/win64/fteqccgui64.exe $QCCBUILDFOLDER/win64-fteqccgui.exe
if [ "$BUILD_NACL" != "n" ]; then fi
mkdir -p $BUILDFOLDER/nacl #cp $BUILDFOLDER/morphos/fteqcc $QCCBUILDFOLDER/morphos-fteqcc
NACL=$BUILDFOLDER/nacl/fteqw.nmf #cp $BUILDFOLDER/macosx_tiger/fteqcc $QCCBUILDFOLDER/macosx_tiger-fteqcc
echo "{ \"program\":{" > $NACL cp $BUILDFOLDER/version.txt $QCCBUILDFOLDER/version.txt
if [ -e "$BUILDFOLDER/nacl_amd64/fteqw-x86_64.nexe" ]; then
mv $BUILDFOLDER/nacl_amd64/fteqw-x86_64.nexe $BUILDFOLDER/nacl/fteqw-x86_64.nexe if [ "$BUILD_NACL" != "n" ]; then
echo " \"x86-64\":{\"url\":\"fteqw-x86_64.nexe\"}," >> $NACL mkdir -p $BUILDFOLDER/nacl
fi NACL=$BUILDFOLDER/nacl/fteqw.nmf
if [ -e "$BUILDFOLDER/nacl_x86/fteqw-x86_32.nexe" ]; then echo "{ \"program\":{" > $NACL
mv $BUILDFOLDER/nacl_x86/fteqw-x86_32.nexe $BUILDFOLDER/nacl/fteqw-x86_32.nexe if [ -e "$BUILDFOLDER/nacl_amd64/fteqw-x86_64.nexe" ]; then
echo " \"x86-32\":{\"url\":\"fteqw-x86_32.nexe\"}," >> $NACL mv $BUILDFOLDER/nacl_amd64/fteqw-x86_64.nexe $BUILDFOLDER/nacl/fteqw-x86_64.nexe
fi echo " \"x86-64\":{\"url\":\"fteqw-x86_64.nexe\"}," >> $NACL
if [ -e "$BUILDFOLDER/nacl_arm/fteqw-arm.nexe" ]; then fi
mv $BUILDFOLDER/nacl_arm/fteqw-arm.nexe $BUILDFOLDER/nacl/fteqw-arm.nexe if [ -e "$BUILDFOLDER/nacl_x86/fteqw-x86_32.nexe" ]; then
echo " \"arm\":{\"url\":\"fteqw-arm.nexe\"}" >> $NACL mv $BUILDFOLDER/nacl_x86/fteqw-x86_32.nexe $BUILDFOLDER/nacl/fteqw-x86_32.nexe
fi echo " \"x86-32\":{\"url\":\"fteqw-x86_32.nexe\"}," >> $NACL
$NACL_SDK_ROOT/toolchain/linux_pnacl/bin/pnacl-finalize -o $BUILDFOLDER/nacl/fteqw.pexe $BUILDFOLDER/nacl_portable/fteqw.pexe fi
echo " \"portable\":{\"pnacl-translate\":{\"url\":\"fteqw.pexe\"}}" >> $NACL if [ -e "$BUILDFOLDER/nacl_arm/fteqw-arm.nexe" ]; then
echo "} }" >> $NACL mv $BUILDFOLDER/nacl_arm/fteqw-arm.nexe $BUILDFOLDER/nacl/fteqw-arm.nexe
rm -rf "$BUILDFOLDER/nacl_amd64" echo " \"arm\":{\"url\":\"fteqw-arm.nexe\"}" >> $NACL
rm -rf "$BUILDFOLDER/nacl_x86" fi
rm -rf "$BUILDFOLDER/nacl_arm" $NACL_SDK_ROOT/toolchain/linux_pnacl/bin/pnacl-finalize -o $BUILDFOLDER/nacl/fteqw.pexe $BUILDFOLDER/nacl_portable/fteqw.pexe
rm -rf "$BUILDFOLDER/nacl_portable" echo " \"portable\":{\"pnacl-translate\":{\"url\":\"fteqw.pexe\"}}" >> $NACL
fi echo "} }" >> $NACL
rm -rf "$BUILDFOLDER/nacl_amd64"
if [ "$BUILD_WINDOWS" != "n" ]; then rm -rf "$BUILDFOLDER/nacl_x86"
echo Archiving output rm -rf "$BUILDFOLDER/nacl_arm"
SVNVER=$(svnversion $SVNROOT) rm -rf "$BUILDFOLDER/nacl_portable"
cd $BUILDFOLDER/ fi
zip -q -9 $ARCHIVEFOLDER/win_fteqw_$SVNVER.zip win32/fteglqw.exe win32/fteqwsv.exe win32/fteqccgui.exe win32/debug/fteglqw.exe win64/fteqw.exe win64/debug/fteglqw.exe
if [ "$BUILD_WINDOWS" != "n" ]; then
echo Archiving output
cd $BUILDFOLDER/win32/ SVNVER=$(svnversion $SVNROOT)
zip -q -j -9 $BUILDFOLDER/fteqw_for_windows.zip fteglqw.exe fteqwsv.exe fteqccgui.exe fteplug_qi_x86.dll fteplug_xmpp_x86.dll fteplug_irc_x86.dll fteplug_ezhud_x86.dll cd $BUILDFOLDER/
cd $HOME/3rdparty_win32/ zip -q -9 $ARCHIVEFOLDER/win_fteqw_$SVNVER.zip win32/fteglqw.exe win32/fteqwsv.exe win32/fteqccgui.exe win32/debug/fteglqw.exe win64/fteqw.exe win64/debug/fteglqw.exe
zip -q -9 $BUILDFOLDER/fteqw_for_windows.zip ogg.dll vorbis.dll vorbisfile.dll freetype6.dll zlib1.dll
mkdir -p $BASE/tmp/fte
cd $BASE/tmp/ cd $BUILDFOLDER/win32/
cp $BUILDFOLDER/csaddon/menu.dat fte zip -q -j -9 $BUILDFOLDER/fteqw_for_windows.zip fteglqw.exe fteqwsv.exe fteqccgui.exe fteplug_qi_x86.dll fteplug_xmpp_x86.dll fteplug_irc_x86.dll fteplug_ezhud_x86.dll
zip -q -9 $BUILDFOLDER/fteqw_for_windows.zip fte/menu.dat cd $HOME/3rdparty_win32/
zip -q -9 $BUILDFOLDER/fteqw_for_windows.zip ogg.dll vorbis.dll vorbisfile.dll freetype6.dll zlib1.dll
#~/afterquake/updatemini.sh mkdir -p $BASE/tmp/fte
fi cd $BASE/tmp/
cp $BUILDFOLDER/csaddon/menu.dat fte
echo "All done" zip -q -9 $BUILDFOLDER/fteqw_for_windows.zip fte/menu.dat
END=$(date +%s) #~/afterquake/updatemini.sh
DIFF=$(( $END - $START )) fi
MINS=$(( $DIFF / 60 ))
echo "Total Compile Time: $MINS minutes" >> $BUILDLOGFOLDER/buildlog.txt echo "All done"
echo "Total Compile Time: $MINS minutes"
END=$(date +%s)
cd $HOME DIFF=$(( $END - $START ))
#./errorlog.sh MINS=$(( $DIFF / 60 ))
#cd $HOME echo "Total Compile Time: $MINS minutes" >> $BUILDLOGFOLDER/buildlog.txt
#rm .bitchxrc echo "Total Compile Time: $MINS minutes"
#cp ./fteqw/.bitchxrc ./
#./BitchX -a irc.quakenet.org -A -c "#fte" -n A_Gorilla cd $HOME
#./errorlog.sh
#cd $HOME
#rm .bitchxrc
#cp ./fteqw/.bitchxrc ./
#./BitchX -a irc.quakenet.org -A -c "#fte" -n A_Gorilla

View File

@ -3474,7 +3474,7 @@ static void S_UpdateCard(soundcardinfo_t *sc)
} }
#ifdef HAVE_MIXER #ifdef HAVE_MIXER
static int S_GetMixerTime(soundcardinfo_t *sc) int S_GetMixerTime(soundcardinfo_t *sc)
{ {
int samplepos; int samplepos;
int fullsamples; int fullsamples;

View File

@ -94,7 +94,11 @@ typedef int (VARGS gnutls_certificate_verify_function)(gnutls_session_t session)
#else #else
#include <gnutls/gnutls.h> #include <gnutls/gnutls.h>
#if GNUTLS_VERSION_MAJOR >= 3 && defined(HAVE_DTLS)
#include <gnutls/dtls.h> #include <gnutls/dtls.h>
#else
#undef HAVE_DTLS
#endif
#define gnutls_connection_end_t unsigned int #define gnutls_connection_end_t unsigned int
#if GNUTLS_VERSION_MAJOR < 3 || (GNUTLS_VERSION_MAJOR == 3 && GNUTLS_VERSION_MINOR < 3) #if GNUTLS_VERSION_MAJOR < 3 || (GNUTLS_VERSION_MAJOR == 3 && GNUTLS_VERSION_MINOR < 3)
@ -728,12 +732,16 @@ qboolean SSL_InitGlobal(qboolean isserver)
if (isserver) if (isserver)
{ {
#define KEYFILE "c:/games/tools/ssl/key.pem" int ret = -1;
#define CERTFILE "c:/games/tools/ssl/cert.pem" char keyfile[MAX_OSPATH];
int ret = qgnutls_certificate_set_x509_key_file(xcred[isserver], CERTFILE, KEYFILE, GNUTLS_X509_FMT_PEM); char certfile[MAX_OSPATH];
*keyfile = *certfile = 0;
if (FS_NativePath("key.pem", FS_ROOT, keyfile, sizeof(keyfile))
if (FS_NativePath("cert.pem", FS_ROOT, certfile, sizeof(certfile))
ret = qgnutls_certificate_set_x509_key_file(xcred[isserver], certfile, keyfile, GNUTLS_X509_FMT_PEM);
if (ret < 0) if (ret < 0)
{ {
Con_Printf("No certificate or key were found\n"); Con_Printf("No certificate or key were found in %s and %s\n", certfile, keyfile);
initstatus[isserver] = -1; initstatus[isserver] = -1;
} }
} }
@ -994,6 +1002,13 @@ neterr_t DTLS_Timeouts(void *ctx)
} }
return NETERR_SENT; return NETERR_SENT;
} }
#else
void DTLS_DestroyContext(void *ctx){}
qboolean DTLS_HasServerCertificate(void){return false;}
void *DTLS_CreateContext(void *cbctx, neterr_t(*push)(void *cbctx, const qbyte *data, size_t datasize), qboolean isserver){return NULL;}
neterr_t DTLS_Transmit(void *ctx, const qbyte *data, size_t datasize){return NETERR_DISCONNECTED;}
neterr_t DTLS_Received(void *ctx, qbyte *data, size_t datasize){return NETERR_DISCONNECTED;}
neterr_t DTLS_Timeouts(void *ctx) {return NETERR_SENT;}
#endif #endif
#endif #endif

View File

@ -2955,8 +2955,9 @@ qboolean NET_PortToAdr (netadrtype_t adrfamily, netproto_t adrprot, const char *
return false; return false;
} }
#ifdef HAVE_PACKET
/*just here to prevent the client from spamming new sockets, which can be a problem with certain q2 servers*/ /*just here to prevent the client from spamming new sockets, which can be a problem with certain q2 servers*/
qboolean FTENET_Datagram_ChangeLocalAddress(struct ftenet_generic_connection_s *con, netadr_t *adr) static qboolean FTENET_Datagram_ChangeLocalAddress(struct ftenet_generic_connection_s *con, netadr_t *adr)
{ {
struct sockaddr_qstorage address; struct sockaddr_qstorage address;
netadr_t current; netadr_t current;
@ -2980,6 +2981,7 @@ qboolean FTENET_Datagram_ChangeLocalAddress(struct ftenet_generic_connection_s *
//doesn't match how its currently bound, so I guess we need to rebind then. //doesn't match how its currently bound, so I guess we need to rebind then.
return false; return false;
} }
#endif
ftenet_generic_connection_t *FTENET_Datagram_EstablishConnection(qboolean isserver, const char *address, netadr_t adr) ftenet_generic_connection_t *FTENET_Datagram_EstablishConnection(qboolean isserver, const char *address, netadr_t adr)
{ {