scyther/dist/build-arch-tag
Cas Cremers ccd90dccdb Releasescripts now also allow for building arbitrary description tags.
In a next pass, maybe we will allow for releasing *any* valid git revision.
2007-10-08 14:27:53 +02:00

145 lines
3.0 KiB
Bash
Executable File

#!/bin/sh
#
# Make a new distribution archive. Command line specification of the tag
#
# For now, just windows. Others will follow.
#
# Usage will be:
#
# gitdist ARCH TAG
#
# ARCH is any of
#
# linux
# w32
# mac
#
# The tag is checked out of the current repository (so it should exist)
# and this is used to construct a archive with the binary of the
# selected architecture.
# Current
DESCR=`git describe --tags`
if [ "x$1" = "x" -o "x$2" = "x" ]
then
echo
echo "Scyther binary distribution generator."
echo
echo " Usage: $0 <arch> <tag>"
echo
echo "where <arch> is one of linux,w32,mac"
echo "and <tag> is any tag in the current git repository."
echo
exit
fi
ARCH=$1
if [ "x$ARCH" = "xlinux" -o "x$ARCH" = "xw32" -o "x$ARCH" = "xmac" ]
then
echo "Architecture $ARCH detected."
else
echo "Don't know architecture $ARCH."
echo "Please use one of linux,w32,mac"
exit
fi
TAG=$2
FOUND=`git-tag -l $TAG`
if [ "x$TAG" = "x$FOUND" -o "x$TAG" = "x$DESCR" ]
then
echo "Tag $TAG found."
else
echo "Don't know tag $TAG, please select one from below:"
git-tag -l
echo $DESCR
exit
fi
# Note without extension, this will added later
ARCHNAME=scyther-$ARCH-$TAG
# Directory locations
CURDIR=`pwd`
DESTDIR=$CURDIR
TMPDIR="/tmp"
SRCNAME=$ARCHNAME-src
# Hard coded connections, do not change this (hardcoded in git-archive
# usage and archive creation)
SRCDIR=$TMPDIR/$SRCNAME
BUILDDIR=$TMPDIR/$ARCHNAME
# Archive destination file without extension
DESTFILE=$DESTDIR/$ARCHNAME
# Internal locations
DOCDIR=$SRCDIR/doc/manual
MANUAL=scyther-manual.pdf
rm -rf $SRCDIR
rm -rf $BUILDDIR
# Change into the lower directory (main archive dir)
cd .. && git-archive --format=tar --prefix=$SRCNAME/ $TAG | (cd $TMPDIR && tar xf -)
# Base of the package is the gui directory
mv $SRCDIR/gui $BUILDDIR
# Prepare tag for gui version
echo "SCYTHER_GUI_VERSION = \"$TAG\"" >$BUILDDIR/Gui/Version.py
# Prepare version.h with the correct flag (tag)
echo "#define TAGVERSION \"$TAG\"" >$SRCDIR/src/version.h
echo "" >>$SRCDIR/src/version.h
# Manual
cp $DOCDIR/$MANUAL $BUILDDIR
# Change into sources directory
cd $SRCDIR/src
# Default flags
CMFLAGS="-D CMAKE_BUILD_TYPE:STRING=Release"
if [ $ARCH = "w32" ]
then
BIN="scyther-w32.exe"
cmake $CMFLAGS -D TARGETOS=Win32 . && make
elif [ $ARCH = "linux" ]
then
BIN="scyther-linux"
cmake $CMFLAGS . && make
elif [ $ARCH = "mac" ]
then
# Make for ppc and intel, and combine into universal binary
BIN="scyther-mac"
cmake $CMFLAGS -D TARGETOS=MacPPC . && make
cmake $CMFLAGS -D TARGETOS=MacIntel . && make
cmake $CMFLAGS . && make scyther-mac
fi
# Copy the resulting binary to the correct location
BINDIR=$BUILDDIR/Scyther/
cp $BIN $BINDIR
# Compress the whole thing into an archive
cd $TMPDIR
if [ $ARCH = "w32" ]
then
DESTARCH=$DESTFILE.zip
rm -f $DESTARCH
zip -r $DESTARCH $ARCHNAME
else
DESTARCH=$DESTFILE.tgz
rm -f $DESTARCH
tar zcvf $DESTARCH $ARCHNAME
fi
# Remove the temporary working directory
rm -rf $BUILDDIR
rm -rf $SRCDIR