13faf2123e
dunecontrol should be passed the option --configure-opts="--enable-fieldvector-size-is-method" if you want to rebuild it from scratch without bazillion strange deprecation warnings, this flag allows us to participate in that dance.
236 lines
7.8 KiB
Bash
Executable File
236 lines
7.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# display help text
|
|
usage () {
|
|
cat <<EOF
|
|
Installation directories:
|
|
--prefix=PREFIX install architecture-independent files in PREFIX
|
|
[/usr/local]. Note: set DESTDIR=PATH when doing
|
|
\`make install' to install to a different sysroot.
|
|
|
|
Optional Features:
|
|
--disable-FEATURE do not include FEATURE
|
|
--disable-gxx11check do not try flag -std=c++11 to enable C++11 features
|
|
--enable-shared build a shared library [default=yes]
|
|
--enable-static build a static library [default=no]. Note: only one
|
|
of the options shared and static may be built.
|
|
--disable-debug build a release version of the library [default=no]
|
|
--disable-pch do not use precompiled headers (if buggy compiler)
|
|
--disable-silent-rules print every compilation statement as executed
|
|
--enable-system-debug put .debug files in global GDB debug dir
|
|
[default=yes if prefix=/usr, no otherwise]
|
|
|
|
Optional Packages:
|
|
--with-dune-common=PATH use DUNE-common library from a specified location
|
|
--with-dune-istl=PATH use DUNE-ISTL library from a specified location
|
|
--with-boost=PATH use Boost library from a specified location
|
|
--with-superlu=PATH user defined path to SuperLU library
|
|
--with-agmg=PATH Include DOUBLE PRECISION version Notay's of AGMG
|
|
Algebraic Multigrid solver from specified source
|
|
location. Note: this option requires a complete,
|
|
working Fortran 90 environment.
|
|
--with-umfpack=PATH use UMFPACK/SuiteSparse from a specified location
|
|
--with-ert=PATH Use ERT libraries
|
|
--with-tinyxml=PATH use TinyXML library from a specified location
|
|
(Note: if not found, then a bundled library will
|
|
be used)
|
|
|
|
Some influential environment variables:
|
|
CC C compiler command
|
|
CFLAGS C compiler flags
|
|
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
|
|
nonstandard directory <lib dir>
|
|
LIBS libraries to pass to the linker, e.g. -l<library>
|
|
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
|
|
you have headers in a nonstandard directory <include dir>
|
|
CPP C preprocessor
|
|
CXX C++ compiler command
|
|
CXXFLAGS C++ compiler flags
|
|
CXXCPP C++ preprocessor
|
|
F77 Fortran 77 compiler command
|
|
FFLAGS Fortran 77 compiler flags
|
|
FC Fortran compiler command
|
|
FCFLAGS Fortran compiler flags
|
|
|
|
Use these variables to override the choices made by \`configure' or to help
|
|
it to find libraries and programs with nonstandard names/locations.
|
|
EOF
|
|
}
|
|
|
|
# report an error regarding the arguments
|
|
invalid_arg () {
|
|
cat <<EOF
|
|
configure: error: unrecognized option: \`$1'
|
|
Try \`$0 --help' for more information
|
|
EOF
|
|
}
|
|
|
|
# default values
|
|
prefix=/usr/local
|
|
buildtype=Debug
|
|
#pch_use=" -DPRECOMPILE_HEADERS:BOOL=ON"
|
|
pch_use=
|
|
#silent_rules=" -DCMAKE_VERBOSE_MAKEFILE=OFF"
|
|
silent_rules=
|
|
#debug_loc=" -DSYSTEM_DEBUG=OFF"
|
|
debug_loc=
|
|
|
|
# this variable will get feature options
|
|
FEATURES=
|
|
|
|
# long arguments are implemented by putting a dash character followed by
|
|
# a colon in the optspec, see trick by Arvid Requate at
|
|
# <http://stackoverflow.com/questions/402377/#7680682>
|
|
while getopts -- ":-:" optchar; do
|
|
case "${optchar}" in
|
|
-)
|
|
# OPTARG now contains everything after double dashes
|
|
case "${OPTARG}" in
|
|
prefix=*)
|
|
# remove prefix consisting of everything up to equal sign
|
|
prefix=${OPTARG#*=}
|
|
;;
|
|
help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
with-*)
|
|
# get the name of the package; everything before equal sign
|
|
pkgname=${OPTARG%=*}
|
|
pkgname=${pkgname#with-}
|
|
# get the location of the package; everyhing after equal sign
|
|
pkgloc=${OPTARG#*=}
|
|
# expand to full path since CMake changes to source directory (!)
|
|
# this also normalize the path name wrt. not having a trailing slash
|
|
pkgloc=$(test -d "${pkgloc}" && sh -c "cd \"${pkgloc}\"; pwd")
|
|
# special aliases
|
|
case "${pkgname}" in
|
|
umfpack)
|
|
pkgname="SuiteSparse"
|
|
;;
|
|
tinyxml)
|
|
pkgname="TinyXML"
|
|
;;
|
|
esac
|
|
# packages need different suffix for their root (sic)
|
|
case "${pkgname}" in
|
|
agmg |\
|
|
boost |\
|
|
ert |\
|
|
zlib)
|
|
rootvar="${pkgname^^}_ROOT"
|
|
;;
|
|
dune-common |\
|
|
dune-istl |\
|
|
SuiteSparse |\
|
|
TinyXML)
|
|
rootvar="${pkgname}_ROOT"
|
|
;;
|
|
superlu)
|
|
rootvar="${pkgname^^}_PREFIX"
|
|
;;
|
|
*)
|
|
rootvar="${pkgname}_DIR"
|
|
;;
|
|
esac
|
|
# add this to the list of existing features
|
|
FEATURES="${FEATURES} \"-D${rootvar}=${pkgloc}\""
|
|
;;
|
|
disable-*)
|
|
# get the name of the package
|
|
pkgname=${OPTARG#disable-}
|
|
# special aliases
|
|
case "${pkgname}" in
|
|
umfpack)
|
|
pkgname="SuiteSparse"
|
|
;;
|
|
esac
|
|
# casing is of course different
|
|
case "${pkgname}" in
|
|
debug)
|
|
buildtype=Release
|
|
# special flag: don't disable any particular package
|
|
pkgname=""
|
|
;;
|
|
pch)
|
|
pch_use=" -DPRECOMPILE_HEADERS:BOOL=OFF"
|
|
pkgname=""
|
|
;;
|
|
silent-rules)
|
|
silent_rules=" -DCMAKE_VERBOSE_MAKEFILE=ON"
|
|
pkgname=""
|
|
;;
|
|
system-debug)
|
|
silent_rules=" -DSYSTEM_DEBUG=OFF"
|
|
pkgname=""
|
|
;;
|
|
agmg |\
|
|
ert |\
|
|
superlu)
|
|
pkgname="${pkgname^^}"
|
|
;;
|
|
openmp)
|
|
pkgname="OpenMP"
|
|
;;
|
|
gxx11check)
|
|
pkgname="CXX11Features"
|
|
;;
|
|
esac
|
|
# only disable packages if the flag refers to a proper one
|
|
test -n "${pkgname}" && \
|
|
FEATURES="${FEATURES} -DCMAKE_DISABLE_FIND_PACKAGE_${pkgname}=TRUE"
|
|
;;
|
|
enable-*)
|
|
# what kind of library are we building; shared or static?
|
|
kind=${OPTARG#enable-}
|
|
case "${kind}" in
|
|
system-debug)
|
|
debug_loc=" -DSYSTEM_DEBUG=ON"
|
|
# special flag; don't set shared/static
|
|
shared=""
|
|
;;
|
|
# this flag is just for compatibility with the deprecation
|
|
# flag in DUNE, so we can build without warnings
|
|
fieldvector-size-is-method)
|
|
shared=""
|
|
;;
|
|
shared)
|
|
shared="ON"
|
|
;;
|
|
static)
|
|
shared="OFF"
|
|
;;
|
|
*)
|
|
invalid_arg --enable-${kind}
|
|
exit 1
|
|
;;
|
|
esac
|
|
test -n "${shared}" && \
|
|
FEATURES="${FEATURES} -DBUILD_opm-core_SHARED:BOOL=${shared}"
|
|
;;
|
|
*)
|
|
# remove everything *after* the equal sign
|
|
arg=${OPTARG%=*}
|
|
invalid_arg --$arg
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
invalid_arg -$OPTARG
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
# remove all arguments processed by getopts
|
|
shift $((OPTIND-1))
|
|
|
|
# remove Autotools-specific variables
|
|
ENVVARS=${@/ACLOCAL_*=*/}
|
|
|
|
# pass everything on to CMake
|
|
CMDLINE="env ${ENVVARS} cmake \"$(dirname "$0")\" \"-DCMAKE_INSTALL_PREFIX=$prefix\" -DCMAKE_BUILD_TYPE=${buildtype}${pch_use}${silent_rules}${debug_loc} ${FEATURES}"
|
|
echo --- calling CMake for opm-core ---
|
|
echo ${CMDLINE}
|
|
eval exec ${CMDLINE}
|