Commit 134899c4 authored by Praetorius, Simon's avatar Praetorius, Simon

cleanup of gitlab-ci build scripts and user configure script

parent b8063b9f
#!/bin/bash
AMDIS_VERSION="1.1"
BUILD_DIR=$( pwd )
SRC_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
# default parameters
INSTALL_PREFIX="/usr/local"
DEBUG="0"
VERBOSE="OFF"
ENABLE_EXTENSIONS="OFF"
ENABLE_UMFPACK="OFF"
ENABLE_COMPRESSION="OFF"
ENABLE_PARALLEL="OFF"
BOOST_PREFIX="${BOOST_ROOT}"
DOWNLOAD_BOOST="0"
BOOST_VERSION="1.62.0"
PETSC_PREFIX="${PETSC_DIR}"
DOWNLOAD_PETSC="0"
PETSC_VERSION="3.5.4"
PARMETIS_PREFIX=""
ZOLTAN_PREFIX=""
DOWNLOAD_ZOLTAN="0"
ZOLTAN_VERSION="3.83"
# a help message
help() {
cat << EOF
$(basename "$0") configures AMDiS, by calling the corresponding cmake commands.
Usage: $(basename "$0") [OPTION]... [VAR=VALUE]...
Defaults for the options are specified in brackets.
Configuration:
-h, --help Display this help and exit.
-V, --version Display version information of AMDiS and exit.
Installation directories:
--prefix=PREFIX Install files in PREFIX [${INSTALL_PREFIX}]
By default, 'make install' will install all the files in
'${INSTALL_PREFIX}/lib', '${INSTALL_PREFIX}/include' and '${INSTALL_PREFIX}/share'.
You can specify an installation prefix other than '${INSTALL_PREFIX}' using '--prefix',
for instance '--prefix=${HOME}/amdis'.
Compile parameters:
--debug Compile without optimization and with debug information.
-v, --verbose Show additional information during the compile process.
Optional Features:
--enable-extensions Compile and install sources from the extensions folder.
--enable-compression Compile with support for output compression. This
requires boost-iostreams with enabled ZLib and libbz2
support.
--enable-parallel Compile the parallel version of AMDiS. Needs PETSc and
Parmetis. (see --with-petsc, --with-parmetis)
Optional Packages:
--with-umfpack Adds support for the direct solver UMFPACK.
--with-suitesparse (see --with-umfpack)
--with-boost-dir=DIR Sets the boost root directory. [${BOOST_PREFIX}]
--download-boost Download and install boost to '${SRC_DIR}/packages/boost'.
--with-petsc-dir=DIR Sets the PETSc root directory, i.e. a directory
containing the folders 'lib/', 'include/' with e.g.
'lib/libpetsc.so' [${PETSC_DIR}].
--download-petsc Download and install petsc, version ${PETSC_VERSION},
to '${SRC_DIR}/packages/petsc'.
--with-parmetis-dir=DIR Sets the PARMETIS root directory, i.e. a directory
containing the folders 'lib/', 'include/' with e.g.
'include/parmetis.h' [=PETSC_DIR].
--with-zoltan Add support for the Parallel Partitioning suite Zoltan.
--with-zoltan-dir=DIR Sets the Zoltan root directory, i.e. a directory
containing the folders 'lib/', 'include/' with e.g.
'include/zoltan_cpp.h' [${ZOLTAN_PREFIX}].
--download-zoltan Download and install Zoltan, version ${ZOLTAN_VERSION},
to '${SRC_DIR}/packages/zoltan'.
Report bugs to <amdis.fem@gmail.com>.
EOF
}
# parse command line
if [ $# -gt 0 ]; then
while [[ $1 = -* ]]; do
case "$1" in
-h|-\?|--help)
help
exit ;;
-V|--version)
echo "AMDiS v${AMDIS_VERSION}"
exit ;;
--prefix)
INSTALL_PREFIX="$2"
shift 2 ;;
--prefix=?*)
INSTALL_PREFIX="${1#*=}"
shift ;;
--prefix=)
printf 'ERROR: "--prefix" requires a non-empty option argument.\n' >&2
exit 1 ;;
--debug)
DEBUG="1"
shift ;;
-v|--verbose)
VERBOSE="ON"
shift ;;
--enable-extensions)
ENABLE_EXTENSIONS="ON"
shift ;;
--enable-compression)
ENABLE_COMPRESSION="ON"
shift ;;
--enable-parallel)
ENABLE_PARALLEL="ON"
shift ;;
--with-umfpack|--with-suitesparse)
ENABLE_UMFPACK="ON"
shift ;;
--with-boost-dir)
BOOST_PREFIX="$2"
shift 2 ;;
--with-boost-dir=?*)
BOOST_PREFIX="${1#*=}"
shift ;;
--with-boost-dir=)
printf 'ERROR: "--with-boost-dir" requires a non-empty option argument.\n' >&2
exit 1 ;;
--download-boost)
DOWNLOAD_BOOST="1"
shift ;;
--with-petsc-dir)
PETSC_PREFIX="$2"
shift 2 ;;
--with-petsc-dir=?*)
PETSC_PREFIX="${1#*=}"
shift ;;
--with-petsc-dir=)
printf 'ERROR: "--with-petsc-dir" requires a non-empty option argument.\n' >&2
exit 1 ;;
--download-petsc)
DOWNLOAD_PETSC="1"
shift ;;
--with-parmetis-dir)
PARMETIS_PREFIX="$2"
shift 2 ;;
--with-parmetis-dir=?*)
PARMETIS_PREFIX="${1#*=}"
shift ;;
--with-parmetis-dir=)
printf 'ERROR: "--with-parmetis-dir" requires a non-empty option argument.\n' >&2
exit 1 ;;
--with-zoltan)
ENABLE_ZOLTAN="ON"
shift ;;
--with-zoltan-dir)
ZOLTAN_PREFIX="$2"
shift 2 ;;
--with-zoltan-dir=?*)
ZOLTAN_PREFIX="${1#*=}"
shift ;;
--with-zoltan-dir=)
printf 'ERROR: "--with-zoltan-dir" requires a non-empty option argument.\n' >&2
exit 1 ;;
--download-zoltan)
DOWNLOAD_ZOLTAN="1"
shift ;;
--)
shift
break ;;
-?*)
printf 'WARNING: Unknown option (ignored): %s\n' "$1" >&2
shift ;;
*)
break
esac
done
fi
# Download and install boost
if [ "${DOWNLOAD_BOOST}" -eq "1" ]; then
BOOST_FILENAME="boost_${BOOST_VERSION//[.]/_}.tar.gz"
if [ ! -d /tmp/src/boost ]; then
mkdir -p /tmp/src/boost
curl -SL "http://netcologne.dl.sourceforge.net/project/boost/boost/${BOOST_VERSION}/${BOOST_FILENAME}" \
| tar --strip-components=1 -xzC /tmp/src/boost
fi
BOOST_PREFIX=${SRC_DIR}/packages/boost/${BOOST_VERSION}
cd /tmp/src/boost
./bootstrap.sh --prefix=${BOOST_PREFIX} --with-libraries=system,iostreams,filesystem,program_options,date_time
if [ "${ENABLE_COMPRESSION}" = "ON" ]; then
./b2 -s cxxflags="-std=c++11" --build-type=minimal install
else
./b2 -s NO_BZIP2=1 -s NO_ZLIB=1 cxxflags="-std=c++11" --build-type=minimal install
fi
rm -rf /tmp/src/boost
fi
# Download and install PETSc
if [ "${DOWNLOAD_PETSC}" -eq "1" ]; then
if [ ! -d /tmp/src/petsc ]; then
mkdir -p /tmp/src/petsc
curl -SL "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-${PETSC_VERSION}.tar.gz" \
| tar --strip-components=1 -xzC /tmp/src/petsc
fi
PETSC_PREFIX=${SRC_DIR}/packages/petsc/${PETSC_VERSION}
if [ -n "${PARMETIS_PREFIX}" ]; then
PARMETIS_CONFIG="--with-parmetis-dir=${PARMETIS_PREFIX}"
else
PARMETIS_CONFIG="--download-parmetis=1"
fi
# Install PETSc
cd /tmp/src/petsc
./configure --prefix=${PETSC_PREFIX} --with-pic=1 \
--with-debugging=${DEBUG} --with-clanguage=c++ \
--with-metis=1 --download-metis=yes \
--with-parmetis=1 ${PARMETIS_CONFIG} \
--with-scalapack=1 --download-scalapack=yes \
--with-hypre=1 --download-hypre=yes \
--with-mumps=1 --download-mumps=yes \
--with-fblaslapack=1 --download-fblaslapack=yes
make && make install
rm -rf /tmp/src/petsc
fi
# set parmetis dir, if not already set
if [ -z "${PARMETIS_PREFIX}" ]; then
PARMETIS_PREFIX="${PETSC_PREFIX}"
fi
if [ "${DEBUG}" -eq "0" ]; then
BUILD_TYPE="Release"
CXX_FLAGS="-O3"
else
BUILD_TYPE="Debug"
CXX_FLAGS="-g"
fi
# Download and install Zoltan
if [ "${DOWNLOAD_ZOLTAN}" -eq "1" ]; then
if [ ! -d /tmp/src/zoltan ]; then
mkdir -p /tmp/src/zoltan
curl -SL "http://www.cs.sandia.gov/~kddevin/Zoltan_Distributions/zoltan_distrib_v${ZOLTAN_VERSION}.tar.gz" \
| tar --strip-components=1 -xC /tmp/src/zoltan
fi
ZOLTAN_PREFIX=${SRC_DIR}/packages/zoltan
# Install Zoltan
cd /tmp/src/zoltan
mkdir build && cd build
../configure --prefix=${ZOLTAN_PREFIX} --enable-mpi \
--enable-zoltan-cppdriver \
--with-cxxflags="-std=c++11 -fpic" \
--with-cflags="-fpic" --with-fcflags="-fpic" \
--with-parmetis=yes --with-parmetis-libdir=${PARMETIS_PREFIX}/lib \
--with-parmetis-incdir=${PARMETIS_PREFIX}/include
make && make install
rm -rf /tmp/src/zoltan
fi
if [ -n "${BOOST_PREFIX}" ]; then
BOOST_CONFIG="-DBOOST_ROOT:PATH=${BOOST_PREFIX}"
else
BOOST_CONFIG=""
fi
# Install AMDiS
cd ${BUILD_DIR}
if [ "${ENABLE_PARALLEL}" = "OFF" ]; then
cmake -DUSE_NEW_CMAKE:BOOL=ON \
-DENABLE_UMFPACK:BOOL=${ENABLE_UMFPACK} \
-DCMAKE_BUILD_TYPE:String=${BUILD_TYPE} \
-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_PREFIX} \
-DCMAKE_CXX_FLAGS:STRING="${CXX_FLAGS}" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=${VERBOSE} \
-DENABLE_EXTENSIONS:BOOL=${ENABLE_EXTENSIONS} \
-DENABLE_COMPRESSION:BOOL=${ENABLE_COMPRESSION} ${BOOST_CONFIG} \
${SRC_DIR}/AMDiS/
else
cmake -DUSE_NEW_CMAKE:BOOL=ON \
-DCMAKE_CXX_COMPILER=mpic++ \
-DCMAKE_C_COMPILER=mpicc \
-DCMAKE_BUILD_TYPE:String=${BUILD_TYPE} \
-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_PREFIX} \
-DCMAKE_CXX_FLAGS:STRING="${CXX_FLAGS}" \
-DENABLE_EXTENSIONS:BOOL=${ENABLE_EXTENSIONS} \
-DENABLE_COMPRESSION:BOOL=${ENABLE_COMPRESSION} \
-DENABLE_UMFPACK:BOOL=${ENABLE_UMFPACK} \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=${VERBOSE} \
-DENABLE_PARALLEL_DOMAIN:BOOL=ON \
-DPETSC_DIR:PATH=${PETSC_PREFIX} \
-DENABLE_ZOLTAN:BOOL=${ENABLE_ZOLTAN} \
-DZOLTAN_DIR:PATH=${ZOLTAN_PREFIX} \
-DPARMETIS_DIR:PATH=${PARMETIS_PREFIX} ${BOOST_CONFIG} \
${SRC_DIR}/AMDiS/
fi
if [ "$?" -eq "0" ]; then
echo "Compile and install the code with...
make && make install"
fi
......@@ -10,9 +10,9 @@ if [ "$1" == "Debug" ]; then
fi
# at first build AMDiS
cmake -E remove_directory ${ROOT}/build_${POSTFIX}
cmake -E make_directory ${ROOT}/build_${POSTFIX}
cmake -E chdir ${ROOT}/build_${POSTFIX} cmake \
-DUSE_NEW_CMAKE:BOOL=ON \
-DCMAKE_INSTALL_PREFIX=${ROOT}/install_${POSTFIX} \
-DCMAKE_BUILD_TYPE=${CONFIURATION} \
-DENABLE_CXX11:BOOL=ON \
......@@ -20,10 +20,11 @@ cmake -E chdir ${ROOT}/build_${POSTFIX} cmake \
-DENABLE_UMFPACK:BOOL=OFF \
-DBOOST_ROOT:PATH=${ROOT}/install/boost \
${ROOT}/AMDiS
cmake --build ${ROOT}/build_${POSTFIX} --target install
cmake --build ${ROOT}/build_${POSTFIX} --target install -- -j2
# now build the demos
BASEDIR=${ROOT}/demo
cmake -E remove_directory ${BASEDIR}/build_${POSTFIX}
cmake -E make_directory ${BASEDIR}/build_${POSTFIX}
cmake -E chdir ${BASEDIR}/build_${POSTFIX} cmake \
-DAMDIS_DIR=${ROOT}/install_${POSTFIX}/share/amdis \
......@@ -33,7 +34,8 @@ cmake -E chdir ${BASEDIR}/build_${POSTFIX} cmake \
cmake --build ${BASEDIR}/build_${POSTFIX}
# now build and run the test_suite
BASEDIR=${ROOT}/tools/test_suite
BASEDIR=${ROOT}/test
cmake -E remove_directory ${BASEDIR}/build_${POSTFIX}
cmake -E make_directory ${BASEDIR}/build_${POSTFIX}
cmake -E chdir ${BASEDIR}/build_${POSTFIX} cmake \
-DAMDIS_DIR=${ROOT}/install_${POSTFIX}/share/amdis \
......
......@@ -13,39 +13,38 @@ if [ "$1" == "Debug" ]; then
fi
# at first build AMDiS
cmake -E remove_directory ${ROOT}/build_${POSTFIX}
cmake -E make_directory ${ROOT}/build_${POSTFIX}
cmake -E chdir ${ROOT}/build_${POSTFIX} cmake \
-DUSE_NEW_CMAKE:BOOL=ON \
-DCMAKE_INSTALL_PREFIX=${ROOT}/install_${POSTFIX} \
-DCMAKE_BUILD_TYPE=${CONFIURATION} \
-DENABLE_CXX11:BOOL=ON \
-DENABLE_COMPRESSION:BOOL=OFF \
-DENABLE_UMFPACK:BOOL=OFF \
-DENABLE_PARALLEL_DOMAIN:BOOL=ON \
-DBOOST_ROOT:PATH=${ROOT}/install/boost \
-DPETSC_DIR:PATH=${ROOT}/install/petsc \
-DPETSC_DIR:PATH=/opt/sources/amdis-git/packages/petsc \
${ROOT}/AMDiS
cmake --build ${ROOT}/build_${POSTFIX} --target install
cmake --build ${ROOT}/build_${POSTFIX} --target install -- -j2
# now build the demos
BASEDIR=${ROOT}/demo
cmake -E remove_directory ${BASEDIR}/build_${POSTFIX}
cmake -E make_directory ${BASEDIR}/build_${POSTFIX}
cmake -E chdir ${BASEDIR}/build_${POSTFIX} cmake \
-DAMDIS_DIR=${ROOT}/install_${POSTFIX}/share/amdis \
-DCMAKE_BUILD_TYPE=${CONFIURATION} \
-DBOOST_ROOT:PATH=${ROOT}/install/boost \
-DPETSC_DIR:PATH=${ROOT}/install/petsc \
-DPETSC_DIR:PATH=/opt/sources/amdis-git/packages/petsc \
${BASEDIR}
cmake --build ${BASEDIR}/build_${POSTFIX}
# now build and run the test_suite
BASEDIR=${ROOT}/tools/test_suite
BASEDIR=${ROOT}/tests
cmake -E remove_directory ${BASEDIR}/build_${POSTFIX}
cmake -E make_directory ${BASEDIR}/build_${POSTFIX}
cmake -E chdir ${BASEDIR}/build_${POSTFIX} cmake \
-DAMDIS_DIR=${ROOT}/install_${POSTFIX}/share/amdis \
-DCMAKE_BUILD_TYPE=${CONFIURATION} \
-DBOOST_ROOT:PATH=${ROOT}/install/boost \
-DPETSC_DIR:PATH=${ROOT}/install/petsc \
-DPETSC_DIR:PATH=/opt/sources/amdis-git/packages/petsc \
${BASEDIR}
cmake --build ${BASEDIR}/build_${POSTFIX}
cmake --build ${BASEDIR}/build_${POSTFIX} --target test
......@@ -8,17 +8,27 @@ ROOT=${PWD}
if [ ! -d install/ ]; then
mkdir -p install
fi
INSTALL_PREFIX=${ROOT}/install
cd install
BOOST_VERSION="1.62.0"
BOOST_FILENAME="boost_${BOOST_VERSION//[.]/_}.tar.gz"
#install current boost version
if [ ! -d boost ]; then
curl -o boost.tar.gz "http://netcologne.dl.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.gz"
if [ ! -d boost/${BOOST_VERSION}/ ]; then
curl -o boost.tar.gz "http://netcologne.dl.sourceforge.net/project/boost/boost/${BOOST_VERSION}/${BOOST_FILENAME}"
mkdir boost_tmp
tar --strip-components=1 -xf boost.tar.gz -C boost_tmp
rm boost.tar.gz
cd boost_tmp
./bootstrap.sh --prefix=${ROOT}/install/boost --with-libraries=system,iostreams,filesystem,program_options,date_time
./b2 -s NO_BZIP2=1 cxxflags="-std=c++11" --build-type=minimal install
cd ${ROOT}/install
./bootstrap.sh --prefix=${INSTALL_PREFIX}/boost/${BOOST_VERSION}/ --with-libraries=system,iostreams,filesystem,program_options,date_time,unit_test_framework
./b2 -s NO_BZIP2=1 cxxflags="-std=c++11" --build-type=minimal variant=release -j 4 install
cd ${INSTALL_PREFIX}
rm -rf boost_tmp
fi
\ No newline at end of file
fi
# set a symbolic link to the latest boost installation
if [ ! -e ${INSTALL_PREFIX}/boost/latest ]; then
rm -f ${INSTALL_PREFIX}/boost/latest
fi
ln -s ${INSTALL_PREFIX}/boost/${BOOST_VERSION} ${INSTALL_PREFIX}/boost/latest
......@@ -8,17 +8,21 @@ ROOT=${PWD}
if [ ! -d install/ ]; then
mkdir -p install
fi
INSTALL_PREFIX=${ROOT}/install
cd install
PETSC_VERSION="3.5.4"
PETSC_FILENAME="petsc-lite-${PETSC_VERSION}.tar.gz"
# install petsc
if [ ! -d petsc ]; then
curl -o petsc.tar.gz "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.5.4.tar.gz"
curl -o petsc.tar.gz "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/${PETSC_FILENAME}"
mkdir petsc_tmp
tar --strip-components=1 -xf petsc.tar.gz -C petsc_tmp
rm petsc.tar.gz
cd petsc_tmp
# minimal petsc configuration, just for test purposes
./configure --prefix=${ROOT}/install/petsc --with-pic=1 --with-debugging=0 \
./configure --prefix=${INSTALL_PREFIX}/petsc/${PETSC_VERSION}/ --with-pic=1 --with-debugging=0 \
--with-clanguage=c++ --with-cxx-dialect=c++11 \
--with-metis=1 --download-metis=yes \
--with-parmetis=1 --download-parmetis=yes \
......@@ -27,3 +31,9 @@ if [ ! -d petsc ]; then
cd ${ROOT}/install
rm -rf petsc_tmp
fi
# set a symbolic link to the latest boost installation
if [ ! -e ${INSTALL_PREFIX}/petsc/latest ]; then
rm -f ${INSTALL_PREFIX}/petsc/latest
fi
ln -s ${INSTALL_PREFIX}/petsc/${PETSC_VERSION} ${INSTALL_PREFIX}/petsc/latest
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment