dnl @synopsis ZAC_ARG_CONFIG_MPI dnl dnl Test a variety of MPI options: dnl --enable-mpi - Turns MPI compiling mode on dnl --with-mpi - specify root directory of MPI dnl --with-mpi-compilers - Turns on MPI compiling mode and sets the MPI C++ dnl compiler C, and Fortran dnl --with-mpi-incdir - specify include directory for MPI dnl --with-mpi-libs - specify MPI libraries dnl --with-mpi-libdir - specify location of MPI libraries dnl dnl If any of these options are set, HAVE_MPI will be defined for both dnl Autoconf and Automake, and HAVE_MPI will be defined in the dnl generated config.h file dnl dnl if --disable-mpi, then Zoltan will build serial MPI. dnl dnl --enable-mpi and --with-mpi-compilers are the default. dnl dnl --without-mpi is actually a user error, but we'll interpret it as --disable-mpi dnl dnl If CC, CXX, F77 and/or F90/FTN/FC have been set by the user, and MPI compilers dnl are desired, these will be assumed to be the MPI compilers. dnl dnl This was adapted from the Trilinos TAC_ARG_CONFIG_MPI. dnl AC_DEFUN([ZAC_ARG_CONFIG_MPI], [ HAVE_PKG_MPI=unset SEEK_MPI_COMPILERS=unset MPI_COMPILER_PATH=unset AC_ARG_ENABLE(mpi, [AC_HELP_STRING([--enable-mpi],[enable MPI support])], [ if test X${enableval} = Xno; then HAVE_PKG_MPI=no else HAVE_PKG_MPI=yes fi ] ) AC_ARG_WITH(mpi, [AC_HELP_STRING([--with-mpi=MPIROOT],[the MPI root directory (above bin,lib,include), enables MPI])], [ if test X${withval} = Xno; then HAVE_PKG_MPI=no else HAVE_PKG_MPI=yes if test X${withval} != Xyes; then MPI_DIR=${withval} fi fi ] ) AC_ARG_WITH(mpi-compilers, [AC_HELP_STRING([--with-mpi-compilers={yes/no/path}],[Find MPI compilers/Don't use MPI compilers/Find MPI compilers in path])], [ HAVE_PKG_MPI=yes if test X${withval} = Xno; then SEEK_MPI_COMPILERS=no else SEEK_MPI_COMPILERS=yes if test X${withval} != Xyes; then MPI_COMPILER_PATH=${withval} fi fi ], [ if test X${HAVE_PKG_MPI} != Xno; then SEEK_MPI_COMPILERS=yes HAVE_PKG_MPI=yes fi ] ) dnl Using MPI is the default if test X${HAVE_PKG_MPI} = unset ; then HAVE_PKG_MPI=yes fi if test X${SEEK_MPI_COMPILERS} = Xyes; then if test X${MPI_COMPILER_PATH} != Xunset ; then # MPI_SEEK_PATH=$MPI_COMPILER_PATH$PATH_SEPARATOR$PATH MPI_SEEK_PATH=$MPI_COMPILER_PATH elif test -n "${MPI_DIR}" ; then # MPI_SEEK_PATH=$MPI_DIR/bin$PATH_SEPARATOR$PATH MPI_SEEK_PATH=$MPI_DIR/bin else MPI_SEEK_PATH=$PATH fi dnl Find C MPI compiler if MPI_CC is not already defined if test -z "${MPI_CC}"; then if test -f "${CC}"; then MPI_CC=${CC} else if test -n "${CC}" ; then MPI_CC_CANDIDATE=${CC} else MPI_CC_CANDIDATE=mpicc fi AC_PATH_PROG(MPI_CC, ${MPI_CC_CANDIDATE}, [notFound], [PATH = ${MPI_SEEK_PATH}]) if test "${MPI_CC}" != "notFound" ; then CC=${MPI_CC} else echo "-----" echo "Cannot find MPI C compiler in " ${MPI_SEEK_PATH} echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH," echo "or specify a path to top mpi directory (above bin) with --with-mpi=PATH," echo "or specify a C compiler using CC=" echo "or --disable-mpi" echo "-----" AC_MSG_ERROR([MPI C compiler not found.]) fi fi fi if test "X$ac_cv_use_zoltan_cppdriver" = "Xyes"; then dnl Find C++ MPI compiler if MPI_CXX is not already defined if test -z "${MPI_CXX}"; then if test -f "${CXX}"; then MPI_CXX=${CXX} else if test -n "${CXX}" ; then MPI_CXX_CANDIDATES=${CXX} else MPI_CXX_CANDIDATES="[mpicxx mpic++ mpiCC]" fi AC_PATH_PROGS(MPI_CXX, ${MPI_CXX_CANDIDATES}, [notFound], [PATH = ${MPI_SEEK_PATH}]) if test "${MPI_CXX}" != "notFound" ; then CXX=${MPI_CXX} else echo "-----" echo "Cannot find MPI C++ compiler in " ${MPI_SEEK_PATH} echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH," echo "or specify a path to top mpi directory (above bin) with --with-mpi=PATH," echo "or specify a C++ compiler using CXX=" echo "or --disable-mpi" echo "-----" AC_MSG_ERROR([MPI C++ compiler not found.]) fi fi fi fi # if test "X$ac_cv_use_fortran" = "Xyes"; then # dnl Find a Fortran 77 MPI compiler if MPI_F77 is not already defined # # if test -z "${MPI_F77}"; then # MPI_F77_CANDIDATE=mpif77 # if test -n "${F77}"; then # MPI_F77_CANDIDATE=${F77} # fi # # AC_PATH_PROG(MPI_F77, ${MPI_F77_CANDIDATE}, [notFound], [PATH = ${MPI_SEEK_PATH}]) # # if test "${MPI_F77}" != "notFound" ; then # F77=${MPI_F77} # else # echo "-----" # echo "Cannot find MPI Fortan 77 compiler." # echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH," # echo "or specify a path to top mpi directory (above bin) with --with-mpi=PATH," # echo "or specify a fortran 77 compiler using F77=" # echo "-----" # AC_MSG_ERROR([MPI C compiler not found.]) # fi # fi # fi if test "X$ac_cv_use_fortran90" = "Xyes"; then dnl Find a Fortran 90 MPI compiler if MPI_F90 is not already defined if test -z "${MPI_FC}"; then if test -f "${FC}"; then MPI_FC=${FC} else MPI_FC_CANDIDATES="" if test -n "${FC}"; then MPI_FC_CANDIDATES=${FC} elif test -n "${FTN}"; then MPI_FC_CANDIDATES=${FTN} elif test -n "${F90}"; then MPI_FC_CANDIDATES=${F90} fi if test -n "${MPI_FC_CANDIDATES}" && test -f ${MPI_FC_CANDIDATES} ; then MPI_FC=${MPI_FC_CANDIDATES} else if test -z "${MPI_FC_CANDIDATES}"; then MPI_FC_CANDIDATES="[mpif90 mpif77]" fi AC_PATH_PROGS(MPI_FC, ${MPI_FC_CANDIDATES}, [notFound], [PATH = ${MPI_SEEK_PATH}]) if test "${MPI_FC}" != "notFound" ; then FC=${MPI_FC} else echo "-----" echo "Cannot find MPI Fortran 90 compiler in " ${MPI_SEEK_PATH} echo "Specify a path to all mpi compilers with --with-mpi-compilers=PATH," echo "or specify a path to top mpi directory (above bin) with --with-mpi=PATH," echo "or specify a fortran 90 compiler using FC=" echo "-----" AC_MSG_ERROR([MPI C compiler not found.]) fi fi fi fi fi fi #AC_ARG_WITH(mpi-include, #[AC_HELP_STRING([--with-mpi-include],[Obsolete. Use --with-mpi-incdir=DIR instead. Do not prefix DIR with '-I'.])], #[AC_MSG_ERROR([--with-mpi-include is an obsolte option. Use --with-mpi-incdir=DIR instead. Do not prefix DIR with '-I'. For example '--with-mpi-incdir=/usr/lam_path/include'.])] #) AC_ARG_WITH(mpi-libs, [AC_HELP_STRING([--with-mpi-libs="LIBS"],[MPI libraries @<:@"-lmpi"@:>@])], [ MPI_LIBS=${withval} AC_MSG_CHECKING(user-defined MPI libraries) AC_MSG_RESULT([${MPI_LIBS}]) ] ) AC_ARG_WITH(mpi-incdir, [AC_HELP_STRING([--with-mpi-incdir=DIR],[MPI include directory @<:@MPIROOT/include@:>@ Do not use -I])], [ MPI_INC=${withval} AC_MSG_CHECKING(user-defined MPI includes) AC_MSG_RESULT([${MPI_INC}]) ] ) AC_ARG_WITH(mpi-libdir, [AC_HELP_STRING([--with-mpi-libdir=DIR],[MPI library directory @<:@MPIROOT/lib@:>@ Do not use -L])], [ MPI_LIBDIR=${withval} AC_MSG_CHECKING(user-defined MPI library directory) AC_MSG_RESULT([${MPI_LIBDIR}]) ] ) AC_MSG_CHECKING(whether we are using MPI) AC_MSG_RESULT([${HAVE_PKG_MPI}]) if test "X${HAVE_PKG_MPI}" = "Xyes"; then AC_DEFINE(HAVE_MPI,,[define if we want to use MPI]) fi dnl Define Automake version of HAVE_MPI if appropriate AM_CONDITIONAL(HAVE_MPI, [test "X${HAVE_PKG_MPI}" = "Xyes"]) ])