Forked from
Sbalzarini Lab / Software / Parallel Computing / OpenFPM / openfpm_pdata
3699 commits behind the upstream repository.
-
Pietro Incardona authoredPietro Incardona authored
install 7.12 KiB
#! /bin/bash
source script/help
source script/discover_os
source script/show_solutions
source script/pre_req
##
install_req=1
i_dir=" "
sq=0
while getopts :di:shc: FLAG; do
case $FLAG in
d)
echo "Disable depencencies installation"
install_req=0
;;
i)
echo "Setting dependencies installation dir: $OPTARG"
i_dir=$OPTARG
;;
s)
echo "Skipping user cin"
sq=1
;;
c)
echo "Fowarding options $OPTARG to configure script"
configure_options=$OPTARG
;;
h) #show help
HELP
;;
\?) #unrecognized option - are fowarded to configure
;;
esac
done
discover_os
## Check and try to install the prerequisites
pre_req
## clone the dependencies
git submodule init
if [ $? -ne 0 ]; then
echo -e "Configure\033[91;5;1m FAILED \033[0m"
exit 1
fi
git submodule update
if [ $? -ne 0 ]; then
echo -e "Configure\033[91;5;1m FAILED \033[0m"
exit 1
fi
# Create config directory in each submodule
cd openfpm_data
if [ ! -d src/config ]; then
mkdir src/config
fi
git checkout develop
cd ..
cd openfpm_devices
if [ ! -d src/config ]; then
mkdir src/config
fi
cd ..
cd openfpm_vcluster
if [ ! -d src/config ]; then
mkdir src/config
fi
cd ..
cd openfpm_io
if [ ! -d src/config ]; then
mkdir src/config
fi
cd ..
# Create config directory
if [ ! -d src/config ]; then
mkdir src/config
fi
## generate configure script
sh ./autogen.sh
if [ $? -ne 0 ]; then
echo -e "Configure\033[91;5;1m FAILED \033[0m"
exit 1
fi
## check for options
if [ x"$i_dir" == x" " ]; then
i_dir="$HOME"
fi
echo -e "\033[1;34;5mDEPENCENCIES INSTALLATION DIR \033[0m"
echo -e "Every required dependencies if needed will be installed into: \033[1;34;5m$i_dir\033[0m"
echo -e "if you want to install somewhere else do ./install -i /somewhere/else"
if [ $sq -eq 0 ]; then
commands[0]="Continue"
possible_solutions "${commands[@]}"
fi
echo -e "Installing requirements into: $i_dir "
##
## Take all the options with the exception of -d -i -s
## call the configure script
MPI_installed=0
METIS_installed=0
BOOST_installed=0
conf_err=1
## MPI
command -v mpic++ >/dev/null 2>&1
if [ $? -eq 0 ]; then
options="CXX=mpic++"
fi
## if a new compiler has been installed reinstall all the dependencies
if [ x"$compiler_opt" != x"" ]; then
./script/install_MPI.sh $i_dir $compiler_opt
export PATH="$PATH:$i_dir/MPI/bin"
configure_options="$configure_options CXX=mpic++ "
MPI_installed=1
./script/install_BOOST.sh $i_dir $compiler_opt
configure_options=" $configure_options --with-boost=$i_dir/BOOST "
BOOST_installed=1
./script/install_METIS.sh $i_dir $compiler_gcc $compiler_gpp
configure_options=" $configure_options --with-metis=$i_dir/METIS "
METIS_installed=1
fi
echo "./configure $options $configure_options"
if [ $install_req -eq 0 ]; then
./configure $options $configure_options
else
while [ $conf_err -ne 0 ]
do
./configure $options $configure_options
conf_err=$?
echo "Configure script terminated with $conf_err"
## if MPI or METIS installation required install it
if [ $conf_err -eq 200 ]; then
echo "MPI not found try to install, $MPI_installed"
if [ $MPI_installed -eq 1 ]; then
echo "Error the installation of MPI failed"
exit 1
fi
./script/install_MPI.sh $i_dir $compiler_opt
MPI_installed=1
export PATH="$PATH:$i_dir/MPI/bin"
configure_options="$configure_options CXX=mpic++ "
elif [ $conf_err -eq 201 ]; then
echo "Metis not found try to install"
if [ $METIS_installed -eq 1 ]; then
echo "Error the installation of METIS failed"
exit 1
fi
./script/install_Metis.sh $i_dir $compiler_gcc $compiler_gpp
METIS_installed=1
configure_options=" $configure_options --with-metis=$i_dir/METIS "
elif [ $conf_err -eq 202 ]; then
echo "Boost not found try to install"
if [ $BOOST_installed -eq 1 ]; then
echo "Error the installation of Boost failed"
exit 1
fi
./script/install_BOOST.sh $i_dir $compiler_opt
BOOST_installed=1
configure_options=" $configure_options --with-boost=$i_dir/BOOST "
elif [ $conf_err -ne 0 ]; then
echo "I do not know how to recover from this error"
exit 1
fi
done
fi
### Create example.mk
install_base=$(cat install_dir)
echo "INCLUDE_PATH=-I. -I$install_base/openfpm_pdata/include/config -I$install_base/openfpm_pdata/include -I$install_base/openfpm_data/include -I$install_base/openfpm_vcluster/include -I$install_base/openfpm_io/include -I$install_base/openfpm_devices/include -I$i_dir/METIS/include -I$i_dir/BOOST/include" > example.mk
echo "LIBS_PATH=-L$install_base/openfpm_devices/lib -L$install_base/openfpm_vcluster/lib -L$i_dir/METIS/lib -L$i_dir/BOOST/lib " >> example.mk
echo "LIBS=-lvcluster -lofpmmemory -lmetis -lboost_iostreams" >> example.mk
cp example.mk src/example.mk
cp example.mk example/example.mk
make clean
make
if [ $? -ne 0 ]; then
conf_err=1
fi
echo ""
echo ""
if [ $conf_err -eq 0 ]; then
echo -e "Install\033[92;5;1m SUCCEED \033[0m"
else
echo -e "Install\033[91;5;1m FAILED \033[0m"
fi
echo "Command used to configure"
echo ""
echo -e "\033[1m ./configure $options $configure_options \033[0m "
echo ""
if [ $MPI_installed -eq 1 ]; then
echo -e "\033[1;34;5m --------------------------------------- \033[0m"
echo -e "\033[1;34;5m ----------------- MPI ----------------- \033[0m"
echo -e " MPI has been installed into: \033[1m $i_dir/MPI \033[0m"
echo ""
if [ x"$platform" = x"linux" ]; then
echo -e "\033[1m export PATH=\"\$PATH:$i_dir/MPI/bin \" \033[0m "
echo -e "\033[1m export LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH:$i_dir/MPI/lib\" \033[0m "
else
echo -e "\033[1m export PATH=\"\$PATH:$i_dir/MPI/bin \" \033[0m "
echo -e "\033[1m export DYLD_LIBRARY_PATH=\"\$DYLD_LIBRARY_PATH:$i_dir/MPI/lib\" \033[0m"
fi
fi
if [ $METIS_installed -eq 1 ]; then
echo ""
echo -e "\033[1;34;5m --------------------------------------- \033[0m"
echo -e "\033[1;34;5m ---------------- METIS ---------------- \033[0m"
echo -e " METIS has been installed into: \033[1m $i_dir/METIS \033[0m"
echo ""
if [ x"$platform" = x"linux" ]; then
echo -e "\033[1m export LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH:$i_dir/METIS/lib\" \033[0m "
else
echo -e "\033[1m export DYLD_LIBRARY_PATH=\"\$DYLD_LIBRARY_PATH:$i_dir/METIS/lib\" \033[0m"
fi
fi
if [ $BOOST_installed -eq 1 ]; then
echo ""
echo -e "\033[1;34;5m --------------------------------------- \033[0m"
echo -e "\033[1;34;5m ---------------- BOOST ---------------- \033[0m"
echo -e " BOOST has been installed into: \033[1m $i_dir/BOOST \033[0m"
echo ""
if [ x"$platform" = x"linux" ]; then
echo -e "\033[1m export LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH:$i_dir/BOOST/lib\" \033[0m "
else
echo -e "\033[1m export DYLD_LIBRARY_PATH=\"\$DYLD_LIBRARY_PATH:$i_dir/BOOST/lib\" \033[0m"
fi
fi
echo ""
echo ""
if [ $conf_err -ne 0 ]; then
exit 1
fi