git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21083 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			268 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| 
 |