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