|
9 | 9 | * University of Stuttgart. All rights reserved. |
10 | 10 | * Copyright (c) 2004-2005 The Regents of the University of California. |
11 | 11 | * All rights reserved. |
12 | | - * Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. |
| 12 | + * Copyright (c) 2006-2015 Cisco Systems, Inc. All rights reserved. |
13 | 13 | * Copyright (c) 2011-2013 Inria. All rights reserved. |
14 | 14 | * Copyright (c) 2011-2012 Universite Bordeaux 1 |
| 15 | + * Copyright (c) 2015 Research Organization for Information Science |
| 16 | + * and Technology (RIST). All rights reserved. |
15 | 17 | * $COPYRIGHT$ |
16 | 18 | * |
17 | 19 | * Additional copyrights may follow |
|
24 | 26 |
|
25 | 27 | #include "ompi_config.h" |
26 | 28 |
|
| 29 | +#if OMPI_BUILD_FORTRAN_BINDINGS |
27 | 30 | /* |
28 | 31 | * Several variables are used to link against MPI F77 constants which |
29 | 32 | * correspond to addresses, e.g. MPI_BOTTOM, and are implemented via |
|
85 | 88 | * file. |
86 | 89 | */ |
87 | 90 |
|
88 | | -#define DECL(type, upper_case, lower_case, single_u, double_u) \ |
89 | | -OMPI_DECLSPEC extern type upper_case; \ |
90 | | -OMPI_DECLSPEC extern type lower_case; \ |
91 | | -OMPI_DECLSPEC extern type single_u; \ |
92 | | -OMPI_DECLSPEC extern type double_u |
93 | | - |
94 | | -/* Note that the rationale for the types of each of these variables is |
95 | | - discussed in ompi/include/mpif-common.h. Do not change the types |
96 | | - without also changing ompi/runtime/ompi_mpi_init.c and |
97 | | - ompi/include/mpif-common.h. */ |
98 | | - |
99 | | -DECL(int, MPI_FORTRAN_BOTTOM, mpi_fortran_bottom, |
100 | | - mpi_fortran_bottom_, mpi_fortran_bottom__); |
101 | | -DECL(int, MPI_FORTRAN_IN_PLACE, mpi_fortran_in_place, |
102 | | - mpi_fortran_in_place_, mpi_fortran_in_place__); |
103 | | -DECL(int, MPI_FORTRAN_UNWEIGHTED, mpi_fortran_unweighted, |
104 | | - mpi_fortran_unweighted_, mpi_fortran_unweighted__); |
105 | | -DECL(int, MPI_FORTRAN_WEIGHTS_EMPTY, mpi_fortran_weights_empty, |
106 | | - mpi_fortran_weights_empty_, mpi_fortran_weights_empty__); |
107 | | -DECL(char *, MPI_FORTRAN_ARGV_NULL, mpi_fortran_argv_null, |
108 | | - mpi_fortran_argv_null_, mpi_fortran_argv_null__); |
109 | | -DECL(char *, MPI_FORTRAN_ARGVS_NULL, mpi_fortran_argvs_null, |
110 | | - mpi_fortran_argvs_null_, mpi_fortran_argvs_null__); |
111 | | -DECL(int *, MPI_FORTRAN_ERRCODES_IGNORE, mpi_fortran_errcodes_ignore, |
112 | | - mpi_fortran_errcodes_ignore_, mpi_fortran_errcodes_ignore__); |
113 | | -DECL(int *, MPI_FORTRAN_STATUS_IGNORE, mpi_fortran_status_ignore, |
114 | | - mpi_fortran_status_ignore_, mpi_fortran_status_ignore__); |
115 | | -DECL(int *, MPI_FORTRAN_STATUSES_IGNORE, mpi_fortran_statuses_ignore, |
116 | | - mpi_fortran_statuses_ignore_, mpi_fortran_statuses_ignore__); |
117 | | - |
118 | | -/* |
119 | | - * Create macros to do the checking. Only check for all 4 if we have |
120 | | - * weak symbols. Otherwise, just check for the one relevant symbol. |
121 | | - */ |
122 | | -#if OPAL_HAVE_WEAK_SYMBOLS |
123 | | -#define OMPI_IS_FORTRAN_BOTTOM(addr) \ |
124 | | - (addr == (void*) &MPI_FORTRAN_BOTTOM || \ |
125 | | - addr == (void*) &mpi_fortran_bottom || \ |
126 | | - addr == (void*) &mpi_fortran_bottom_ || \ |
127 | | - addr == (void*) &mpi_fortran_bottom__) |
128 | | -#define OMPI_IS_FORTRAN_IN_PLACE(addr) \ |
129 | | - (addr == (void*) &MPI_FORTRAN_IN_PLACE || \ |
130 | | - addr == (void*) &mpi_fortran_in_place || \ |
131 | | - addr == (void*) &mpi_fortran_in_place_ || \ |
132 | | - addr == (void*) &mpi_fortran_in_place__) |
133 | | -#define OMPI_IS_FORTRAN_UNWEIGHTED(addr) \ |
134 | | - (addr == (void*) &MPI_FORTRAN_UNWEIGHTED || \ |
135 | | - addr == (void*) &mpi_fortran_unweighted || \ |
136 | | - addr == (void*) &mpi_fortran_unweighted_ || \ |
137 | | - addr == (void*) &mpi_fortran_unweighted__) |
138 | | -#define OMPI_IS_FORTRAN_WEIGHTS_EMPTY(addr) \ |
139 | | - (addr == (void*) &MPI_FORTRAN_WEIGHTS_EMPTY || \ |
140 | | - addr == (void*) &mpi_fortran_weights_empty || \ |
141 | | - addr == (void*) &mpi_fortran_weights_empty_ || \ |
142 | | - addr == (void*) &mpi_fortran_weights_empty__) |
143 | | -#define OMPI_IS_FORTRAN_ARGV_NULL(addr) \ |
144 | | - (addr == (void*) &MPI_FORTRAN_ARGV_NULL || \ |
145 | | - addr == (void*) &mpi_fortran_argv_null || \ |
146 | | - addr == (void*) &mpi_fortran_argv_null_ || \ |
147 | | - addr == (void*) &mpi_fortran_argv_null__) |
148 | | -#define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \ |
149 | | - (addr == (void*) &MPI_FORTRAN_ARGVS_NULL || \ |
150 | | - addr == (void*) &mpi_fortran_argvs_null || \ |
151 | | - addr == (void*) &mpi_fortran_argvs_null_ || \ |
152 | | - addr == (void*) &mpi_fortran_argvs_null__) |
153 | | -#define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \ |
154 | | - (addr == (void*) &MPI_FORTRAN_ERRCODES_IGNORE || \ |
155 | | - addr == (void*) &mpi_fortran_errcodes_ignore || \ |
156 | | - addr == (void*) &mpi_fortran_errcodes_ignore_ || \ |
157 | | - addr == (void*) &mpi_fortran_errcodes_ignore__) |
158 | | -#define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \ |
159 | | - (addr == (void*) &MPI_FORTRAN_STATUS_IGNORE || \ |
160 | | - addr == (void*) &mpi_fortran_status_ignore || \ |
161 | | - addr == (void*) &mpi_fortran_status_ignore_ || \ |
162 | | - addr == (void*) &mpi_fortran_status_ignore__) |
163 | | -#define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \ |
164 | | - (addr == (void*) &MPI_FORTRAN_STATUSES_IGNORE || \ |
165 | | - addr == (void*) &mpi_fortran_statuses_ignore || \ |
166 | | - addr == (void*) &mpi_fortran_statuses_ignore_ || \ |
167 | | - addr == (void*) &mpi_fortran_statuses_ignore__) |
168 | | - |
169 | | -#elif OMPI_FORTRAN_CAPS |
170 | | -#define OMPI_IS_FORTRAN_BOTTOM(addr) \ |
171 | | - (addr == (void*) &MPI_FORTRAN_BOTTOM) |
172 | | -#define OMPI_IS_FORTRAN_IN_PLACE(addr) \ |
173 | | - (addr == (void*) &MPI_FORTRAN_IN_PLACE) |
174 | | -#define OMPI_IS_FORTRAN_UNWEIGHTED(addr) \ |
175 | | - (addr == (void*) &MPI_FORTRAN_UNWEIGHTED) |
176 | | -#define OMPI_IS_FORTRAN_WEIGHTS_EMPTY(addr) \ |
177 | | - (addr == (void*) &MPI_FORTRAN_WEIGHTS_EMPTY) |
178 | | -#define OMPI_IS_FORTRAN_ARGV_NULL(addr) \ |
179 | | - (addr == (void*) &MPI_FORTRAN_ARGV_NULL) |
180 | | -#define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \ |
181 | | - (addr == (void*) &MPI_FORTRAN_ARGVS_NULL) |
182 | | -#define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \ |
183 | | - (addr == (void*) &MPI_FORTRAN_ERRCODES_IGNORE) |
184 | | -#define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \ |
185 | | - (addr == (void*) &MPI_FORTRAN_STATUS_IGNORE) |
186 | | -#define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \ |
187 | | - (addr == (void*) &MPI_FORTRAN_STATUSES_IGNORE) |
188 | | - |
189 | | -#elif OMPI_FORTRAN_PLAIN |
190 | | -#define OMPI_IS_FORTRAN_BOTTOM(addr) \ |
191 | | - (addr == (void*) &mpi_fortran_bottom) |
192 | | -#define OMPI_IS_FORTRAN_IN_PLACE(addr) \ |
193 | | - (addr == (void*) &mpi_fortran_in_place) |
194 | | -#define OMPI_IS_FORTRAN_UNWEIGHTED(addr) \ |
195 | | - (addr == (void*) &mpi_fortran_unweighted) |
196 | | -#define OMPI_IS_FORTRAN_WEIGHTS_EMPTY(addr) \ |
197 | | - (addr == (void*) &mpi_fortran_weights_empty) |
198 | | -#define OMPI_IS_FORTRAN_ARGV_NULL(addr) \ |
199 | | - (addr == (void*) &mpi_fortran_argv_null) |
200 | | -#define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \ |
201 | | - (addr == (void*) &mpi_fortran_argvs_null) |
202 | | -#define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \ |
203 | | - (addr == (void*) &mpi_fortran_errcodes_ignore) |
204 | | -#define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \ |
205 | | - (addr == (void*) &mpi_fortran_status_ignore) |
206 | | -#define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \ |
207 | | - (addr == (void*) &mpi_fortran_statuses_ignore) |
208 | | - |
209 | | -#elif OMPI_FORTRAN_SINGLE_UNDERSCORE |
210 | | -#define OMPI_IS_FORTRAN_BOTTOM(addr) \ |
211 | | - (addr == (void*) &mpi_fortran_bottom_) |
212 | | -#define OMPI_IS_FORTRAN_IN_PLACE(addr) \ |
213 | | - (addr == (void*) &mpi_fortran_in_place_) |
214 | | -#define OMPI_IS_FORTRAN_UNWEIGHTED(addr) \ |
215 | | - (addr == (void*) &mpi_fortran_unweighted_) |
216 | | -#define OMPI_IS_FORTRAN_WEIGHTS_EMPTY(addr) \ |
217 | | - (addr == (void*) &mpi_fortran_weights_empty_) |
218 | | -#define OMPI_IS_FORTRAN_ARGV_NULL(addr) \ |
219 | | - (addr == (void*) &mpi_fortran_argv_null_) |
220 | | -#define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \ |
221 | | - (addr == (void*) &mpi_fortran_argvs_null_) |
222 | | -#define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \ |
223 | | - (addr == (void*) &mpi_fortran_errcodes_ignore_) |
224 | | -#define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \ |
225 | | - (addr == (void*) &mpi_fortran_status_ignore_) |
226 | | -#define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \ |
227 | | - (addr == (void*) &mpi_fortran_statuses_ignore_) |
228 | | - |
229 | | -#else |
230 | | -#define OMPI_IS_FORTRAN_BOTTOM(addr) \ |
231 | | - (addr == (void*) &mpi_fortran_bottom__) |
232 | | -#define OMPI_IS_FORTRAN_IN_PLACE(addr) \ |
233 | | - (addr == (void*) &mpi_fortran_in_place__) |
234 | | -#define OMPI_IS_FORTRAN_UNWEIGHTED(addr) \ |
235 | | - (addr == (void*) &mpi_fortran_unweighted__) |
236 | | -#define OMPI_IS_FORTRAN_WEIGHTS_EMPTY(addr) \ |
237 | | - (addr == (void*) &mpi_fortran_weights_empty__) |
238 | | -#define OMPI_IS_FORTRAN_ARGV_NULL(addr) \ |
239 | | - (addr == (void*) &mpi_fortran_argv_null__) |
240 | | -#define OMPI_IS_FORTRAN_ARGVS_NULL(addr) \ |
241 | | - (addr == (void*) &mpi_fortran_argvs_null__) |
242 | | -#define OMPI_IS_FORTRAN_ERRCODES_IGNORE(addr) \ |
243 | | - (addr == (void*) &mpi_fortran_errcodes_ignore__) |
244 | | -#define OMPI_IS_FORTRAN_STATUS_IGNORE(addr) \ |
245 | | - (addr == (void*) &mpi_fortran_status_ignore__) |
246 | | -#define OMPI_IS_FORTRAN_STATUSES_IGNORE(addr) \ |
247 | | - (addr == (void*) &mpi_fortran_statuses_ignore__) |
248 | | - |
249 | | -#endif /* weak / specific symbol type */ |
| 91 | +#include "mpif-c-constants-decl.h" |
250 | 92 |
|
251 | 93 | /* Convert between Fortran and C MPI_BOTTOM */ |
252 | 94 | #define OMPI_F2C_BOTTOM(addr) (OMPI_IS_FORTRAN_BOTTOM(addr) ? MPI_BOTTOM : (addr)) |
253 | 95 | #define OMPI_F2C_IN_PLACE(addr) (OMPI_IS_FORTRAN_IN_PLACE(addr) ? MPI_IN_PLACE : (addr)) |
254 | 96 | #define OMPI_F2C_UNWEIGHTED(addr) (OMPI_IS_FORTRAN_UNWEIGHTED(addr) ? MPI_UNWEIGHTED : (addr)) |
255 | 97 | #define OMPI_F2C_WEIGHTS_EMPTY(addr) (OMPI_IS_FORTRAN_WEIGHTS_EMPTY(addr) ? MPI_WEIGHTS_EMPTY : (addr)) |
256 | 98 |
|
| 99 | +#endif /* OMPI_BUILD_FORTRAN_BINDINGS */ |
| 100 | + |
257 | 101 | #endif /* OMPI_FORTRAN_BASE_CONSTANTS_H */ |
0 commit comments