mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-08-19 12:39:08 +02:00
clean up
This commit is contained in:
parent
909391dffb
commit
6827ca1b29
@ -1,264 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Some variables
|
||||
BASEURL="https://svn.freepascal.org/svn/projects/pas2js/"
|
||||
|
||||
function info {
|
||||
if [ -z "$QUIET" ]; then
|
||||
echo "Info: $*"
|
||||
fi
|
||||
}
|
||||
|
||||
function header {
|
||||
if [ -z "$QUIET" ]; then
|
||||
echo ""
|
||||
echo "Info: $*"
|
||||
echo "---"
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
function usage {
|
||||
echo "usage $0 [options] [FPC [SVN]]"
|
||||
echo '-c compiler set compiler to use'
|
||||
echo '-d directory set base directory for checkout'
|
||||
echo '-h help this help message'
|
||||
echo '-o OPTS extra compiler options'
|
||||
echo "-q be more quiet"
|
||||
echo '-s name build snapshot with name'
|
||||
echp '-nd skip demo test compilation'
|
||||
echo '-z URL set url for checkout. Can be relative to pas2js repo'
|
||||
}
|
||||
|
||||
function doCompile {
|
||||
info "Compiler command line: $*"
|
||||
$FPC $*
|
||||
}
|
||||
function doStrip {
|
||||
info "Stripping binary: $*"
|
||||
strip $*
|
||||
}
|
||||
set -e
|
||||
while test $# != 0
|
||||
do
|
||||
f=$1
|
||||
case $f in
|
||||
'-c') shift
|
||||
FPC="$1";;
|
||||
'-d') shift
|
||||
DIR="$1";;
|
||||
'-z') shift
|
||||
SVN="$1";;
|
||||
'-o') shift
|
||||
EXTRAOPTS="$1";;
|
||||
'-q') QUIET=1;;
|
||||
'-s') shift
|
||||
SNAPSHOT="$1";;
|
||||
'-nd') SKIPDEMO=1;;
|
||||
'-h') usage
|
||||
exit;;
|
||||
*)
|
||||
if [ -z "$FPC" ]; then
|
||||
FPC=$1
|
||||
else
|
||||
if [ -z "$SVN" ]; then
|
||||
SVN=$1
|
||||
else
|
||||
usage
|
||||
fi
|
||||
fi
|
||||
esac
|
||||
shift
|
||||
done
|
||||
#
|
||||
# Collect some info , set defaults
|
||||
#
|
||||
if [ -z "$FPC" ]; then
|
||||
FPC=fpc
|
||||
fi
|
||||
if [ -z "$SVN" ]; then
|
||||
SVN=${BASEURL}trunk
|
||||
else
|
||||
PROT=$(echo $SVN | sed -n '/.*:\/\//p')
|
||||
if [ -z "$PROT" ]; then
|
||||
SVN="${BASEURL}${SVN}"
|
||||
fi
|
||||
fi
|
||||
if [ -z "$DIR" ]; then
|
||||
DIR=$TMP
|
||||
if [ -z "$DIR" ]; then
|
||||
DIR=$TEMP
|
||||
fi
|
||||
if [ -z "$DIR" ]; then
|
||||
DIR=~/tmp
|
||||
fi
|
||||
fi
|
||||
FPCVER=$($FPC -iV)
|
||||
FPCVER30=$(echo $FPCVER | (grep '3.0' || echo))
|
||||
FPCCPU=$($FPC -iTP)
|
||||
case "$OSTYPE" in
|
||||
linux*)
|
||||
SNAPSHOTOS=linux
|
||||
LIBEXT=so
|
||||
;;
|
||||
darwin*)
|
||||
SNAPSHOTOS=macos
|
||||
LIBEXT=dylib
|
||||
;;
|
||||
*) SNAPSHOTOS=unknown
|
||||
LIBEXT=dll
|
||||
;;
|
||||
esac
|
||||
#
|
||||
# Get started
|
||||
#
|
||||
info "SVN URL: $SVN"
|
||||
info "Compiler version: $FPCVER"
|
||||
info "Base directory: $DIR"
|
||||
info "Snaphot: $SNAPSHOT"
|
||||
info ""
|
||||
#
|
||||
# Change to base dir
|
||||
#
|
||||
info Changing directory to base dir $DIR
|
||||
mkdir -p $DIR
|
||||
cd $DIR
|
||||
if [ -d daily ]; then
|
||||
info Removing previous dir
|
||||
rm -rf daily
|
||||
fi
|
||||
#
|
||||
# Export sources
|
||||
#
|
||||
info "Exporting SVN $SVN to $DIR/daily"
|
||||
svn export -q $SVN daily
|
||||
BUILDDIR="$DIR/daily"
|
||||
PKGDIR="$BUILDDIR/compiler/packages"
|
||||
UNITPATH="$PKGDIR/fcl-js/src/;$PKGDIR/fcl-json/src/;$PKGDIR/fcl-passrc/src/;$PKGDIR/pastojs/src/"
|
||||
if [ ! -z "$FPCVER30" ]; then
|
||||
UNITPATH="${UNITPATH};$PKGDIR/compat"
|
||||
fi
|
||||
OPTS="-FU. -B -O1 -Schi -v0 -ve $EXTRAOPT"
|
||||
if [ "$FPCCPU" = "x86_64" ]; then
|
||||
LIBOPT="-fPIC"
|
||||
fi
|
||||
COMPDIR=$BUILDDIR/compiler/utils/pas2js
|
||||
#
|
||||
# Output dir is basis for zip
|
||||
#
|
||||
OUTDIR=$BUILDDIR/output
|
||||
INSTALLDIR=$OUTDIR
|
||||
if [ ! -z "$SNAPSHOT" ]; then
|
||||
SNAPSHOTDIR="pas2js-snapshot-$SNAPSHOTOS-$FPCCPU"
|
||||
INSTALLDIR="$OUTDIR/$SNAPSHOTDIR"
|
||||
fi
|
||||
if [ -d "$INSTALLDIR" ]; then
|
||||
info "Output dir $INSTALLDIR exists. Cleaning up"
|
||||
rm -rf "$INSTALLDIR"/*
|
||||
else
|
||||
info "Creating output dir $INSTALLDIR"
|
||||
mkdir -p "$INSTALLDIR"
|
||||
fi
|
||||
#
|
||||
# Binaries are put here
|
||||
#
|
||||
BINDIR=$INSTALLDIR/bin/
|
||||
if [ -d "$BINDIR" ]; then
|
||||
info Removing previous binaries from "$BINDIR"
|
||||
rm -rf "$BINDIR"/*
|
||||
else
|
||||
info Creating output dir "$BINDIR"
|
||||
mkdir -p "$BINDIR"
|
||||
fi
|
||||
|
||||
# pas2js
|
||||
header Build pas2js in $COMPDIR
|
||||
cd "$COMPDIR"
|
||||
doCompile -Fu"$UNITPATH" $OPTS -FE$BINDIR pas2js.pp
|
||||
doStrip $BINDIR/pas2js
|
||||
|
||||
# libpas2js
|
||||
header Build libpas2js in $COMPDIR
|
||||
cd "$COMPDIR"
|
||||
doCompile -Fu"$UNITPATH" $OPTS $LIBOPT -FE$BINDIR pas2jslib.pp
|
||||
if [ "$OSTYPE" ne "darwin" ]; then
|
||||
doStrip $BINDIR/libpas2jslib.$LIBEXT
|
||||
fi
|
||||
|
||||
# compileserver
|
||||
if [ ! -z "$FPCVER30" ]; then
|
||||
header Version 3.0.x detected: Skipping compileserver build.
|
||||
else
|
||||
header Build compileserver in $COMPDIR
|
||||
cd "$COMPDIR"
|
||||
doCompile -Fu"$UNITPATH" $OPTS -FE$BINDIR compileserver.pp
|
||||
doStrip $BINDIR/compileserver
|
||||
fi
|
||||
|
||||
# webidl
|
||||
header Build webidl2pas in $COMPDIR
|
||||
cd "$COMPDIR"
|
||||
doCompile -Fu"$UNITPATH" $OPTS -FE$BINDIR -Fu$PKGDIR/webidl/src webidl2pas.pp
|
||||
doStrip $BINDIR/webidl2pas
|
||||
# all done
|
||||
header Compiled binaries:
|
||||
ls -l $BINDIR
|
||||
|
||||
#
|
||||
# Copy files for snapZip snapshot
|
||||
#
|
||||
if [ ! -z "$SNAPSHOT" ]; then
|
||||
header Copying packages and demos for snapshot
|
||||
cp -rp $BUILDDIR/demo $INSTALLDIR/demo
|
||||
cp -rp $BUILDDIR/packages $INSTALLDIR/packages
|
||||
fi
|
||||
#
|
||||
# Test demos
|
||||
#
|
||||
if [ -z "$SKIPDEMO" ]; then
|
||||
header Build demos in $snvdir/demo without webcompiler
|
||||
cd "$BUILDDIR/demo"
|
||||
make SKIPWEBCOMPILER=1 P2JS=$BINDIR/pas2js
|
||||
|
||||
header Build webcompiler in demos dir
|
||||
cd "$BUILDDIR/demo"
|
||||
make demowebcompiler P2JS=$BINDIR/pas2js
|
||||
fi
|
||||
|
||||
if [ -z "$SNAPSHOT" ]; then
|
||||
header That\'s all folks!
|
||||
exit;
|
||||
fi
|
||||
|
||||
header Building snapshot
|
||||
cd $BINDIR
|
||||
info Creating config file
|
||||
cat > pas2js.cfg << EOC
|
||||
# Logo and options
|
||||
-l
|
||||
-vwnh
|
||||
# If you don't want so much verbosity use
|
||||
#-vw
|
||||
|
||||
# Allow C-operators
|
||||
-Sc
|
||||
|
||||
-Fu\$CfgDir/../packages/*
|
||||
|
||||
#IFDEF nodejs
|
||||
-Jirtl.js
|
||||
#ENDIF
|
||||
EOC
|
||||
cd $OUTDIR
|
||||
BASENAME=pas2js-snapshot
|
||||
SUFFIX=$SNAPSHOT-$SNAPSHOTOS-$FPCCPU
|
||||
ZIPFILE=$BUILDDIR/$BASENAME-$SUFFIX.zip
|
||||
TSFILE=$BUILDDIR/$BASENAME-$SUFFIX-date.txt
|
||||
MDFILE=$BUILDDIR/$BASENAME-$SUFFIX.md5
|
||||
info Creating zip file $ZIPFILE
|
||||
zip -qr $ZIPFILE $SNAPSHOTDIR
|
||||
cd $BUILDDIR
|
||||
md5sum -b $ZIPFILE > $MDFILE
|
||||
date > $TSFILE
|
||||
info "Zip file: " $ZIPFILE
|
||||
info "Timestamp file: " $TSFILE
|
||||
info "Checksum file: " $MDFILE
|
Loading…
Reference in New Issue
Block a user