#!/bin/bash -x

export TOP=`pwd`
export OBJECT_MODE=64
export BASSI=$HOME/bassi
#export PETSC_DIR=$HOME/bassi/petsc-2.3.3-p8
#export PETSC_ARCH=aix5.1.0.0-64

#export PETSC_DIR=/usr/common/acts/PETSc/2.3.3
#export PETSC_ARCH=rs6000_64_O


export PATH=$TOP/tau2/ibm64/bin:$PATH
export TAU_MAKEFILE=$TOP/tau2/include/Makefile
export TAU_OPTIONS="-optVerbose -optKeepFiles -optDisableHeaderInst -optTauSelectFile=$TOP/select.tau -optPdtGnuFortranParser -optPreProcess"

# module load gnu xlc xlf hdf5_par_64 petsc/2.3.3 python/2.4.2 superlu/3.0_64
# PATH=/usr/common/homes/c/cary/aix5.3/bin/:$PATH


REPO="http://www.nic.uoregon.edu/~amorris/regression"


clean()
{
    rm -rf src facets facets-parallel fctests tau2 pdtoolkit txbase fmcfm bhssolver
    mkdir src
}


build_tau(){
    cd $TOP
    gtar -xzf tau2.tar.gz
    gtar -xzf pdtoolkit.tar.gz
    
    cd $TOP/pdtoolkit
    ./configure -arch=ibm64
    make install -j4
    
    cd $TOP/tau2
    ./configure -arch=ibm64 -mpi -pdt=$TOP/pdtoolkit -useropt=-O3
#    ./configure -arch=ibm64 -mpi -pdt=$TOP/pdtoolkit -useropt=-O3 -TRACE -PROFILE -papi=/usr/common/usg/papi/3.5.0 -PAPIWALLCLOCK
    make clean install -j
}

grab()
{
    cd $TOP
    rm -f *.tar.gz
    wget --quiet $REPO/checkouts/facetsall.tar.gz
    wget --quiet $REPO/checkouts/txbase.tar.gz
    wget --quiet $REPO/checkouts/tau2.tar.gz
    wget --quiet $REPO/checkouts/pdtoolkit.tar.gz
    tar -xzf facetsall.tar.gz
    cd $TOP/facetsall/physics/fmcfm
    ./config/cleanconf.sh
    cd $TOP/facetsall/physics/fmcfm-0_9
    ./config/cleanconf.sh
    cd $TOP/facetsall/physics/bhssolver
    ./config/cleanconf.sh
    cd $TOP/facetsall/physics/facets
    ./config/cleanconf.sh
}


build_fmcfm()
{
    cd $TOP/facetsall/physics/fmcfm
    mkdir build
    cd build
#     ../configure --prefix=$TOP/fmcfm CXX=xlC_r CC=xlc_r F77=xlf95_r FC=xlf95_r --enable-fulloptimize --disable-shared --enable-static --enable-gyro --enable-parallel
    ../configure --prefix=$TOP/fmcfm --enable-parallel --disable-shared --enable-gyro LAPACK_LIBS=/usr/common/usg/LAPACK/3.1.1/liblapack.a --with-blas=-lessl 
    make install

    if [ -d $TOP/fmcfm ] ; then
	echo "FMCFM build succeeded"
    else
	echo -e "From: Bassi <none@none.com>\nSubject: Build FAILED (at FMCFM)!" | sendmail amorris@cs.uoregon.edu
	exit
    fi
}

build_fmcfm_0_9()
{
    cd $TOP/facetsall/physics/fmcfm-0_9
    mkdir build
    cd build
    ../configure --prefix=$TOP/fmcfm-0_9 CXX=xlC_r CC=xlc_r F77=xlf95_r FC=xlf95_r --enable-fulloptimize --disable-shared --enable-static
    make install

    if [ -d $TOP/fmcfm-0_9 ] ; then
	echo "FMCFM-0_9 build succeeded"
    else
	echo -e "From: Bassi <none@none.com>\nSubject: Build FAILED (at FMCFM-0_9)!" | sendmail amorris@cs.uoregon.edu
	exit
    fi
}

build_bhssolver()
{
    cd $TOP/facetsall/physics/bhssolver
    mkdir build
    cd build
    ../configure --prefix=$TOP/bhssolver --with-lapack=$BASSI/LAPACK/3.0/liblapack.a --with-superlu_seq-libdir=$BASSI/SuperLU/SuperLU_3.0_64/lib --with-superlu_seq-incdir=$BASSI/SuperLU/SuperLU_3.0_64/SRC LDFLAGS="-lessl" CC=xlc_r CXX=xlC_r F77=xlf_r FC=xlf95_r --disable-shared --enable-static
    make install
}

build_txbase()
{
    cd $TOP/src
    rm -rf txbase txbase-build
    tar xzf ../txbase.tar.gz
    cd txbase
    ./config/cleanconf.sh
    cd $TOP/src
    mkdir txbase-build
    cd txbase-build
    ../txbase/configure --prefix=$TOP/txbase CC=xlc_r CXX=xlC_r --disable-shared --enable-static
    make install
}

build_facets_tau()
{
    cd $TOP
    ln -s facetsall/physics/facets .
    ln -s facetsall/physics/fctests .
    mkdir facets-parallel
    cd facets-parallel

#    ../facets/configure --with-bhssolver-dir=$TOP/bhssolver --with-fmcfm-dir=$TOP/fmcfm --with-fmcfm-libdir=$TOP/fmcfm/lib/xlf_r --with-fmcfm_0_9-dir=$TOP/fmcfm-0_9 --with-fmcfm_0_9-libdir=$TOP/fmcfm-0_9/lib/xlf_r --with-petsc-dir=/project/projectdirs/facets/bassi/contrib/petscmpi --with-lapack=/usr/common/usg/LAPACK/3.1.1/liblapack.a --with-superlu_seq-libdir=$BASSI/SuperLU/SuperLU_3.0_64/lib --with-superlu_seq-incdir=$BASSI/SuperLU/SuperLU_3.0_64/SRC LDFLAGS=-lessl --with-hdf5-dir=$BASSI/hdf5/64/1.6.4/parallel --with-txbase-dir=$TOP/txbase  --with-petsc-arch=aix5.3.0.0-c-opt --with-hypre-dir=/usr/common/acts/Hypre/2.0.0/src/rs6000_64_O --with-tau-cxx --with-tau-makefile=$TOP/tau2/ibm64/lib/Makefile.tau-mpi-pdt BLAS_LIBS=-lessl --with-babel-static-dir=/project/projectdirs/facets/bassi/contrib/babel-static

#    ../facets/configure --with-supra-search-path=/project/projectdirs/facets/bassi/internal:/project/projectdirs/facets/bassi/contrib CC=mpcc_r CXX=mpCC_r FC=mpxlf95_r F77=mpxlf_r --with-lapack=/usr/common/usg/LAPACK/3.1.1/lapack_RS6K.a --with-blas=-lessl --with-tau-makefile=$TOP/tau2/ibm64/lib/Makefile.tau-mpi-pdt --with-tau-cxx

# added --disable-transpphage to fix illegal instruction
    ../facets/configure --with-supra-search-path=/project/projectdirs/facets/bassi/internal:/project/projectdirs/facets/bassi/contrib CC=mpcc_r CXX=mpCC_r FC=mpxlf95_r F77=mpxlf_r --with-lapack=/usr/common/usg/LAPACK/3.1.1/lapack_RS6K.a --with-blas=-lessl --with-tau-makefile=$TOP/tau2/ibm64/lib/Makefile.tau-mpi-pdt --with-tau-cxx --disable-transpphage

    make
}

run()
{
    cd $TOP/fctests/tests/core-astra-verif
    ../../txutils/txpp.py core-astra-verif.pre NCELL=256
    LOC=$REPO/apps/facets/bassi
    for i in 1 2 4 8 16 32 64 128 ; do wget $LOC/alan$i.sh ; done
    wget $LOC/alan-common.sh    
    chmod +x alan-common.sh
#    poe $TOP/facets-parallel/facets/facets -shared_memory no -procs 16 -i glf2.pre -o glf.out
    if [ -f $TOP/facets-parallel/facets/facets ] ; then
	echo -e "From: Bassi <none@none.com>\nSubject: Build Succeeded!" | sendmail amorris@cs.uoregon.edu
	echo "TOP=$TOP" > .env
	for i in 1 2 4 8 16 32 64 128 ; do llsubmit alan$i.sh ; done
    else
	echo -e "From: Bassi <none@none.com>\nSubject: Build FAILED!" | sendmail amorris@cs.uoregon.edu
    fi
}

go()
{
    clean
    grab
    build_tau
#    build_bhssolver
#    build_txbase
#    build_fmcfm
#    build_fmcfm_0_9
    build_facets_tau
    run
}

(time go 2>&1) 2>&1 | tee go.log


