#!/bin/sh
# --gcc=...
# --icpc=...
# --with-mcstl
# --with-pmode
# --with-explicit-pmode
# --with-extraflags=...
# --with-werror
# --with-boost
# --with-tpie
# --with-leda
# --without-btree
# --without-unittest
# --with-debug=...
MODE=false
GCC=false
ICPC=false
MAKE=make
MCSTL=
PMODE=
EXPLICIT_PMODE=no
USE_BOOST=no
USE_MACOSX=no
USE_FREEBSD=no
WITH_BTREE=yes
WITH_TPIE=no
WITH_LEDASM=no
WITH_UNITTEST=yes
STXXL_WERROR=
STXXL_EXTRA=
STXXL_DEBUG=
###########################################################################
case "`uname -s`" in
Darwin)
USE_MACOSX=yes
MAKE=gmake
;;
FreeBSD)
USE_FREEBSD=yes
MAKE=gmake
;;
esac
TEMP=`getopt --longoptions gcc:,icpc:,with-mcstl,with-pmode,with-explicit-pmode,with-extraflags:,with-werror,with-boost,with-tpie,with-ledasm,without-btree,without-unittest,with-debug: -- --foo "$@"`
if [ $? != 0 ] ; then echo "getopt failed" >&2 ; exit 1 ; fi
eval set -- "$TEMP"
while true ; do
case "$1" in
--gcc)
MODE=g++
GCC="$2"
shift 2
;;
--icpc)
MODE=icpc
ICPC="$2"
shift 2
;;
--with-mcstl)
MCSTL=mcstl
shift
;;
--with-pmode)
PMODE=pmode
shift
;;
--with-explicit-pmode)
EXPLICIT_PMODE=yes
shift
;;
--with-extraflags)
STXXL_EXTRA="$2"
shift 2
;;
--with-werror)
STXXL_WERROR=-Werror
shift
;;
--with-boost)
USE_BOOST=yes
shift
;;
--with-tpie)
WITH_TPIE=yes
shift
;;
--with-ledasm)
WITH_LEDASM=yes
shift
;;
--without-btree)
WITH_BTREE=no
shift
;;
--without-unittest)
WITH_UNITTEST=no
shift
;;
--with-debug)
STXXL_DEBUG="$2"
shift 2
;;
--) shift ; break ;;
*) echo "Internal error!" ; exit 1 ;;
esac
done
if [ "$MODE" = "false" ]; then
echo "Missing mandatory --gcc=... or --icpc=... parameter" 1>&2
exit 1
fi
cat > make.settings.local.tmp << EOF
MODE = $MODE
COMPILER_GCC = $GCC
COMPILER_ICPC = $ICPC
#STXXL_ROOT = `pwd`
MCSTL_ROOT = \$(HOME)/work/mcstl
TPIE_ROOT = \$(HOME)/work/lib/\$(UNAME_M)/tpie
NICE =
USE_PARALLEL_MODE= $EXPLICIT_PMODE
PMODE =$PMODE
MCSTL =$MCSTL
USE_BOOST = $USE_BOOST
USE_MACOSX = $USE_MACOSX
USE_FREEBSD = $USE_FREEBSD
ENABLE_BTREE = $WITH_BTREE
ENABLE_BDB = yes
ENABLE_TPIE = $WITH_TPIE
ENABLE_LEDASM = $WITH_LEDASM
ENABLE_UNITTEST = $WITH_UNITTEST
ENABLE_LONG_COMPILE = yes
DEBUG = $STXXL_DEBUG
WARNINGS_EXTRA = $STXXL_WERROR
STXXL_EXTRA =
STXXL_EXTRA += -DSTXXL_IO_STATS_RESET_FORBIDDEN
STXXL_EXTRA += $STXXL_EXTRA
EOF
if ! cmp -s make.settings.local.tmp make.settings.local ; then
test ! -f make.settings.local || mv make.settings.local make.settings.local.old
mv make.settings.local.tmp make.settings.local
else
rm -f make.settings.local.tmp
fi
test ! -f GNUmakefile || mv GNUmakefile GNUmakefile.old
$MAKE -f GNUmakefile.mk GNUmakefile
if [ -f GNUmakefile.old ] ; then
if cmp -s GNUmakefile GNUmakefile.old ; then
mv GNUmakefile.old GNUmakefile
else
rm -f GNUmakefile.old
fi
fi
echo "#####################################################################"
cat make.settings.local
echo "#####################################################################"
$GCC -v || true
$ICPC -V || true
echo "#####################################################################"