raze-gles/polymer/synthesis.sh
hendricks266 fcf9beae6a Work-in-progress adjustment to the C code to compile under C++. It builds for me without errors using Win32 MinGW-GCC, but it still generates warning soup. No guarantees about MSVC or anything using SDL. Enable C++ by building with CPLUSPLUS=1. C remains the default and should compile with no change in setup.
Credit to Plagman for the idea and doing the work on the game side, which is included in this commit.

(Building as C++ will give us features with which we can make improvements and optimizations on the multiplayer code and Polymer.)

git-svn-id: https://svn.eduke32.com/eduke32@3116 1a8010ca-5511-0410-912e-c29ae57300e0
2012-11-05 02:49:08 +00:00

171 lines
4.9 KiB
Bash
Executable file

#!/bin/bash
# some paths
top=/var/www/synthesis/eduke32
lockfile=$top/synthesis_building
source=eduke32
output=/var/www/dukeworld.duke4.net/eduke32/synthesis
make=( make PLATFORM=WINDOWS CC='wine gcc' CXX='wine g++' AS='wine nasm' RC='wine windres' STRIP='wine strip' AR='wine ar' RANLIB='wine ranlib' PRETTY_OUTPUT=0 NEDMALLOC=0 )
clean=veryclean
# the following file paths are relative to $source
targets=( eduke32.exe mapster32.exe )
bin_packaged=( eduke32.exe eduke32.debug.exe mapster32.exe mapster32.debug.exe ebacktrace1.dll SEHELP.HLP STHELP.HLP names.h buildlic.txt GNU.TXT m32help.hlp nedmalloc.dll tiles.cfg samples/* )
not_src_packaged=( psd source/jaudiolib/third-party/vorbis.framework/Versions/A/vorbis Apple/lib )
# group that owns the resulting packages
group=dukeworld
# some variables
dobuild=
# controls resulting package filenames... will support linux later
basename=eduke32
platform=win32
# if the output dir doesn't exist, create it
if [ ! -e $output ]
then
mkdir -p $output
fi
if [ -f $lockfile ]
then
echo "Build already in progress!"
exit
else
touch $lockfile
fi
cd $top
# update the code repository and get the last revision number from SVN
head=`svn update | tail -n1 | awk '{ print $NF }' | cut -d. -f1`
echo "HEAD is revision $head."
lastrevision=`ls -A1 $output/????????-???? | tail -n1 | cut -d- -f2 | cut -d. -f1`
# if the output dir is empty, we build no matter what
if [ ! $lastrevision ]
then
echo "No builds yet."
dobuild=1
else
echo "Last built revision is $lastrevision."
# if the last built revision is less than HEAD, we also build
if [ $lastrevision -lt $head ]
then
echo "Need a new build."
dobuild=1
fi
fi
if [ $dobuild ]
then
echo "Launching a build..."
cd $top/$source
# remove possible old debug binaries
echo rm eduke32.debug.exe
rm eduke32.debug.exe
echo rm mapster32.debug.exe
rm mapster32.debug.exe
# throw the svn revision into a header. this is ugly.
echo "s_buildRev = \"r$head\";" > source/rev.h
# clean the tree and build debug first
echo "${make[@]}" RELEASE=0 $clean all
"${make[@]}" RELEASE=0 $clean all
# make sure all the targets were produced
for i in "${targets[@]}"; do
if [ ! -e $i ]
then
echo "Build failed! Bailing out..."
rm -r $lockfile
exit
fi
done
# move the debug binaries out of the way
echo mv eduke32.exe eduke32.debug.exe
mv eduke32.exe eduke32.debug.exe
echo mv mapster32.exe mapster32.debug.exe
mv mapster32.exe mapster32.debug.exe
echo mv ebacktrace1.dll ebacktrace1.debug.dll
mv ebacktrace1.dll ebacktrace1.debug.dll
# clean the tree and build release
echo "${make[@]}" $clean all
"${make[@]}" $clean all
# make sure all the targets were produced
for i in "${targets[@]}"; do
if [ ! -e $i ]
then
echo "Build failed! Bailing out..."
rm -r $lockfile
exit
fi
done
# move this back where it belongs
echo mv ebacktrace1.debug.dll ebacktrace1.dll
mv ebacktrace1.debug.dll ebacktrace1.dll
# get the date in the YYYYMMDD format (ex: 20091001)
date=`date +%Y%m%d`
# create the output directory
mkdir $output/$date-$head
# package the binary snapshot
echo zip -9 $output/$date-$head/${basename}_${platform}_$date-$head.zip ${bin_packaged[@]}
zip -9 $output/$date-$head/${basename}_${platform}_$date-$head.zip ${bin_packaged[@]}
# hack to restore [e]obj/keep.me
echo svn update -r $head
svn update -r $head
# export the source tree into the output directory
svn export . $output/$date-$head/${basename}_$date-$head
echo svn export . $output/$date-$head/${basename}_$date-$head
# package the source
cd $output/$date-$head
# first remove the unnecessary files
for i in "${not_src_packaged[@]}"; do
echo rm -r ${basename}_$date-$head/$i
rm -r ${basename}_$date-$head/$i
done
echo tar cjf ${basename}_src_$date-$head.tar.bz2 ${basename}_$date-$head
tar cjf ${basename}_src_$date-$head.tar.bz2 ${basename}_$date-$head
rm -r ${basename}_$date-$head
# output the changelog since last snapshot in the output directory
if [ $lastrevision ]
then
# add one so that we only include what is new to this update
let lastrevision+=1
cd $top/$source
svn log -r $head:$lastrevision > $output/$date-$head/ChangeLog.txt
fi
# hack for our served directory structure... really belongs elsewhere,
# like in whatever script executes this one
chmod -R g+w $output/$date-$head
chown -R :$group $output/$date-$head
# link eduke32_latest.zip to the new archive
ln -sf $output/$date-$head/${basename}_${platform}_$date-$head.zip $output/eduke32_latest.zip
rm -r $lockfile
else
echo "Nothing to do."
rm -r $lockfile
fi