# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_prog_cc_mpi.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_PROG_CC_MPI([MPI-WANTED-TEST[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]])
#
# DESCRIPTION
#
# This macro tries to find out how to compile C programs that use MPI
# (Message Passing Interface), a standard API for parallel process
# communication (see http://www-unix.mcs.anl.gov/mpi/).
# The macro has to be used instead of the standard macro AC_PROG_CC
# and will replace the standard variable CC with the found compiler.
#
# MPI-WANTED-TEST is used to test whether MPI is actually wanted by
# the user. If the test fails, the macro will not try to find MPI
# and call AC_PROG_CC to find a standard C compiler instead. If the
# test is omitted, the macro will try to find MPI and fail if it is
# not found.
#
# When MPI is found, ACTION-IF-FOUND will be executed, otherwise
# ACTION-IF-NOT-FOUND is executed. If ACTION-IF-FOUND is not set,
# the macro will define HAVE_MPI.
#
# EXAMPLE
#
# # If --with-mpi=auto is used, try to find MPI, but use standard C
# compiler if it is not found.
# # If --with-mpi=yes is used, try to find MPI and fail if it isn't
# # found.
# # If --with-mpi=no is used, use a standard C compiler instead.
# AC_ARG_WITH(mpi, [AS_HELP_STRING([--with-mpi],
# [compile with MPI (parallelization) support. If none is found,
# MPI is not used. Default: auto])
# ],,[with_mpi=auto])
#
# AX_PROG_CC_MPI([test x"$with_mpi" != xno],[use_mpi=yes],[
# use_mpi=no
# if test x"$with_mpi" = xyes; then
# AC_MSG_FAILURE([MPI compiler requested, but couldn't use MPI.])
# else
# AC_MSG_WARN([No MPI compiler found, won't use MPI.])
# fi
# ])
#
# LICENSE
#
# Copyright (c) 2010,2011 Olaf Lenz
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see .
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 1
AC_DEFUN([AX_PROG_CC_MPI], [
AC_PREREQ(2.50) dnl for AC_LANG_CASE
# Check for compiler
AC_REQUIRE([_AX_PROG_CC_MPI],[_AX_PROG_CC_MPI([$1])])
AS_IF([test x"$_ax_prog_cc_mpi_mpi_wanted" = xno],
[ ax_prog_cc_mpi_mpi_found=no ],
[
# test whether MPI_Init is available now
AC_CHECK_FUNC(MPI_Init,[ ax_prog_cc_mpi_mpi_found=yes ],
[
# if not, try to find it in a library
AC_SEARCH_LIBS(MPI_Init, [mpi mpich],
[ ax_prog_cc_mpi_mpi_found=yes ],
[ ax_prog_cc_mpi_mpi_found=no ])
])
echo "ax_prog_cc_mpi_mpi_found=$ax_prog_cc_mpi_mpi_found"
# Check for header
AS_IF([test x"$ax_only_mpi_found" = xyes], [
AC_MSG_CHECKING([for mpi.h])
AC_TRY_COMPILE([#include ],,[
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
ax_prog_cc_mpi_mpi_found=no
])
])
])
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
AS_IF([test x"$ax_prog_cc_mpi_mpi_found" = xyes], [
ifelse([$2],,[AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.])],[$2])
:
],[
$3
:
])
])dnl AX_PROG_CC_MPI
dnl _AX_PROG_CC_MPI is an internal macro required by AX_PROG_CC_MPI.
dnl To ensure the right expansion order, the main function AX_PROG_CC_MPI
dnl has to be split into two parts.
AC_DEFUN([_AX_PROG_CC_MPI], [
AC_ARG_VAR(MPICC,[MPI C compiler command])
ifelse([$1],,[_ax_prog_cc_mpi_mpi_wanted=yes],[
AC_MSG_CHECKING([whether to compile using MPI])
if $1; then
_ax_prog_cc_mpi_mpi_wanted=yes
else
_ax_prog_cc_mpi_mpi_wanted=no
fi
AC_MSG_RESULT($_ax_prog_cc_mpi_mpi_wanted)
])
if test x"$_ax_prog_cc_mpi_mpi_wanted" = xyes; then
if test -z "$CC" && test -n "$MPICC"; then
CC="$MPICC"
else
AC_CHECK_TOOLS([CC], [mpicc hcc mpxlc_r mpxlc mpcc cmpicc])
fi
fi
AC_PROG_CC
])dnl _AX_PROG_CC_MPI