1 |
+ |
dnl |
2 |
+ |
dnl AC_CHECK_MODSUFFIX |
3 |
+ |
dnl |
4 |
+ |
AC_DEFUN([AC_CHECK_MODSUFFIX],[ |
5 |
+ |
|
6 |
+ |
AC_MSG_CHECKING(for module suffix) |
7 |
+ |
rm -f conftest* |
8 |
+ |
# Intel ifc compiler generates files by the name of work.pc and work.pcl (!) |
9 |
+ |
rm -f work* |
10 |
+ |
cat >conftest.f <<EOF |
11 |
+ |
module conftest |
12 |
+ |
integer n |
13 |
+ |
parameter (n=1) |
14 |
+ |
end module conftest |
15 |
+ |
EOF |
16 |
+ |
# SGI and absoft compilers generates module name in upper case! |
17 |
+ |
testname="conftest" |
18 |
+ |
modcase="lower" |
19 |
+ |
if $F90 -c conftest.f > conftest.out 2>&1 ; then |
20 |
+ |
MOD=`ls conftest* | grep -v conftest.f | grep -v conftest.o` |
21 |
+ |
MOD=`echo "$MOD" | sed -e 's/conftest\.//g'` |
22 |
+ |
if test -z "$MOD" ; then |
23 |
+ |
MOD=`ls CONFTEST* 2>/dev/null \ |
24 |
+ |
| grep -v CONFTEST.f | grep -v CONFTEST.o` |
25 |
+ |
MOD=`echo "$MOD" | sed -e 's/CONFTEST\.//g'` |
26 |
+ |
if test -n "$MOD" ; then |
27 |
+ |
testname="CONFTEST" |
28 |
+ |
modcase="upper" |
29 |
+ |
fi |
30 |
+ |
fi |
31 |
+ |
if test -z "$MOD" ; then |
32 |
+ |
AC_MSG_RESULT(unknown) |
33 |
+ |
# Use mod if we can't figure it out |
34 |
+ |
MOD="mod" |
35 |
+ |
else |
36 |
+ |
AC_MSG_RESULT($MOD) |
37 |
+ |
fi |
38 |
+ |
if test -s work.pcl ; then |
39 |
+ |
AC_MSG_WARN([Compiler generates auxillery files!]) |
40 |
+ |
fi |
41 |
+ |
else |
42 |
+ |
AC_MSG_RESULT(unknown) |
43 |
+ |
fi |
44 |
+ |
AC_SUBST(MOD) |
45 |
+ |
|
46 |
+ |
]) |
47 |
+ |
|
48 |
+ |
|
49 |
+ |
dnl |
50 |
+ |
dnl AC_CHECK_MODDIRFLAG |
51 |
+ |
dnl |
52 |
+ |
AC_DEFUN([AC_CHECK_MODDIRFLAG],[ |
53 |
+ |
|
54 |
+ |
# Check for module include path (some use -I, some (Solaris) use -M, some |
55 |
+ |
# (absoft) use -p). |
56 |
+ |
# Intel compilers use a wierd system: -cl,filename.pcl . If no file is |
57 |
+ |
# specified, work.pcl and work.pc are created. However, if you specify |
58 |
+ |
# a file, it must contain a the name of a file ending in .pc . Ugh! |
59 |
+ |
# Use the module made above |
60 |
+ |
AC_MSG_CHECKING(for module directory path flag) |
61 |
+ |
madedir=0 |
62 |
+ |
if test ! -d conf ; then mkdir conf ; madedir=1; fi |
63 |
+ |
cp $testname.$MOD conf |
64 |
+ |
rm -f conftest* CONFTEST* |
65 |
+ |
cat >conftest1.f <<EOF |
66 |
+ |
program main |
67 |
+ |
use conftest |
68 |
+ |
print *, n |
69 |
+ |
end |
70 |
+ |
EOF |
71 |
+ |
F90_WORK_FILES_ARG="" |
72 |
+ |
F90MODINCSPEC="" |
73 |
+ |
if $F90 -c -Iconf conftest1.f > conftest.out 2>&1 ; then |
74 |
+ |
MODDIRFLAG="-I" |
75 |
+ |
F90MODINCSPEC="-I<dir>" |
76 |
+ |
AC_MSG_RESULT(-I) |
77 |
+ |
elif $F90 -c -Mconf conftest1.f >> conftest.out 2>&1 ; then |
78 |
+ |
MODDIRFLAG="-M" |
79 |
+ |
F90MODINCSPEC="-M<dir>" |
80 |
+ |
AC_MSG_RESULT(-M) |
81 |
+ |
elif $F90 -c -pconf conftest1.f >> conftest.out 2>&1 ; then |
82 |
+ |
MODDIRFLAG="-p" |
83 |
+ |
F90MODINCSPEC="-p<dir>" |
84 |
+ |
AC_MSG_RESULT(-p) |
85 |
+ |
elif test -s work.pc ; then |
86 |
+ |
cp work.pc conf/mpimod.pc |
87 |
+ |
echo "mpimod.pc" > conf/mpimod.pcl |
88 |
+ |
echo "`pwd`/conf/mpimod.pc" >> conf/mpimod.pcl |
89 |
+ |
if $F90 -c -cl,conf/mpimod.pcl conftest1.f >>conftest.out 2>&1 ; then |
90 |
+ |
MODDIRFLAG='-cl,mpimod.pcl' |
91 |
+ |
AC_MSG_RESULT([-cl,filename where filename contains a list of files and |
92 |
+ |
directories]) |
93 |
+ |
F90_WORK_FILES_ARG="-cl,mpimod.pcl" |
94 |
+ |
F90MODINCSPEC="-cl,<dir>/<file>mod.pcl" |
95 |
+ |
AC_SUBST(F90_WORK_FILES_ARG) |
96 |
+ |
else |
97 |
+ |
# The version of the Intel compiler that I have refuses to let |
98 |
+ |
# you put the "work catalog" list anywhere but the current directory. |
99 |
+ |
# For example, you cannot in |
100 |
+ |
: |
101 |
+ |
fi |
102 |
+ |
fi |
103 |
+ |
if test -z "MODDIRFLAG" ; then |
104 |
+ |
AC_MSG_RESULT(unknown) |
105 |
+ |
fi |
106 |
+ |
AC_SUBST(MODDIRFLAG) |
107 |
+ |
AC_SUBST(F90MODINCSPEC) |
108 |
+ |
rm -f conftest* conf/conftest* conf/CONFTEST* CONFTEST* conf/mpimod* |
109 |
+ |
if test $madedir = 1 ; then rmdir conf ; fi |
110 |
+ |
|
111 |
+ |
]) |
112 |
+ |
|
113 |
+ |
|
114 |
|
dnl |
115 |
|
dnl AC_CHECK_MPI_F90MOD |
116 |
|
dnl |
125 |
|
AC_LANG_SAVE() |
126 |
|
AC_LANG([Fortran 90]) |
127 |
|
ac_save_F90FLAGS=$F90FLAGS |
128 |
< |
AS_IF([test "$mpi_f90_mods"], [F90FLAGS="${F90FLAGS} -I${mpi_f90_mods}"]) |
128 |
> |
|
129 |
> |
AS_IF([test "$mpi_f90_mods"], [F90FLAGS="${F90FLAGS} ${MODDIRFLAG}${mpi_f90_mods}"]) |
130 |
|
_AC_COMPILE_IFELSE([ |
131 |
|
AC_LANG_PROGRAM([ |
132 |
|
use mpi |
140 |
|
if test "$HAVE_MPI_MOD" = 1; then |
141 |
|
AC_MSG_RESULT(yes) |
142 |
|
AC_DEFINE(MPI_MOD, 1, [have mpi module]) |
143 |
< |
MPI_F90_MODS="-I${mpi_f90_mods}" |
143 |
> |
MPI_F90_MODS="${mpi_f90_mods}" |
144 |
|
AC_SUBST(MPI_F90_MODS) |
145 |
|
# The library name: |
146 |
|
if test -z "$MPI_LIB" ; then |