mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 14:48:25 +02:00
154 lines
4.2 KiB
Bash
Executable File
154 lines
4.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
set -x
|
|
|
|
PPC_RELEASE=$1
|
|
|
|
if [ ! -e "$PPC_RELEASE" ]; then
|
|
PPC_RELEASE=/usr/local/lib/fpc/2.0.2/ppcppc
|
|
echo "Using default PPC_RELEASE: $PPC_RELEASE"
|
|
fi
|
|
|
|
FPCSVNDIR=$2
|
|
if [ ! -d "$FPCSVNDIR" ]; then
|
|
FPCSVNDIR=~/src/fpcbuild/2.0.4
|
|
echo "Using default FPCSVNDIR: $FPCSVNDIR"
|
|
fi
|
|
|
|
FREEZE=/usr/local/bin/freeze
|
|
if [ ! -e "$FREEZE" ]; then
|
|
FREEZE=/usr/bin/freeze
|
|
fi
|
|
if [ ! -e "$FREEZE" ]; then
|
|
echo "Cannot find freeze"
|
|
fi
|
|
|
|
HDIUTIL=/usr/bin/hdiutil
|
|
UPDATELIST=~/tmp/updatelist
|
|
TEMPLATEDIR=`dirname $0`
|
|
FPCSOURCEDIR=$FPCSVNDIR/fpcsrc
|
|
BUILDDIR=~/tmp/build
|
|
FPCBUILDDIR=$BUILDDIR/fpc
|
|
INSTALLDIR=~/tmp/fpc
|
|
INSTALLFPCDIR=~/fpc
|
|
TRASHDIR=~/tmp/trash
|
|
|
|
PPCARCH=ppcppc
|
|
CREATECROSSPPC=0
|
|
|
|
ARCH=`uname -p`
|
|
if [ "$ARCH" = "i386" ]; then
|
|
PPCARCH=ppc386
|
|
CREATECROSSPPC=1
|
|
fi
|
|
|
|
SVN=`which svn`
|
|
if [ ! -e "$SVN" ]; then
|
|
SVN=/usr/local/bin/svn
|
|
fi
|
|
|
|
if [ ! -e "$SVN" ]; then
|
|
SVN=/sw/bin/svn
|
|
fi
|
|
|
|
if [ ! -e "$SVN" ]; then
|
|
echo "Cannot find a svn executable"
|
|
fi
|
|
|
|
DATESTAMP=`date +%Y%m%d`
|
|
FPCPACKPROJ=fpc.packproj
|
|
|
|
cd $FPCSVNDIR
|
|
$SVN update
|
|
|
|
if [ ! -d $BUILDDIR ] ; then
|
|
mkdir -p $BUILDDIR
|
|
else
|
|
if [ -d $FPCBUILDDIR ] ; then
|
|
rm -rf $FPCBUILDDIR
|
|
fi
|
|
fi
|
|
|
|
$SVN export $FPCSVNDIR $FPCBUILDDIR
|
|
if [ ! -d "$FPCBUILDDIR/fpcsrc" ]; then
|
|
# old versions of svn did not export external repositories
|
|
$SVN export $FPCSVNDIR/fpcsrc $FPCBUILDDIR/fpcsrc
|
|
$SVN export $FPCSVNDIR/fpcdocs $FPCBUILDDIR/fpcdocs
|
|
fi
|
|
|
|
cd $FPCBUILDDIR
|
|
export NOGDB=1
|
|
make distclean PP=$PPC_RELEASE
|
|
make build PP=$PPC_RELEASE DATA2INC=$FPCBUILDDIR/fpcsrc/utils/data2inc
|
|
|
|
COMPILER=$FPCBUILDDIR/fpcsrc/compiler/$PPCARCH
|
|
FPCVERSION=`$COMPILER -iV`
|
|
FPCFULLVERSION=`$COMPILER -iW`
|
|
FPCARCH=`$COMPILER -iSP`
|
|
|
|
# clean installdir: since I am not root and the install dir can contain files owned by root
|
|
# created by a previous freeze, I just move it out of the way
|
|
mkdir -p $TRASHDIR
|
|
|
|
set +e
|
|
rm -rf $INSTALLDIR
|
|
set -e
|
|
|
|
if [ -d $INSTALLDIR ]; then
|
|
mv $INSTALLDIR $TRASHDIR
|
|
fi
|
|
mkdir -p $INSTALLDIR
|
|
make install PP=$COMPILER INSTALL_PREFIX=$INSTALLDIR
|
|
|
|
# install for use by lazarus
|
|
make -C fpcsrc compiler_install rtl_install packages_install utils_install \
|
|
INSTALL_PREFIX=$INSTALLFPCDIR PP=$COMPILER FPCMAKE=$FPCBUILDDIR/fpcsrc/utils/fpcm/fpcmake
|
|
|
|
make -C fpcsrc/compiler installsymlink PP=$COMPILER INSTALL_PREFIX=$INSTALLFPCDIR
|
|
|
|
if [ $CREATECROSSPPC == 1 ]; then
|
|
make all PP=$PPC_RELEASE CPU_TARGET=powerpc CROSSINSTALL=0
|
|
|
|
CROSSCOMPILER=$FPCBUILDDIR/fpcsrc/compiler/ppcrossppc
|
|
make -C fpcsrc compiler_install rtl_install packages_install CPU_TARGET=powerpc FPC=$CROSSCOMPILER CROSSINSTALL=0 \
|
|
INSTALL_PREFIX=$INSTALLDIR FPCMAKE=$FPCBUILDDIR/fpcsrc/utils/fpcm/fpcmake
|
|
# install for use by lazarus
|
|
make -C fpcsrc compiler_install rtl_install packages_install CPU_TARGET=powerpc FPC=$CROSSCOMPILER CROSSINSTALL=0 \
|
|
INSTALL_PREFIX=$INSTALLFPCDIR FPCMAKE=$FPCBUILDDIR/fpcsrc/utils/fpcm/fpcmake EXENAME=ppcppc
|
|
|
|
#make -C fpcsrc/compiler CPU_TARGET=powerpc installsymlink FPC=$CROSSCOMPILER INSTALL_PREFIX=$INSTALLFPCDIR CROSSINSTALL=0
|
|
ln -sf ../lib/fpc/$FPCVERSION/ppcrossppc $INSTALLFPCDIR/bin/ppcppc
|
|
ln -sf ../lib/fpc/$FPCVERSION/ppcrossppc $INSTALLDIR/bin/ppcppc
|
|
fi
|
|
|
|
# create symlink using relative paths, make symlinkinstall uses absolute path,
|
|
# which then ends up as link to the temporary build path
|
|
# on the user's machine after installation
|
|
ln -sf ../lib/fpc/$FPCVERSION/$PPCARCH $INSTALLDIR/bin/$PPCARCH
|
|
|
|
# fill in packproj template.
|
|
OLDIFS=$IFS
|
|
IFS=.
|
|
FPCMAJORVERSION=`set $FPCVERSION; echo $1`
|
|
FPCMINORVERSION=`set $FPCVERSION; echo $2$3`
|
|
IFS=$OLDIFS
|
|
sed -e "s|_PPCARCH_|$PPCARCH|g" -e "s|_FPCSRCDIR_|$FPCSVNDIR|g" \
|
|
-e "s|_FPCVERSION_|$FPCVERSION|g" -e "s|_FPCFULLVERSION_|$FPCFULLVERSION|g" \
|
|
-e "s|_DATESTAMP_|$DATESTAMP|g" -e s/_FPCMAJORVERSION_/$FPCMAJORVERSION/g \
|
|
-e "s/_FPCMINORVERSION_/$FPCMINORVERSION/g" -e "s/_FPCARCH_/$FPCARCH/g" \
|
|
$TEMPLATEDIR/$FPCPACKPROJ.template > $INSTALLDIR/$FPCPACKPROJ
|
|
|
|
# build package
|
|
$FREEZE -v $INSTALLDIR/$FPCPACKPROJ
|
|
|
|
DMGFILE=~/pkg/fpc-$FPCFULLVERSION-$DATESTAMP-$FPCARCH-macosx.dmg
|
|
rm -rf $DMGFILE
|
|
|
|
$HDIUTIL create -anyowners -volname fpc-$FPCVERSION -imagekey zlib-level=9 -format UDZO -srcfolder $INSTALLDIR/build $DMGFILE
|
|
|
|
if [ -e $DMGFILE ]; then
|
|
#update lazarus snapshot web page
|
|
echo "$DMGFILE fpc-$FPCFULLVERSION-*-$FPCARCH-macosx.dmg" >> $UPDATELIST
|
|
fi
|