forked from JeffersonLab/qdp-jit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
acinclude.m4
205 lines (201 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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
dnl
m4_pattern_allow(QDP_AC_ALIGNMENT_SIZE)dnl
dnl
dnl Balint Joo, 13/12/2002
dnl George T. Fleming, 03/03/2003
dnl
dnl Stole this from mpich-1.2.4/mpe
dnl
dnl PAC_QMP_LINK_CXX_FUNC(
dnl QMP_CFLAGS,
dnl QMP_LDFLAGS,
dnl QMP_LIBS,
dnl QMP_VARS,
dnl QMP_FUNC,
dnl [action if working],
dnl [action if not working]
dnl )
dnl
dnl QMP_CFLAGS is the include option (-I) for QMP includes
dnl QMP_LDFLAGS is the link path (-L) option for QMP libraries
dnl QMP_LIBS is the library (-l) option for QMP libaries
dnl QMP_VARS is the the declaration of variables needed to call QMP_FUNC
dnl QMP_FUNC is the body of QMP function call to be checked for existence
dnl e.g. QMP_VARS="QMP_u32_t foo;"
dnl QMP_FUNC="foo = QMP_get_SMP_count();"
dnl if QMP_FUNC is empty, assume linking with basic MPI program.
dnl i.e. check if QMP definitions are valid
dnl
AC_DEFUN(
PAC_QMP_LINK_CXX_FUNC,
[
dnl - set local parallel compiler environments
dnl so input variables can be CFLAGS, LDFLAGS or LIBS
pac_QMP_CFLAGS="$1"
pac_QMP_LDFLAGS="$2"
pac_QMP_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_QMP_CFLAGS"
LDFLAGS="$LDFLAGS $pac_QMP_LDFLAGS"
LIBS="$LIBS $pac_QMP_LIBS"
AC_TRY_LINK(
[#include "qmp.h"],
[
int argc ; char **argv ;
QMP_thread_level_t prv;
$4 ;
QMP_init_msg_passing(&argc, &argv, QMP_THREAD_SINGLE, &prv) ;
$5 ;
QMP_finalize_msg_passing() ;
],
[pac_qmp_working=yes],
[pac_qmp_working=no]
)
CXXFLAGS="$pac_saved_CXXFLAGS"
LDFLAGS="$pac_saved_LDFLAGS"
LIBS="$pac_saved_LIBS"
AC_LANG_RESTORE
if test "X${pac_qmp_working}X" = "XyesX" ; then
ifelse([$6],,:,[$6])
else
ifelse([$7],,:,[$7])
fi
]
)
dnl PAC_LIBXML2_LINK_CXX_FUNC(
dnl LIBXML2_CXXFLAGS,
dnl LIBXML2_LIBS,
dnl LIBXML2_VARS,
dnl LIBXML2_FUNC,
dnl [action if working],
dnl [action if not working]
dnl )
dnl
dnl LIBXML2_CXXFLAGS for the necessary includes paths (-I)
dnl LIBXML2_LIBS for the libraries (-l<lib> etc)
dnl LIBXML2_VARS for the declaration of variables needed
dnl to call LIBXML2_FUNC code fragment
dnl LIBXML2_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 LIBXML2_VARS and LIBXML2_FUNC are empty, a basic test
dnl of compiling and linking a LIBXML2 program is run.
dnl
AC_DEFUN(
PAC_LIBXML2_LINK_CXX_FUNC,
[
dnl - set local parallel compiler environments
dnl - so input variables can be CXXFLAGS, LDFLAGS or LIBS
pac_LIBXML2_CXXFLAGS="$1"
pac_LIBXML2_LIBS="$2"
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_LIBXML2_CXXFLAGS"
LDFLAGS="$LDFLAGS $pac_LIBXML2_LDFLAGS"
LIBS="$LIBS $pac_LIBXML2_LIBS"
AC_TRY_LINK(
[
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
], [
int argc ; char **argv ;
xmlDocPtr doc;
char *docname="foo";
doc = xmlParseFile(docname);
$3 ;
$4 ;
],
[pac_libxml2_working=yes],
[pac_libxml2_working=no]
)
CXXFLAGS="$pac_saved_CXXFLAGS"
LDFLAGS="$pac_saved_LDFLAGS"
LIBS="$pac_saved_LIBS"
AC_LANG_RESTORE
if test "X${pac_libxml2_working}X" = "XyesX" ; then
ifelse([$5],,:,[$5])
else
ifelse([$6],,:,[$6])
fi
]
)
dnl Balint Joo, 13/12/2002
dnl George T. Fleming, 03/03/2003
dnl
dnl Stole this from mpich-1.2.4/mpe
dnl
dnl PAC_BAGEL_QDP_LINK_CXX_FUNC(
dnl BAGEL_QDP_CFLAGS,
dnl BAGEL_QDP_LDFLAGS,
dnl BAGEL_QDP_LIBS,
dnl BAGEL_QDP_VARS,
dnl BAGEL_QDP_FUNC,
dnl [action if working],
dnl [action if not working]
dnl )
dnl
dnl BAGEL_QDP_CFLAGS is the include option (-I) for BAGEL_QDP includes
dnl BAGEL_QDP_LDFLAGS is the link path (-L) option for BAGEL_QDP libraries
dnl BAGEL_QDP_LIBS is the library (-l) option for BAGEL_QDP libaries
dnl BAGEL_QDP_VARS is the the declaration of variables needed to call BAGEL_QDP_FUNC
dnl BAGEL_QDP_FUNC is the body of BAGEL_QDP function call to be checked for existence
dnl e.g. BAGEL_QDP_VARS="BAGEL_QDP_u32_t foo;"
dnl BAGEL_QDP_FUNC="foo = BAGEL_QDP_get_SMP_count();"
dnl if BAGEL_QDP_FUNC is empty, assume linking with basic MPI program.
dnl i.e. check if BAGEL_QDP definitions are valid
dnl
AC_DEFUN(
PAC_BAGEL_QDP_LINK_CXX_FUNC,
[
dnl - set local parallel compiler environments
dnl so input variables can be CFLAGS, LDFLAGS or LIBS
pac_BAGEL_QDP_CFLAGS="$1"
pac_BAGEL_QDP_LDFLAGS="$2"
pac_BAGEL_QDP_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_QDP_CFLAGS"
LDFLAGS="$LDFLAGS $pac_BAGEL_QDP_LDFLAGS"
LIBS="$LIBS $pac_BAGEL_QDP_LIBS"
AC_TRY_LINK(
[
#include "bagel_qdp.h"
],
[
int argc ; char **argv ;
BAGELQDPFloat *xptr;
BAGELQDPFloat *aptr;
BAGELQDPFloat *zptr;
BAGELQDPFloat *yptr;
unsigned int n3vec;
qdp_vaxpy3(zptr,aptr,xptr,yptr,n3vec);
],
[pac_bagel_qdp_working=yes],
[pac_bagel_qdp_working=no]
)
CXXFLAGS="$pac_saved_CXXFLAGS"
LDFLAGS="$pac_saved_LDFLAGS"
LIBS="$pac_saved_LIBS"
AC_LANG_RESTORE
if test "X${pac_bagel_qdp_working}X" = "XyesX" ; then
ifelse([$6],,:,[$6])
else
ifelse([$7],,:,[$7])
fi
]
)