-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathacinclude.m4
181 lines (174 loc) · 5.91 KB
/
acinclude.m4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#
# Copyright (C) 2019, Northwestern University and Argonne National Laboratory
# See COPYRIGHT notice in top-level directory.
#
#
dnl Convert a string to all uppercase.
dnl
define([uppercase],
[translit($1, abcdefghijklmnopqrstuvwxyz, ABCDEFGHIJKLMNOPQRSTUVWXYZ)])
dnl
dnl check the availability of one MPI executable in $2
dnl
dnl $2 can be a single command, This is the case when user set the environment.
dnl The variable may contain the executable name followed by zeor or more
dnl command-line options. In the latter case, we check the first string token,
dnl the command name, and ignore the rest command-line options. For example,
dnl UD_MPI_PATH_PROG([MPICC], [mpicc -O2])
dnl
dnl In addition, the first token of $2 may contain the full path of
dnl the command. For example, UD_MPI_PATH_PROG([MPICC], [/usr/bin/mpicc -O2])
dnl
AC_DEFUN([UD_MPI_PATH_PROG], [
if test "x$2" = x ; then
AC_MSG_ERROR("2nd argument cannot be NULL")
fi
dnl 1st token in $2 must be the program name, rests are command-line options
ac_first_token=`echo $2 | cut -d" " -f1`
ac_rest_tokens=`echo $2 | cut -d" " -s -f2-`
dnl First check if ac_first_token contain a full path
dnl If yes, check, check if the file exists. Need not check MPI_INSTALL.
ac_mpi_prog_path=`AS_DIRNAME(["$ac_first_token"])`
if test "x$ac_mpi_prog_path" != "x." ; then
AC_MSG_CHECKING([whether $ac_first_token exists and is executable])
if test -x "$ac_first_token" ; then
AC_MSG_RESULT([yes])
$1="$2"
else
AC_MSG_RESULT([no])
$1=
fi
else
dnl ac_first_token does not contain a full path
ac_mpi_prog_$1=
if test "x$MPI_INSTALL" != x ; then
dnl First, check if it can be found under $MPI_INSTALL, i.e.
dnl --with-mpi is used on configure command line
if test -d "${MPI_INSTALL}/bin" ; then
AC_MSG_CHECKING([$ac_first_token under ${MPI_INSTALL}/bin])
if test -x "$MPI_INSTALL/bin/$ac_first_token" ; then
AC_MSG_RESULT([yes])
ac_mpi_prog_$1=$MPI_INSTALL/bin/$ac_first_token
else
AC_MSG_RESULT([no])
fi
else
dnl ${MPI_INSTALL}/bin does not exist, search $MPI_INSTALL
AC_MSG_CHECKING([$ac_first_token under ${MPI_INSTALL}])
if test -x "$MPI_INSTALL/$ac_first_token" ; then
AC_MSG_RESULT([yes])
ac_mpi_prog_$1=$MPI_INSTALL/$ac_first_token
else
AC_MSG_RESULT([no])
fi
fi
if test "x$ac_mpi_prog_$1" != x ; then
$1="${ac_mpi_prog_$1} $ac_rest_tokens"
else
$1=
fi
else
dnl MPI_INSTALL is not set, i.e. --with-mpi is not used
AC_PATH_PROG([ac_mpi_prog_$1], [$ac_first_token])
if test "x$ac_mpi_prog_$1" != x ; then
$1="${ac_mpi_prog_$1} $ac_rest_tokens"
else
$1=
fi
fi
fi
])
dnl
dnl check the availability of a list of MPI executables
dnl
dnl Note $2 can be a list of executable commands to be searched with each
dnl command being the executable file name without command-line option. This is
dnl the case when user does not set the environment variable, for example
dnl MPICC, and we must search one from the candidate list. For example,
dnl UD_MPI_PATH_PROGS([MPICC], [mpicc mpixlc mpifccpx mpipgcc])
dnl
AC_DEFUN([UD_MPI_PATH_PROGS], [
ac_mpi_prog_$1=
if test "x$MPI_INSTALL" != x ; then
if test -d "${MPI_INSTALL}/bin" ; then
AC_PATH_PROGS([ac_mpi_prog_$1], [$2], [], [$MPI_INSTALL/bin])
else
dnl ${MPI_INSTALL}/bin does not exist, search $MPI_INSTALL
AC_PATH_PROGS([ac_mpi_prog_$1], [$2], [], [$MPI_INSTALL])
fi
else
AC_PATH_PROGS([ac_mpi_prog_$1], [$2])
fi
if test "x${ac_mpi_prog_$1}" = x ; then
dnl AC_CHECK_FILES fails when $2 is not found in cross compile
dnl AC_CHECK_FILES([$2], [ac_mpi_prog_$1=$2])
AC_PATH_PROGS([ac_mpi_prog_$1], [$2])
dnl AC_CHECK_PROGS([ac_mpi_prog_$1], [$2])
dnl AC_CHECK_PROGS([ac_mpi_prog_$1], [$2], [], [/])
dnl ac_first_token=`echo $2 | cut -d" " -f1`
dnl if test -f $ac_first_token ; then
dnl ac_mpi_prog_$1=$2
dnl fi
fi
$1=${ac_mpi_prog_$1}
])
dnl
dnl Check how sed command handling in-place option -i and define SED_I
dnl
AC_DEFUN([UD_PROG_SED_I],
[
AC_REQUIRE([AC_PROG_SED])
AC_CACHE_CHECK([for sed handling option -i ], ac_cv_SED_I,[
cat > conftest.sed_i <<EOF
test str1
EOF
ac_cv_err=`$SED -i '' -e 's|str1|str2|g' conftest.sed_i 2>&1`
if test "x$ac_cv_err" = x ; then
ac_cv_SED_I="$SED -i ''"
else
ac_cv_err=`sed -i'' -e 's|str1|str2|g' conftest.sed_i 2>&1`
if test "x$ac_cv_err" = x ; then
ac_cv_SED_I="$SED -i''"
else
AC_MSG_ERROR("No proper sed -i option found")
fi
fi
AS_UNSET(ac_cv_err)])
SED_I="$ac_cv_SED_I"
AC_SUBST(SED_I)
rm -f conftest.sed_i
])
dnl
dnl Check for an m4(1) preprocessor utility.
dnl
AC_DEFUN([UD_PROG_M4],
[
dnl AS_MESSAGE([checking for m4 preprocessor...])
case "${M4-unset}" in
unset) AC_CHECK_PROGS(M4, m4 gm4, []) ;;
*) AC_CHECK_PROGS(M4, $M4 m4 gm4, []) ;;
esac
if test -z "$M4" ; then
AC_MSG_ERROR("m4 utility program is required by PnetCDF")
fi
AC_MSG_CHECKING(m4 additional flags)
case "${M4FLAGS-unset}" in
unset) dnl test if M4 runs fine without option -B10000
`${M4} /dev/null > conftest.err 2>&1`
ac_cv_m4_stdout=`cat conftest.err`
if test "x$ac_cv_m4_stdout" != x; then
M4FLAGS=-B10000
fi
rm -f conftest.err
;;
esac
if test "x$M4FLAGS" = x; then
AC_MSG_RESULT(none needed)
else
AC_MSG_RESULT($M4FLAGS)
fi
M4FFLAGS=`echo $M4FLAGS | sed 's/-s *//g'`
dnl AC_MSG_NOTICE(M4FFLAGS=$M4FFLAGS)
AC_SUBST(M4FLAGS)
AC_SUBST(M4FFLAGS)
])