Newer
Older
Christian Engwer
committed
set -e
Christian Engwer
committed
canonicalname(){
if test $# -ne 1; then
echo Usage: canonicalname path >&2
return 1
fi
name="$1"
while test -L "$name"; do
if ! test -e "$name"; then
echo $name: file not found >&2
return 1
fi
if newname="`readlink $name`"; then
name="$newname"
else
echo "$(dirname $name)/$(basename $name)"
fi
done
echo $name
Christian Engwer
committed
}
canonicalpath(){
if test $# -ne 1; then
echo Usage: canonicalpath path >&2
Christian Engwer
committed
return 1
fi
(cd $(dirname $(canonicalname $1)) && pwd)
findm4dir() {
BINDIR="$(canonicalpath $0)"
M4DIR="$BINDIR/../m4"
if test -f "$M4DIR/mpi-config.m4"; then
echo "$M4DIR"
return
fi
M4DIR="$BINDIR/../share/dune/aclocal"
if test -f "$M4DIR/mpi-config.m4"; then
echo "$M4DIR"
return
fi
# downloaded
M4DIR="$BINDIR"
if test -f "$M4DIR/mpi-config.m4"; then
echo "$M4DIR"
return
fi
echo "ERROR: could not find mpi-config.m4! Incomplete installation?" >&2
Christian Engwer
committed
version=0.1
verbose=0
usage()
{
cat <<EOF
mpi-config is a tool to help you determine the compiler and linker flags that
you need in order to build your code with MPI. It is very similar to pkg-config,
but doesn't rely on help from your MPI installation. If/when MPI implementations
start supporting pkg-config then mpi-config will become obsolete.
Christian Engwer
committed
Usage: mpi-config [OPTIONS] [LIBRARIES]
Options:
[--mpicc[=COMPILER]]
[--disable-cxx]
[--verbose]
[--version]
[--mpiversion]
[--libs]
[--cflags]
Christian Engwer
committed
Christian Engwer
committed
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
EOF
exit $1
}
if test $# -eq 0 ; then
usage 1 1>&2
fi
while test $# -gt 0 ; do
case "$1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) optarg= ;;
esac
case $1 in
--mpicc=*)
MPICC=$optarg
;;
--version)
echo $version
exit 0
;;
--verbose)
verbose=1
;;
--disable-cxx)
disablecxx=yes
;;
--mpiversion)
tasks="$tasks print_mpiversion"
;;
--cflags)
tasks="$tasks print_cflags"
;;
--ldflags)
tasks="$tasks print_ldflags"
;;
Christian Engwer
committed
--libs)
tasks="$tasks print_libs"
;;
*)
usage 1 1>&2
;;
esac
shift
done
Christian Engwer
committed
MPICC=mpicc
fi
Christian Engwer
committed
#
# LIB
#
# load mpi-config.m4
#
Christian Engwer
committed
# find m4 file
M4DIR=`findm4dir`
Christian Engwer
committed
eval "$(
Christian Engwer
committed
changequote([, ])
define([AC_DEFUN],[define([\$1],[\$2])])
define([AC_MSG_CHECKING],[
Christian Engwer
committed
if test $verbose -gt 0; then
Christian Engwer
committed
echo -n "checking \$@..."
Christian Engwer
committed
fi
Christian Engwer
committed
])
define([AC_MSG_RESULT],[
Christian Engwer
committed
if test $verbose -gt 0; then
Christian Engwer
committed
echo " \$@"
Christian Engwer
committed
fi
Christian Engwer
committed
])
define([AC_MSG_NOTICE],[
if test $verbose -gt 0; then
echo "\$@"
Christian Engwer
committed
fi
Christian Engwer
committed
])
define([AC_MSG_ERROR],[
if test $verbose -gt 0; then
echo "Error: \$@"
exit 1
Christian Engwer
committed
fi
Christian Engwer
committed
])
include([mpi-config.m4])
MPI_CONFIG_HELPER
EOF
)"
Christian Engwer
committed
Christian Engwer
committed
#
# output methods
#
Christian Engwer
committed
print_mpiversion() {
get_mpiparameters
echo $MPI_VERSION
}
print_cflags() {
get_mpiparameters
DUNEMPICPPFLAGS="$DUNEMPICPPFLAGS $MPI_NOCXXFLAGS"
Christian Engwer
committed
fi
echo $DUNEMPICPPFLAGS
}
print_ldflags() {
get_mpiparameters
echo $DUNEMPILDFLAGS
Christian Engwer
committed
}
print_libs() {
get_mpiparameters
Christian Engwer
committed
}
for task in $tasks; do
eval $task
done