wxWidgets/utils/configtool/scripts/makesetup.sh
2003-06-12 20:43:55 +00:00

268 lines
6.9 KiB
Bash

#!/bin/sh
# Make a distribution of an application.
# If your zip accepts Cygwin-style paths, then
# use cygpath, else substitute echo
CYGPATHPROG=cygpath
#CYGPATHPROG=echo
PROGNAME=$0
SCRIPTDIR=`pwd`
. $SCRIPTDIR/setup.var
# Set this to the required version
VERSION=
doreplace()
{
thefile=$1
theexpr=$2
if [ -f $thefile ]; then
sed -e "$theexpr" < $thefile > $thefile.tmp
mv $thefile.tmp $thefile
else
echo "*** $thefile not found."
fi
}
unix2dosname()
{
echo $1 | sed -e "s/\//\\\\\\\/g" > /tmp/filename.tmp
RETVALUE=`cat /tmp/filename.tmp`
rm -f /tmp/filename.tmp
}
unix2dosname2()
{
echo $1 | sed -e "s/\//\\\\/g" > /tmp/filename.tmp
RETVALUE=`cat /tmp/filename.tmp`
rm -f /tmp/filename.tmp
}
findversion()
{
echo "#include <stdio.h>" > /tmp/appver.c
echo "#include \"$VERSIONSYMBOLFILE\"" >> /tmp/appver.c
echo "int main() { printf(\"%.2f\", $VERSIONSYMBOL); }" >> /tmp/appver.c
gcc /tmp/appver.c -I$APPDIR -o /tmp/appver
VERSION=`/tmp/appver`
rm -f /tmp/appver /tmp/appver.c
}
makesetup()
{
if [ -d $SETUPIMAGEDIR ]; then
echo Removing existing $SETUPIMAGEDIR
rm -f -r $SETUPIMAGEDIR
fi
echo Making the $SETUPIMAGEDIR for preparing the setup
mkdir -p $SETUPIMAGEDIR
if [ -f $READMEFILE ]; then
echo Copying readme.txt
cp $READMEFILE $SETUPIMAGEDIR
else
echo "*** Warning - $READMEFILE not found"
fi
if [ -f $LICENSEFILE ]; then
echo Copying licence.txt
cp $LICENSEFILE $SETUPIMAGEDIR
else
echo "*** Warning - $LICENSEFILE not found"
fi
cp $APPDIR/docs/gpl.txt $SETUPIMAGEDIR
cp $APPDIR/docs/lgpl.txt $SETUPIMAGEDIR
cp $APPDIR/docs/licendoc.txt $SETUPIMAGEDIR
echo Copying sample configuration settings file...
cp $APPDIR/configs/wxwin250.wxs $SETUPIMAGEDIR
if [ "$RESOURCESFILE" != "" ] && [ "$RESOURCESDIR" != "" ]; then
if [ -d $RESOURCESDIR ]; then
cd $RESOURCESDIR
echo Compiling resource file $RESOURCESFILE
zip $SETUPIMAGEDIR/$RESOURCESFILE *
else
echo "*** Warning - $RESOURCESDIR directory not found"
fi
fi
if [ "$MAKEMANUAL" != "0" ]; then
if [ -d $MANUALDIR ]; then
cd $MANUALDIR
make
for EACHFILE in $MANUALFILES ; do
if [ -f $EACHFILE ]; then
echo Copying $EACHFILE
cp $EACHFILE $SETUPIMAGEDIR
else
echo "*** Warning - $EACHFILE not found"
fi
done
else
echo "*** Warning - $MANUALDIR not found"
fi
fi
if [ -f $WXMANUALCHM ]; then
echo Copying wxWindows manual $WXMANUALCHM
cp $WXMANUALCHM $SETUPIMAGEDIR
else
echo "*** Warning - $WXMANUALCHM not found"
fi
if [ -f $APPBINARY ]; then
echo Copying binary $APPBINARY
cp $APPBINARY $SETUPIMAGEDIR
else
echo "*** Error - $APPBINARY not found"
exit 1
fi
if [ "$UPX" != "0" ]; then
echo Compressing binary
upx $SETUPIMAGEDIR/`basename $APPBINARY`
fi
# Time to regenerate the Inno Install script
if [ "$INNO" != "0" ]; then
echo Generating $SETUPSCRIPTNAME
rm -f $SETUPSCRIPTNAME
sh $SCRIPTDIR/makeinno.sh $SETUPIMAGEDIR $INNOTOP $INNOBOTTOM $SETUPSCRIPTNAME
if [ ! -f $SETUPSCRIPTNAME ]; then
echo "*** Error - something went wrong with the script file generation."
exit 1
fi
# Now replace %VERSION% with the real application version, and other
# variables
echo Replacing variables in the setup script
doreplace $SETUPSCRIPTNAME "s/%VERSION%/$VERSION/g"
doreplace $SETUPSCRIPTNAME "s/%COPYRIGHTHOLDER%/$AUTHOR/g"
doreplace $SETUPSCRIPTNAME "s/%VENDOR%/$VENDOR/g"
unix2dosname $READMEFILE
doreplace $SETUPSCRIPTNAME "s;%READMEFILE%;$RETVALUE;g"
unix2dosname $READMEAFTERFILE
doreplace $SETUPSCRIPTNAME "s;%READMEAFTERFILE%;$RETVALUE;g"
unix2dosname $LICENSEFILE
doreplace $SETUPSCRIPTNAME "s;%LICENSEFILE%;$RETVALUE;g"
doreplace $SETUPSCRIPTNAME "s/%APPNAME%/$APPNAME/g"
doreplace $SETUPSCRIPTNAME "s/%APPTITLE%/$APPTITLE/g"
unix2dosname $SETUPIMAGEDIR
doreplace $SETUPSCRIPTNAME "s;%SOURCEDIR%;$RETVALUE;g"
unix2dosname $DESTDIR
doreplace $SETUPSCRIPTNAME "s;%OUTPUTDIR%;$RETVALUE;g"
doreplace $SETUPSCRIPTNAME "s/%APPEXTENSION%/$APPEXTENSION/g"
# FIXME: how do we get the first name in the list?
if [ "$MANUALFILES" != "" ]; then
HELPFILE=`basename $MANUALFILES`
unix2dosname $HELPFILE
doreplace $SETUPSCRIPTNAME "s;%HELPFILE%;$RETVALUE;g"
fi
fi
rm -f $DESTDIR/setup*.*
# Inno Setup complains if this step is not done
unix2dos --unix2dos $SETUPSCRIPTNAME
# Now invoke INNO compiler on the new ISS file
# First, make a DOS filename or Inno Setup will get confused.
unix2dosname2 $SETUPSCRIPTNAME
DOSFILENAME=$RETVALUE
# Note: the double slash is Mingw32/MSYS convention for
# denoting a switch, that must not be converted into
# a path (otherwise /c = c:/)
cd `dirname $SETUPSCRIPTNAME`
BASESCRIPTNAME=`basename $SETUPSCRIPTNAME`
echo Invoking Inno Setup compiler on $BASESCRIPTNAME
"$SETUPCOMPILER" //cc $BASESCRIPTNAME
if [ ! -f $DESTDIR/setup.exe ]; then
echo "*** Error - the setup.exe was not generated."
exit
fi
cd $DESTDIR
mv setup.exe $APPNAME-$VERSION-setup.exe
echo If you saw no warnings or errors, $APPTITLE was successfully spun.
echo
}
# We can't use e.g. this:
# ls `cat $SRC/distrib/msw/makefile.rsp` zip -@ -u $DEST/wxWindows-$VERSION-gen.zip
# because there's not enough space on the command line, plus we need to ignore the
# blank lines.
# So if we need to (not in this script so far) we do something like this instead:
# expandlines $SRC/setup/files.rsp temp.txt
# zip -@ `$CYGPATHPROG -w $DEST/archive.zip` < temp.txt
expandlines()
{
toexpand=$1
outputfile=$2
rm -f $outputfile
touch $outputfile
for line in `cat $toexpand` ; do
if [ $line != "" ]; then
ls $line >> $outputfile
fi
done
}
usage()
{
echo "Usage: $PROGNAME [ options ]" 1>&2
echo Options:
echo " --help Display this help message"
echo " --upx Compress executable with UPX"
echo " --no-upx Do not compress executable with UPX"
echo " --inno Build the setup.exe"
echo " --no-inno Do not build the setup.exe"
echo.
echo Note that options only override settings in $SCRIPTDIR/setup.var.
exit 1
}
# Process command line options.
for i in "$@"; do
case "$i" in
--inno) INNO=1 ;;
--no-inno) INNO=0 ;;
--upx) UPX=1 ;;
--no-upx) UPX=0 ;;
*)
usage
exit
;;
esac
done
findversion
makesetup