1# GA_MPIF77_TEST_PROGRAM
2# ----------------------
3# Create an MPI test program in Fortran 77.
4AC_DEFUN([GA_MPIF77_TEST_PROGRAM], [
5AC_LANG_PUSH([Fortran 77])
6AC_LANG_CONFTEST([AC_LANG_PROGRAM([],
7[[      include 'mpif.h'
8      integer ierr
9      call MPI_Init( ierr )
10      call MPI_Finalize( ierr )]])])
11AC_LANG_POP([Fortran 77])
12])dnl
13
14# GA_MPIF77_TEST_COMPILE
15# ----------------------
16# Attempt to compile a simple MPI program in Fortran 77.
17AC_DEFUN([GA_MPIF77_TEST_COMPILE], [
18AC_LANG_PUSH([Fortran 77])
19GA_MPIF77_TEST_PROGRAM()
20AC_CACHE_CHECK([whether a simple Fortran MPI program compiles],
21    [ga_cv_f77_mpi_test_compile],
22    [ga_save_FFLAGS="$FFLAGS"; FFLAGS="$FFLAGS $GA_MP_CPPFLAGS"
23     AC_COMPILE_IFELSE([],
24        [ga_cv_f77_mpi_test_compile=yes],
25        [ga_cv_f77_mpi_test_compile=no])
26     FFLAGS="$ga_save_FFLAGS"])
27rm -f conftest.$ac_ext
28AC_LANG_POP([Fortran 77])
29AS_IF([test "x$ga_cv_f77_mpi_test_compile" = xno],
30    [AC_MSG_FAILURE([could not compile simple Fortran MPI program])])
31])dnl
32
33# GA_MPIF77_TEST_LINK
34# -------------------
35# Attempt to compile a simple MPI program in Fortran 77.
36AC_DEFUN([GA_MPIF77_TEST_LINK], [
37AC_LANG_PUSH([Fortran 77])
38GA_MPIF77_TEST_PROGRAM()
39ga_cv_f77_mpi_test_link=no
40AS_IF([test "x$ga_cv_f77_mpi_test_link" = xno],
41    [AC_MSG_CHECKING([whether a Fortran MPI program links natively])
42     AC_LINK_IFELSE([],
43        [ga_cv_f77_mpi_test_link=yes
44         GA_MP_LIBS=
45         GA_MP_LDFLAGS=
46         GA_MP_CPPFLAGS=],
47        [ga_cv_f77_mpi_test_link=no])
48     AC_MSG_RESULT([$ga_cv_f77_mpi_test_link])])
49# That didn't work.  Let's try adding our GA_MP_* flags.
50# The CPPFLAGS are added to FFLAGS since *.f doesn't use CPP.  LIBS changes.
51ga_save_LIBS="$LIBS"
52ga_save_FFLAGS="$FFLAGS";   FFLAGS="$FFLAGS $GA_MP_CPPFLAGS"
53ga_save_LDFLAGS="$LDFLAGS"; LDFLAGS="$LDFLAGS $GA_MP_LDFLAGS"
54AS_IF([test "x$ga_cv_f77_mpi_test_link" = xno],
55    [AC_MSG_CHECKING([whether a Fortran MPI program links with additional env])
56     LIBS="$LIBS $GA_MP_LIBS"
57     AC_LINK_IFELSE([],
58        [ga_cv_f77_mpi_test_link=yes],
59        [ga_cv_f77_mpi_test_link=no])
60     LIBS="$ga_save_LIBS"
61     AC_MSG_RESULT([$ga_cv_f77_mpi_test_link])])
62# That didn't work, so now let's try with specific libs.
63AS_IF([test "x$ga_cv_f77_mpi_test_link" = xno],
64    [AC_MSG_CHECKING([for mvapich libraries])
65     for lib in "-lmpichf90nc -lmpichfarg -lmpich -lpthread" "-lmpichf90 -lmpichfarg -lmpich -pthread" "-lmpichf90nc -lmpichfarg -lmpich" "-lmpichf90 -lmpichfarg -lmpich" "-lmpichfarg -lmpich -lpthread" "-lmpichfarg -lmpich"
66     do
67        LIBS="$LIBS $lib"
68        AC_LINK_IFELSE([],
69            [ga_cv_f77_mpi_test_link="$lib"; break],
70            [ga_cv_f77_mpi_test_link=no])
71        LIBS="$ga_save_LIBS"
72     done
73     LIBS="$ga_save_LIBS"
74     AC_MSG_RESULT([$ga_cv_f77_mpi_test_link])])
75AS_IF([test "x$ga_cv_f77_mpi_test_link" = xno],
76    [AC_MSG_CHECKING([for mpich libraries])
77     for lib in "-lmpichf90 -lmpich -lpthread" "-lmpichf90 -lmpich" "-lmpich -pthread" "-lmpich"
78     do
79        LIBS="$LIBS $lib"
80        AC_LINK_IFELSE([],
81            [ga_cv_f77_mpi_test_link="$lib"; break],
82            [ga_cv_f77_mpi_test_link=no])
83        LIBS="$ga_save_LIBS"
84     done
85     LIBS="$ga_save_LIBS"
86     AC_MSG_RESULT([$ga_cv_f77_mpi_test_link])])
87AS_IF([test "x$ga_cv_f77_mpi_test_link" = xno],
88    [AC_MSG_CHECKING([for hpmpi libraries])
89     for lib in "-lhpmpio -lhpmpi"
90     do
91        LIBS="$LIBS $lib"
92        AC_LINK_IFELSE([],
93            [ga_cv_f77_mpi_test_link="$lib"; break],
94            [ga_cv_f77_mpi_test_link=no])
95        LIBS="$ga_save_LIBS"
96     done
97     LIBS="$ga_save_LIBS"
98     AC_MSG_RESULT([$ga_cv_f77_mpi_test_link])])
99AS_IF([test "x$ga_cv_f77_mpi_test_link" = xno],
100    [AC_MSG_CHECKING([for intelmpi libraries])
101     for lib in "-lmpi -lmpigf -lmpigi -lpthread" "-lmpi -lmpigf -lmpigi"
102     do
103        LIBS="$LIBS $lib"
104        AC_LINK_IFELSE([],
105            [ga_cv_f77_mpi_test_link="$lib"; break],
106            [ga_cv_f77_mpi_test_link=no])
107        LIBS="$ga_save_LIBS"
108     done
109     LIBS="$ga_save_LIBS"
110     AC_MSG_RESULT([$ga_cv_f77_mpi_test_link])])
111AS_IF([test "x$ga_cv_f77_mpi_test_link" = xno],
112    [AC_MSG_CHECKING([for openmpi libraries])
113     for lib in "-lmpi_f90 -lmpi_f77 -lmpi" "-lmpi_f77 -lmpi"
114     do
115        LIBS="$LIBS $lib"
116        AC_LINK_IFELSE([],
117            [ga_cv_f77_mpi_test_link="$lib"; break],
118            [ga_cv_f77_mpi_test_link=no])
119        LIBS="$ga_save_LIBS"
120     done
121     LIBS="$ga_save_LIBS"
122     AC_MSG_RESULT([$ga_cv_f77_mpi_test_link])])
123rm -f conftest.$ac_ext
124LIBS="$ga_save_LIBS"
125LDFLAGS="$ga_save_LDFLAGS"
126FFLAGS="$ga_save_FFLAGS"
127AC_LANG_POP([Fortran 77])
128AS_CASE([$ga_cv_f77_mpi_test_link],
129    [yes],  [],
130    [no],   [AC_MSG_FAILURE([could not link simple Fortran MPI program])],
131    [*],    [GA_MP_LIBS="$ga_cv_f77_mpi_test_link"],
132    [])
133])dnl
134