#!/bin/sh

# the root of all, but using it is optional.
CROSSTOOLSROOT=~/building

CROSSTOOLSROOT=${CROSSTOOLSROOT%/}/

# Some paths.

# place where the 1.1.x CVS checkout is
FPCCVS=${CROSSTOOLSROOT}cvs/devel/fpc

# place where the script should store the cross-snapshot
DESTDIR=${CROSSTOOLSROOT}/destination

# place where cross archives (.a files) are stored
BASELIBDIR=${CROSSTOOLSROOT}crosslibs

# Place where logs are generated.
LOGDIR=${CROSSTOOLSROOT}logs

# Type of my mainprocessor.
MYINTEL=i686

EXTRAOPT=-gl

# OSes and CPUs
TARGETS_OS="linux freebsd linux  win32 go32v2 netbsd openbsd solaris darwin"
TARGETS_CPU="i386 powerpc sparc"

###########################################################################
# don't edit below
#
#
#
#

MYHOSTARCH=`uname -p | tr "[:upper:]" "[:lower:]"`
MYHOSTOS=`uname -s | tr "[:upper:]" "[:lower:]"`
echo HOST platform is ${MYHOSTARCH}-${MYHOSTOS}

#
#
# force slash
#

FPCCVS=${FPCCVS%/}/
DESTDIR=${DESTDIR%/}/
LOGDIR=${LOGDIR%/}/
BASELIBDIR=${BASELIBDIR%/}/

#
# BSD? -> ${MAKE}
#

MAKE=make

case "$MYHOSTOS" in
 *BSD*) MAKE=gmake
  ;;
 *bsd*) MAKE=gmake  
  ;;
esac

#
# Setup dirs
#

mkdir -p ${DESTDIR}
mkdir -p ${LOGDIR}

#
# Real build starts here
#

cd ${FPCCVS}

FAILURES=""

for CPU in $TARGETS_CPU; do

# CPU xlat. translate from FPC cpu designation to binutil's;

MCPU=${CPU}
if [ "${CPU}" = "i386" ]; then
MCPU=${MYINTEL}
fi

for OS in $TARGETS_OS; do

# xlat for OS

MOS=${OS}
if [ "${OS}" = "sunos" ]; then
MOS=solaris
fi

if [ "${OS}" = "win32" ]; then
MOS=cygwin
fi

if [ "${OS}" = "go32v2" ]; then
MOS=msdosdjgpp
fi

dothisbuild=1
if [ "${CPU}" = "${MYHOSTARCH}" ]; then
if [ "${OS}" = "${MYHOSTOS}" ]; then
dothisbuild=0
fi
fi

if [ $dothisbuild -eq 1 ]; then
echo Building ${CPU}-${OS}
if [  -f ${CROSSTOOLSROOT}bin/${MCPU}-${MOS}-as ]; then
${MAKE} clean all LIBDIR=${BASELIBDIR}/${MCPU}-${MOS} CROSSBINDIR=${CROSSTOOLSROOT}bin OS_TARGET=${OS} CPU_TARGET=${CPU} BINUTILSPREFIX=${MCPU}-${MOS}- OPT="-Xd -Xt ${EXTRAOPT}" > ${LOGDIR}snapbuild-${CPU}-${OS} 2>&1
else
echo can''t find binutils-${MCPU}-${OS} for FPC-${CPU}-${OS}
fi
if [ ! $? = 0 ]; then
echo ${CPU}-${OS} FAILES
FAILURES="${FAILURES} ${CPU}-${OS}"
else
mkdir -p ${DESTDIR}
${MAKE} install INSTALL_PREFIX=${DESTDIR} LIBDIR=${BASELIBDIR}/${MCPU}-${MOS}  CROSSBINDIR=${CROSSTOOLSROOT}bin OS_TARGET=${OS} CPU_TARGET=${CPU} BINUTILSPREFIX=${MCPU}-${MOS}- OPT="-Xd -Xt ${EXTRAOPT}" > ${LOGDIR}snapinstalllog-${CPU}-${OS} 2>&1
fi
fi
done;
done;

if [ -n ${FAILURES} ]; then
echo platforms failed: ${FAILURES}
fi

