fteqw/build_qc.sh

120 lines
4.4 KiB
Bash
Executable File

#!/bin/bash
#FTEQCC and FTEQW must be defined.
#QSS should be defined...
BUILDFOLDER=~/htdocs
BUILDLOGFOLDER=$BUILDFOLDER/build_logs
if [ "$FTEQCC" == "" ]; then
QSS=~/htdocs/qss/quakespasm-spiked-linux64
FTEQW=~/htdocs/linux_amd64/fteqw64
FTEQCC=~/htdocs/linux_amd64/fteqcc64
fi
#this really should use the native cpu type... until then we use 32bit in case anyone's still using a 32bit kernel.
if [ "$FTEQW" != "" ]; then
echo "--- QC builds ---"
echo "Making fteextensions.qc"
BASEDIR=~/.fte
GAMEDIR=fte
mkdir -p $BASEDIR/$GAMEDIR/src
#generate fte's extensions
CFG=$BASEDIR/fte/minusargsaresilly.cfg
echo "pr_dumpplatform -o fteextensions" > $CFG
echo "pr_dumpplatform -o csqcsysdefs -Tcs" >> $CFG
echo "pr_dumpplatform -o menusysdefs -Tmenu" >> $CFG
$FTEQW -basedir $BASEDIR -nohome -quake -game $GAMEDIR +set snd_device none -nosound +set vid_renderer sv +exec minusargsaresilly.cfg +quit >> /dev/null
#if we have fteqcc available then try to generate some symbol lists for our generic defs
if [ "$FTEQCC" != "" ]; then
#get QSS to spit out its defs for completeness.
if [ "$QSS" != "" ] && [ -e "$BASEDIR/id1/pak1.pak" ] && [ -e "$QSS" ]; then
CFG=$BASEDIR/$GAMEDIR/gen.cfg
echo "pr_dumpplatform -Oqscsextensions -Tcs" > $CFG
echo "pr_dumpplatform -Oqsextensions -Tss" >> $CFG
echo "pr_dumpplatform -Oqsmenuextensions -Tmenu" >> $CFG
$QSS -dedicated -nohome -game $GAMEDIR -basedir $BASEDIR +exec gen.cfg +quit >>/dev/null
else
echo "QSS not available?"
fi
if [ ! -e "$BASEDIR/fte/src/dpsymbols.src" ]; then
ln -sr quakec/dpsymbols.src $BASEDIR/$GAMEDIR/src/
fi
if [ ! -e "$BASEDIR/fte/src/dpdefs/" ]; then
echo "no dpdefs subdir found in $BASEDIR/fte/src/ ... manual intervention required"
fi
#generate symbol tables from the various engines's defs
( cd $BASEDIR/$GAMEDIR/src
$FTEQCC -Fdumpsymbols -oqsscs.dat qscsextensions.qc && sort -o qss_cs.sym qsscs.dat.sym
$FTEQCC -Fdumpsymbols -oqssss.dat qsextensions.qc && sort -o qss_ss.sym qssss.dat.sym
$FTEQCC -Fdumpsymbols -oqssmn.dat qsmenuextensions.qc && sort -o qss_menu.sym qssmn.dat.sym
$FTEQCC -Fdumpsymbols -oftecs.dat -DCSQC fteextensions.qc && sort -o fte_cs.sym ftecs.dat.sym
$FTEQCC -Fdumpsymbols -oftess.dat -DSSQC fteextensions.qc && sort -o fte_ss.sym ftess.dat.sym
$FTEQCC -Fdumpsymbols -oftemn.dat -DMENU fteextensions.qc && sort -o fte_menu.sym ftemn.dat.sym
$FTEQCC -Fdumpsymbols -odpcs.dat -DCSQC dpsymbols.src && sort -o dp_cs.sym dpcs.dat.sym
$FTEQCC -Fdumpsymbols -odpss.dat -DSSQC dpsymbols.src && sort -o dp_ss.sym dpss.dat.sym
$FTEQCC -Fdumpsymbols -odpmn.dat -DMENU dpsymbols.src && sort -o dp_menu.sym dpmn.dat.sym
) >>/dev/null
#generate generic extensions
CFG=$BASEDIR/fte/minusargsaresilly.cfg
echo "pr_dumpplatform -Ocsqc_api -Fdepfilter -Tsimplecs" > $CFG
echo "pr_dumpplatform -Ofte_csqc_api -Fdepfilter -Tcs" >> $CFG
echo "pr_dumpplatform -Odp_csqc_api -Fdepfilter -Tdpcs" >> $CFG
echo "pr_dumpplatform -Ossqc_api -Fdepfilter -Tnq" >> $CFG
echo "pr_dumpplatform -Omenu_api -Fdepfilter -Tmenu" >> $CFG
$FTEQW -basedir $BASEDIR -nohome -quake -game $GAMEDIR +set snd_device none -nosound +set vid_renderer sv +exec minusargsaresilly.cfg +quit >> /dev/null
fi
#fix up and copy the results somewhere useful
rm $CFG
mkdir -p $BUILDFOLDER/ftedefs $BUILDFOLDER/genericdefs
mv $BASEDIR/$GAMEDIR/src/fteextensions.qc $BUILDFOLDER/ftedefs
mv $BASEDIR/$GAMEDIR/src/csqcsysdefs.qc $BUILDFOLDER/ftedefs
mv $BASEDIR/$GAMEDIR/src/menusysdefs.qc $BUILDFOLDER/ftedefs
mv $BASEDIR/$GAMEDIR/src/*_api.qc $BUILDFOLDER/genericdefs
fi
if [ "$FTEQCC" != "" ]; then
mkdir -p $BUILDFOLDER/csaddon/
( cd quakec/csaddon/src
echo -n "Making csaddon... "
$FTEQCC -srcfile csaddon.src > $BUILDLOGFOLDER/csaddon.txt 2>&1
if [ $? -eq 0 ]; then
echo "done"
cp ../csaddon.dat $BUILDFOLDER/csaddon/
cd ..
zip -q9 $BUILDFOLDER/csaddon/csaddon.pk3 csaddon.dat
else
echo "failed"
fi
)
( cd quakec/menusys
echo -n "Making menusys... "
$FTEQCC -srcfile menu.src > $BUILDLOGFOLDER/menu.txt 2>&1
if [ $? -eq 0 ]; then
echo "done"
zip -q -q9 -o -r $BUILDFOLDER/csaddon/menusys_src.zip .
cp ../menu.dat $BUILDFOLDER/csaddon/
cd ..
zip -q9 $BUILDFOLDER/csaddon/menusys.pk3 menu.dat
else
echo "failed"
fi
)
else
echo "Skiping csaddon + qcmenu, no compiler build"
fi