1 #ifndef PyMPI_CONFIG_OPENMPI_H
2 #define PyMPI_CONFIG_OPENMPI_H
3 
4 #include "mpi-11.h"
5 #include "mpi-12.h"
6 #include "mpi-20.h"
7 #include "mpi-22.h"
8 #include "mpi-30.h"
9 #include "mpi-31.h"
10 #include "mpi-40.h"
11 
12 #ifndef OMPI_HAVE_FORTRAN_LOGICAL1
13 #define OMPI_HAVE_FORTRAN_LOGICAL1 0
14 #endif
15 #ifndef OMPI_HAVE_FORTRAN_LOGICAL2
16 #define OMPI_HAVE_FORTRAN_LOGICAL2 0
17 #endif
18 #ifndef OMPI_HAVE_FORTRAN_LOGICAL4
19 #define OMPI_HAVE_FORTRAN_LOGICAL4 0
20 #endif
21 #ifndef OMPI_HAVE_FORTRAN_LOGICAL8
22 #define OMPI_HAVE_FORTRAN_LOGICAL8 0
23 #endif
24 
25 #if OMPI_HAVE_FORTRAN_LOGICAL1
26 #define PyMPI_HAVE_MPI_LOGICAL1 1
27 #endif
28 #if OMPI_HAVE_FORTRAN_LOGICAL2
29 #define PyMPI_HAVE_MPI_LOGICAL2 1
30 #endif
31 #if OMPI_HAVE_FORTRAN_LOGICAL4
32 #define PyMPI_HAVE_MPI_LOGICAL4 1
33 #endif
34 #if OMPI_HAVE_FORTRAN_LOGICAL8
35 #define PyMPI_HAVE_MPI_LOGICAL8 1
36 #endif
37 
38 #if !OMPI_HAVE_FORTRAN_INTEGER1
39 #undef PyMPI_HAVE_MPI_INTEGER1
40 #endif
41 #if !OMPI_HAVE_FORTRAN_INTEGER2
42 #undef PyMPI_HAVE_MPI_INTEGER2
43 #endif
44 #if !OMPI_HAVE_FORTRAN_INTEGER4
45 #undef PyMPI_HAVE_MPI_INTEGER4
46 #endif
47 #if !OMPI_HAVE_FORTRAN_INTEGER8
48 #undef PyMPI_HAVE_MPI_INTEGER8
49 #endif
50 #if !OMPI_HAVE_FORTRAN_INTEGER16
51 #undef PyMPI_HAVE_MPI_INTEGER16
52 #endif
53 #if !OMPI_HAVE_FORTRAN_REAL2
54 #undef PyMPI_HAVE_MPI_REAL2
55 #undef PyMPI_HAVE_MPI_COMPLEX4
56 #endif
57 #if !OMPI_HAVE_FORTRAN_REAL4
58 #undef PyMPI_HAVE_MPI_REAL4
59 #undef PyMPI_HAVE_MPI_COMPLEX8
60 #endif
61 #if !OMPI_HAVE_FORTRAN_REAL8
62 #undef PyMPI_HAVE_MPI_REAL8
63 #undef PyMPI_HAVE_MPI_COMPLEX16
64 #endif
65 #if !OMPI_HAVE_FORTRAN_REAL16
66 #undef PyMPI_HAVE_MPI_REAL16
67 #undef PyMPI_HAVE_MPI_COMPLEX32
68 #endif
69 
70 #ifdef OMPI_PROVIDE_MPI_FILE_INTERFACE
71 #if OMPI_PROVIDE_MPI_FILE_INTERFACE == 0
72 #include "mpi-io.h"
73 #endif
74 #endif
75 
76 #if (defined(OMPI_MAJOR_VERSION) && \
77      defined(OMPI_MINOR_VERSION) && \
78      defined(OMPI_RELEASE_VERSION))
79 #define OMPI_NUMVERSION (OMPI_MAJOR_VERSION*10000 + \
80                          OMPI_MINOR_VERSION*100 + \
81                          OMPI_RELEASE_VERSION)
82 #else
83 #define OMPI_NUMVERSION (10100)
84 #endif
85 
86 #if MPI_VERSION < 3
87 
88 #if OMPI_NUMVERSION >= 10700
89 #define PyMPI_HAVE_MPI_Message 1
90 #define PyMPI_HAVE_MPI_MESSAGE_NULL 1
91 #define PyMPI_HAVE_MPI_MESSAGE_NO_PROC 1
92 #define PyMPI_HAVE_MPI_Message_c2f 1
93 #define PyMPI_HAVE_MPI_Message_f2c 1
94 #define PyMPI_HAVE_MPI_Mprobe 1
95 #define PyMPI_HAVE_MPI_Improbe 1
96 #define PyMPI_HAVE_MPI_Mrecv 1
97 #define PyMPI_HAVE_MPI_Imrecv 1
98 #define PyMPI_HAVE_MPI_Ibarrier 1
99 #define PyMPI_HAVE_MPI_Ibcast 1
100 #define PyMPI_HAVE_MPI_Igather 1
101 #define PyMPI_HAVE_MPI_Igatherv 1
102 #define PyMPI_HAVE_MPI_Iscatter 1
103 #define PyMPI_HAVE_MPI_Iscatterv 1
104 #define PyMPI_HAVE_MPI_Iallgather 1
105 #define PyMPI_HAVE_MPI_Iallgatherv 1
106 #define PyMPI_HAVE_MPI_Ialltoall 1
107 #define PyMPI_HAVE_MPI_Ialltoallv 1
108 #define PyMPI_HAVE_MPI_Ialltoallw 1
109 #define PyMPI_HAVE_MPI_Ireduce 1
110 #define PyMPI_HAVE_MPI_Iallreduce 1
111 #define PyMPI_HAVE_MPI_Ireduce_scatter_block 1
112 #define PyMPI_HAVE_MPI_Ireduce_scatter 1
113 #define PyMPI_HAVE_MPI_Iscan 1
114 #define PyMPI_HAVE_MPI_Iexscan 1
115 #define PyMPI_HAVE_MPI_MAX_LIBRARY_VERSION_STRING 1
116 #define PyMPI_HAVE_MPI_Get_library_version 1
117 #endif /* OMPI >= 1.7.0 */
118 
119 #if OMPI_NUMVERSION >= 10704
120 #define PyMPI_HAVE_MPI_Neighbor_allgather 1
121 #define PyMPI_HAVE_MPI_Neighbor_allgatherv 1
122 #define PyMPI_HAVE_MPI_Neighbor_alltoall 1
123 #define PyMPI_HAVE_MPI_Neighbor_alltoallv 1
124 #define PyMPI_HAVE_MPI_Neighbor_alltoallw 1
125 #define PyMPI_HAVE_MPI_Ineighbor_allgather 1
126 #define PyMPI_HAVE_MPI_Ineighbor_allgatherv 1
127 #define PyMPI_HAVE_MPI_Ineighbor_alltoall 1
128 #define PyMPI_HAVE_MPI_Ineighbor_alltoallv 1
129 #define PyMPI_HAVE_MPI_Ineighbor_alltoallw 1
130 #endif /* OMPI >= 1.7.4 */
131 
132 #endif
133 
134 #if MPI_VERSION == 3
135 
136 #if OMPI_NUMVERSION <= 10705
137 #undef PyMPI_HAVE_MPI_Comm_set_info
138 #undef PyMPI_HAVE_MPI_Comm_get_info
139 #undef PyMPI_HAVE_MPI_WEIGHTS_EMPTY
140 #undef PyMPI_HAVE_MPI_ERR_RMA_SHARED
141 #endif /* OMPI <= 1.7.5 */
142 
143 #endif
144 
145 #if OMPI_NUMVERSION >= 40000
146 #undef PyMPI_HAVE_MPI_LB
147 #undef PyMPI_HAVE_MPI_UB
148 #endif /* OMPI >= 4.0.0 */
149 
150 #endif /* !PyMPI_CONFIG_OPENMPI_H */
151