1 dnl Available from the GNU Autoconf Macro Archive at:
2 dnl http://www.gnu.org/software/ac-archive/htmldoc/acx_mpi.html
5 AC_PREREQ(2.50) dnl for AC_LANG_CASE
8 AC_REQUIRE([AC_PROG_CC])
9 AC_CHECK_PROGS(MPICC, mpicc hcc mpcc mpcc_r mpxlc, $CC)
15 AC_REQUIRE([AC_PROG_CXX])
16 AC_CHECK_PROGS(MPICXX, mpiCC mpCC, $CXX)
17 acx_mpi_save_CXX="$CXX"
22 AC_REQUIRE([AC_PROG_F77])
23 AC_CHECK_PROGS(MPIF77, mpif77 hf77 mpxlf mpf77 mpif90 mpf90 mpxlf90 mpxlf95 mpxlf_r, $F77)
24 acx_mpi_save_F77="$F77"
29 if test x = x"$MPILIBS"; then
30 AC_LANG_CASE([C], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
31 [C++], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])],
32 [Fortran 77], [AC_MSG_CHECKING([for MPI_Init])
33 AC_TRY_LINK([],[ call MPI_Init], [MPILIBS=" "
34 AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])])
36 if test x = x"$MPILIBS"; then
37 AC_CHECK_LIB(mpi, MPI_Init, [MPILIBS="-lmpi"])
39 if test x = x"$MPILIBS"; then
40 AC_CHECK_LIB(mpich, MPI_Init, [MPILIBS="-lmpich"])
43 dnl We have to use AC_TRY_COMPILE and not AC_CHECK_HEADER because the
44 dnl latter uses $CPP, not $CC (which may be mpicc).
45 AC_LANG_CASE([C], [if test x != x"$MPILIBS"; then
46 AC_MSG_CHECKING([for mpi.h])
47 AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
50 [C++], [if test x != x"$MPILIBS"; then
51 AC_MSG_CHECKING([for mpi.h])
52 AC_TRY_COMPILE([#include <mpi.h>],[],[AC_MSG_RESULT(yes)], [MPILIBS=""
56 AC_LANG_CASE([C], [CC="$acx_mpi_save_CC"],
57 [C++], [CXX="$acx_mpi_save_CXX"],
58 [Fortran 77], [F77="$acx_mpi_save_F77"])
62 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
63 if test x = x"$MPILIBS"; then
67 ifelse([$1],,[AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.])],[$1])