-
Notifications
You must be signed in to change notification settings - Fork 50
/
acinclude.m4
203 lines (199 loc) · 5.13 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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
dnl George T. Fleming, 13 February 2003
dnl
dnl Descended originally from mpich-1.2.4/mpe
dnl
dnl PAC_QDPXX_LINK_CXX_FUNC(
dnl QDPXX_CXXFLAGS,
dnl QDPXX_LDFLAGS,
dnl QDPXX_LIBS,
dnl QDPXX_VARS,
dnl QDPXX_FUNC,
dnl [action if working],
dnl [action if not working]
dnl )
dnl
dnl QDPXX_CXXFLAGS for the necessary includes paths (-I)
dnl QDPXX_LDFLAGS for the necessary library search paths (-L)
dnl QDPXX_LIBS for the libraries (-l<lib> etc)
dnl QDPXX_VARS for the declaration of variables needed
dnl to call QDPXX_FUNC code fragment
dnl QDPXX_FUNC for the body of a QDP++ function call or even general code
dnl fragment on which to run a compile/link test.
dnl If QDPXX_VARS and QDPXX_FUNC are empty, a basic test
dnl of compiling and linking a QDP++ program is run.
dnl
AC_DEFUN(
PAC_QDPXX_LINK_CXX_FUNC,
[
dnl - set local parallel compiler environments
dnl - so input variables can be CXXFLAGS, LDFLAGS or LIBS
pac_QDPXX_CXXFLAGS="$1"
pac_QDPXX_LDFLAGS="$2"
pac_QDPXX_LIBS="$3"
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
dnl - save the original environment
pac_saved_CXXFLAGS="$CXXFLAGS"
pac_saved_LDFLAGS="$LDFLAGS"
pac_saved_LIBS="$LIBS"
dnl - set the parallel compiler environment
CXXFLAGS="$CXXFLAGS $pac_QDPXX_CXXFLAGS"
LDFLAGS="$LDFLAGS $pac_QDPXX_LDFLAGS"
LIBS="$LIBS $pac_QDPXX_LIBS"
AC_TRY_LINK(
[
#include <qdp.h>
using namespace QDP;
], [
int argc ; char **argv ;
// Turn on the machine
QDP_initialize(&argc, &argv) ;
// Create the layout
const int foo[] = {2,2,2,2} ;
multi1d<int> nrow(Nd) ;
nrow = foo ; // Use only Nd elements
Layout::setLattSize(nrow) ;
Layout::create() ;
$4 ;
$5 ;
QDP_finalize() ;
],
[pac_qdpxx_working=yes],
[pac_qdpxx_working=no]
)
CXXFLAGS="$pac_saved_CXXFLAGS"
LDFLAGS="$pac_saved_LDFLAGS"
LIBS="$pac_saved_LIBS"
AC_LANG_RESTORE
if test "X${pac_qdpxx_working}X"="XyesX";
then
ifelse([$6],,:,[$6])
else
ifelse([$7],,:,[$7])
fi
]
)
AC_DEFUN(
PAC_BAGEL_WFM_LINK_CXX_FUNC,
[
dnl - set local parallel compiler environments
dnl so input variables can be CFLAGS, LDFLAGS or LIBS
pac_BAGEL_WFM_CFLAGS="$1"
pac_BAGEL_WFM_LDFLAGS="$2"
pac_BAGEL_WFM_LIBS="$3"
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
dnl - save the original environment
pac_saved_CXXFLAGS="$CXXFLAGS"
pac_saved_LDFLAGS="$LDFLAGS"
pac_saved_LIBS="$LIBS"
dnl - set the parallel compiler environment
CXXFLAGS="$CXXFLAGS $pac_BAGEL_WFM_CFLAGS"
LDFLAGS="$LDFLAGS $pac_BAGEL_WFM_LDFLAGS"
LIBS="$LIBS $pac_BAGEL_WFM_LIBS"
AC_TRY_LINK(
[
#include "wfm.h"
],
[
int argc ; char **argv ;
$4
$5
],
[pac_bagel_wfm_working=yes],
[pac_bagel_wfm_working=no]
)
CXXFLAGS="$pac_saved_CXXFLAGS"
LDFLAGS="$pac_saved_LDFLAGS"
LIBS="$pac_saved_LIBS"
AC_LANG_RESTORE
if test "X${pac_bagel_wfm_working}X" = "XyesX" ; then
ifelse([$6],,:,[$6])
else
ifelse([$7],,:,[$7])
fi
]
)
AC_DEFUN(
PAC_GMP_LINK_CXX_FUNC,
[
dnl - set local parallel compiler environments
dnl so input variables can be CFLAGS, LDFLAGS or LIBS
pac_GMP_CFLAGS="$1"
pac_GMP_LDFLAGS="$2"
pac_GMP_LIBS="$3"
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
dnl - save the original environment
pac_saved_CXXFLAGS="$CXXFLAGS"
pac_saved_LDFLAGS="$LDFLAGS"
pac_saved_LIBS="$LIBS"
dnl - set the parallel compiler environment
CXXFLAGS="$CXXFLAGS $pac_GMP_CFLAGS"
LDFLAGS="$LDFLAGS $pac_GMP_LDFLAGS"
LIBS="$LIBS $pac_GMP_LIBS"
AC_TRY_LINK(
[
#include <gmp.h>
],
[
int argc ; char **argv ;
$4
$5
],
[pac_gmp_working=yes],
[pac_gmp_working=no]
)
CXXFLAGS="$pac_saved_CXXFLAGS"
LDFLAGS="$pac_saved_LDFLAGS"
LIBS="$pac_saved_LIBS"
AC_LANG_RESTORE
if test "X${pac_gmp_working}X" = "XyesX" ;
then
ifelse([$6],,:,[$6])
else
ifelse([$7],,:,[$7])
fi
]
)
AC_DEFUN(
PAC_BAGEL_CLOVER_LINK_CXX_FUNC,
[
dnl - set local parallel compiler environments
dnl so input variables can be CFLAGS, LDFLAGS or LIBS
pac_BAGEL_CLOVER_CFLAGS="$1"
pac_BAGEL_CLOVER_LDFLAGS="$2"
pac_BAGEL_CLOVER_LIBS="$3"
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
dnl - save the original environment
pac_saved_CXXFLAGS="$CXXFLAGS"
pac_saved_LDFLAGS="$LDFLAGS"
pac_saved_LIBS="$LIBS"
dnl - set the parallel compiler environment
CXXFLAGS="$CXXFLAGS $pac_BAGEL_CLOVER_CFLAGS"
LDFLAGS="$LDFLAGS $pac_BAGEL_CLOVER_LDFLAGS"
LIBS="$LIBS $pac_BAGEL_CLOVER_LIBS"
AC_TRY_LINK(
[
#include <bagel_clover.h>
],
[
int argc ; char **argv ;
$4
$5
],
[pac_bagel_clover_working=yes],
[pac_bagel_clover_working=no]
)
CXXFLAGS="$pac_saved_CXXFLAGS"
LDFLAGS="$pac_saved_LDFLAGS"
LIBS="$pac_saved_LIBS"
AC_LANG_RESTORE
if test "X${pac_bagel_clover_working}X" = "XyesX" ; then
ifelse([$6],,:,[$6])
else
ifelse([$7],,:,[$7])
fi
]
)