nuclide/build_engine.sh

135 lines
3.3 KiB
Bash
Executable File

#!/bin/sh
. ./build.cfg
if ! [ -x "$(command -v svn)" ]; then
printf "'svn' is not installed.\n"
exit
fi
set -e
FTE_MAKEFILE=./src/engine/engine/Makefile
COMPILE_SYS=$(uname)
# Check how many cores/processors we should use for building
if ! [ -x "$(command -v nproc)" ]; then
# check if we're on OpenBSD then
if ! [ -x "$(command -v sysctl)" ]; then
BUILD_PROC=1
else
BUILD_PROC=$(sysctl -n hw.ncpu)
fi
else
BUILD_PROC=$(nproc)
fi
if [ "$BUILD_DEBUG" -eq 1 ]; then
MAKETARGET=gl-dbg
OUTPUT=./debug
else
MAKETARGET=gl-rel
OUTPUT=./release
fi
if [ "$BUILD_SDL2" -eq 1 ]; then
PLATFORM=SDL2
OUTPUT=$OUTPUT/fteqw-glsdl2
else
if [[ "$COMPILE_SYS" == "CYGWIN_NT-10.0" ]] || [[ "$COMPILE_SYS" == "CYGWIN_NT-6.1-WOW64" ]]; then
PLATFORM=win64
OUTPUT=$OUTPUT/fteglqw64.exe
elif [[ "$COMPILE_SYS" == "CYGWIN_NT-6.1" ]] || [[ "$COMPILE_SYS" == "CYGWIN_NT-5.1" ]]; then
PLATFORM=win32
OUTPUT=$OUTPUT/fteglqw32.exe
elif [[ "$COMPILE_SYS" == "OpenBSD" ]]; then
PLATFORM=bsd
OUTPUT=$OUTPUT/fteqw-gl
elif [[ "$COMPILE_SYS" == "FreeBSD" ]]; then
PLATFORM=bsd
OUTPUT=$OUTPUT/fteqw-gl
elif [[ "$COMPILE_SYS" == "NetBSD" ]]; then
PLATFORM=bsd
OUTPUT=$OUTPUT/fteqw-gl
elif [[ "$COMPILE_SYS" == "Linux" ]]; then
PLATFORM=linux64
OUTPUT=$OUTPUT/fteqw-gl64
elif [[ "$COMPILE_SYS" == "GNU/Linux" ]]; then
PLATFORM=linux64
OUTPUT=$OUTPUT/fteqw-gl64
else
printf "Unsupported platform.\n"
exit
fi
fi
mkdir -p ./bin
if [ -f "$FTE_MAKEFILE" ]; then
if [ "$BUILD_UPDATE" -eq 1 ]; then
printf "Engine is present, updating...\n"
cd ./src/engine/
if [ "$BUILD_ENGINEREVISION" == 0 ]; then
svn up
else
svn -r $BUILD_ENGINEREVISION up
fi
cd ./engine
else
cd ./src/engine/engine
fi
else
printf "Engine is NOT present, cloning...\n"
cd ./src/
if [ "$BUILD_ENGINEREVISION" == 0 ]; then
svn checkout https://svn.code.sf.net/p/fteqw/code/trunk engine
else
svn -r $BUILD_ENGINEREVISION checkout https://svn.code.sf.net/p/fteqw/code/trunk engine
fi
cd ./engine/engine
fi
if [ "$BUILD_CLEAN" -eq 1 ]; then
gmake clean
printf "Cleaned the build directory.\n\n"
fi
if [ "$BUILD_ENGINE_DEPENDENCIES" -eq 1 ]; then
gmake -j $BUILD_PROC makelibs FTE_TARGET=$PLATFORM
printf "Built the static dependencies successfully.\n\n"
fi
gmake -j $BUILD_PROC $MAKETARGET FTE_TARGET=$PLATFORM
cp -v "$OUTPUT" ../../../bin/fteqw
printf "Built the client engine successfully.\n\n"
gmake -j $BUILD_PROC sv-dbg
cp -v ./debug/fteqw-sv ../../../bin/fteqw-sv
printf "Built the dedicated server successfully.\n\n"
gmake -j $BUILD_PROC qcc-rel
cp -v ./release/fteqcc ../../../bin/fteqcc
printf "Built the QuakeC compiler successfully.\n\n"
if [ "$BUILD_IMGTOOL" -eq 1 ]; then
gmake -j $BUILD_PROC imgtool-rel
cp -v ./release/imgtool ../../../bin/imgtool
printf "Built the imgtool successfully.\n\n"
fi
if [ "$BUILD_BULLET" -eq 1 ]; then
gmake -j $BUILD_PROC plugins-rel NATIVE_PLUGINS="bullet"
find ./release/ -name 'fteplug_bullet_*.so' -exec cp -prv '{}' '../../../bin/' ';'
printf "Built the bullet plugin successfully.\n\n"
fi
if [ "$BUILD_FFMPEG" -eq 1 ]; then
gmake -j $BUILD_PROC plugins-rel NATIVE_PLUGINS="ffmpeg"
find ./release/ -name 'fteplug_ffmpeg_*.so' -exec cp -prv '{}' '../../../bin/' ';'
printf "Built the ffmpeg plugin successfully.\n\n"
fi
printf "DONE. Built ALL components successfully.\n"