#!/bin/bash
export LC_ALL=C

echo "This script downloads and builds source-level code dependencies (petsc), and configures the build directory with cmake."
echo "Takes one parameter : the source directory"

PETSC_VERSION=3.20.0
PETSC_ARCH=linux-gnu-c

__DIR=`pwd`
__SRC=$1

PETSC_DIR=$__DIR/petsc-$PETSC_VERSION

export PETSC_DIR
export PETSC_ARCH

echo $PETSC_DIR

if [ ! -d petsc-$PETSC_VERSION ];
then
if [ ! -f petsc-lite-$PETSC_VERSION.tar.gz ];
then
echo "Getting petsc"
wget https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-lite-$PETSC_VERSION.tar.gz
fi
tar -zxf petsc-lite-$PETSC_VERSION.tar.gz
fi
cd petsc-$PETSC_VERSION
echo "Building petsc PETSC_ARCH=$PETSC_ARCH in PETSC_DIR=$PETSC_DIR"
./configure --with-debugging=0 --download-mumps-serial=yes --with-mpi=0 --with-pic --with-fpic --with-shared-libraries=1 --known-mpi-shared-libraries=0 --download-superlu=yes --with-scalar-type=complex COPTFLAGS='-O3 -march=native -mtune=native' CXXOPTFLAGS='-O3 -march=native -mtune=native' FOPTFLAGS='-O3 -march=native -mtune=native'  CUDAOPTFLAGS='-O3' nPETSC_DIR=$__DIR/petsc-$PETSC_VERSION PETSC_ARCH=linux-gnu-c && make PETSC_DIR=$__DIR/petsc-$PETSC_VERSION PETSC_ARCH=linux-gnu-c all
cd $__DIR
cmake $__SRC -DENABLE_3M=OFF -DENABLE_ALGLIB=OFF -DENABLE_ANN=ON -DENABLE_BAMG=OFF -DENABLE_BLAS_LAPACK=OFF -DENABLE_BLOSSOM=OFF -DENABLE_BUILD_ANDROID=OFF -DENABLE_BUILD_DYNAMIC=OFF -DENABLE_BUILD_IOS=OFF -DENABLE_BUILD_LIB=OFF -DENABLE_BUILD_SHARED=ON -DENABLE_CAIRO=OFF -DENABLE_CGNS=OFF -DENABLE_CGNS_CPEX0045=OFF -DENABLE_DINTEGRATION=ON -DENABLE_DOMHEX=OFF -DENABLE_EIGEN=ON -DENABLE_FLTK=OFF -DENABLE_GEOMETRYCENTRAL=OFF -DENABLE_GETDP=OFF -DENABLE_GMM=ON -DENABLE_GMP=OFF -DENABLE_GRAPHICS=OFF -DENABLE_HXT=OFF -DENABLE_KBIPACK=OFF -DENABLE_MATHEX=ON  -DENABLE_MED=OFF -DENABLE_MESH=OFF -DENABLE_METIS=OFF -DENABLE_MMG=OFF -DENABLE_MPEG_ENCODE=OFF -DENABLE_MPI=OFF -DENABLE_MSVC_STATIC_RUNTIME=OFF -DENABLE_MUMPS=OFF -DENABLE_NETGEN=OFF -DENABLE_NUMPY=OFF -DENABLE_OBJ_LOADER=OFF -DENABLE_OCC=ON  -DENABLE_OCC_CAF=ON -DENABLE_OCC_STATIC=OFF -DENABLE_OCC_TBB=OFF -DENABLE_ONELAB=OFF -DENABLE_ONELAB_METAMODEL=OFF -DENABLE_OPENACC=OFF -DENABLE_OPENMP=ON -DENABLE_OPTHOM=OFF -DENABLE_OSMESA=OFF -DENABLE_OS_SPECIFIC_INSTALL=OFF -DENABLE_P4EST=OFF -DENABLE_PACKAGE_STRIP=OFF -DENABLE_PARSER=OFF -DENABLE_PETSC=ON -DENABLE_PETSC4PY=OFF -DENABLE_PLUGINS=OFF -DENABLE_POPPLER=OFF -DENABLE_POST=ON -DENABLE_PRIVATE_API=ON -DENABLE_PRO=OFF -DENABLE_PROFILE=OFF -DENABLE_QUADMESHINGTOOLS=OFF -DENABLE_QUADTRI=OFF -DENABLE_REVOROPT=OFF -DENABLE_RPATH=ON -DENABLE_SLEPC=ON -DENABLE_SOLVER=ON -DENABLE_SYSTEM_CONTRIB=OFF -DENABLE_TCMALLOC=OFF -DENABLE_TESTS=ON -DENABLE_TOUCHBAR=OFF -DENABLE_VISUDEV=OFF -DENABLE_VOROPP=OFF -DENABLE_VTK_INTERFACE=OFF -DENABLE_WINSLOWUNTANGLER=OFF -DENABLE_WRAP_JAVA=OFF -DENABLE_WRAP_PYTHON=OFF -DENABLE_ZIPPER=OFF -DGENFEM_ENABLE_CUTMESH=ON

echo "Set the following environment variables in your .bashrc (local) or in /etc/environment (system wide) :"
echo "export PETSC_ARCH=$PETSC_ARCH"
echo "export PETSC_DIR=$PETSC_DIR"
echo "and copy the file $__SRC/.petscrc to your home directory."
echo "Do it for you (y/n)"
read REPLY
echo
if [ "$REPLY" =  "y" ] || [ "$REPLY" =  "Y" ] ;
then
echo "Modify /etc/environnment (need root access) (y) or .bashrc (n)"
read REPLY
echo
if [ "$REPLY" =  "y" ] || [ "$REPLY" =  "Y" ] ;
then
echo
sudo sed -i -n -e '/^PETSC_ARCH=/!p' -e "\$aPETSC_ARCH=$PETSC_ARCH" /etc/environment
sudo sed -i -n -e '/^PETSC_DIR=/!p' -e "\$aPETSC_DIR=$PETSC_DIR" /etc/environment
else
sed -i -n -e '/^PETSC_ARCH=/!p' -e "\$aexport PETSC_ARCH=$PETSC_ARCH" ~/.bashrc
sed -i -n -e '/^PETSC_DIR=/!p' -e "\$aexport PETSC_DIR=$PETSC_DIR" ~/.bashrc
fi
cp $__SRC/.petscrc ~
fi
