#ifndef PyMPI_COMPAT_HPMPI_H #define PyMPI_COMPAT_HPMPI_H /* ---------------------------------------------------------------- */ #ifndef MPI_INTEGER1 #define MPI_INTEGER1 ((MPI_Datatype)MPI_Type_f2c(MPIF_INTEGER1)) #endif #ifndef MPI_INTEGER2 #define MPI_INTEGER2 ((MPI_Datatype)MPI_Type_f2c(MPIF_INTEGER2)) #endif #ifndef MPI_INTEGER4 #define MPI_INTEGER4 ((MPI_Datatype)MPI_Type_f2c(MPIF_INTEGER4)) #endif #ifndef MPI_REAL4 #define MPI_REAL4 ((MPI_Datatype)MPI_Type_f2c(MPIF_REAL4)) #endif #ifndef MPI_REAL8 #define MPI_REAL8 ((MPI_Datatype)MPI_Type_f2c(MPIF_REAL8)) #endif /* ---------------------------------------------------------------- */ #ifndef HPMPI_DLOPEN_LIBMPI #define HPMPI_DLOPEN_LIBMPI 1 #endif #if HPMPI_DLOPEN_LIBMPI #if HAVE_DLOPEN #include "../../dynload.h" static void HPMPI_dlopen_libmpi(void) { void *handle = 0; int mode = RTLD_NOW | RTLD_GLOBAL; #ifdef RTLD_NOLOAD mode |= RTLD_NOLOAD; #endif #if defined(__APPLE__) /* Mac OS X */ if (!handle) handle = dlopen("libhpmpi.3.dylib", mode); if (!handle) handle = dlopen("libhpmpi.2.dylib", mode); if (!handle) handle = dlopen("libhpmpi.1.dylib", mode); if (!handle) handle = dlopen("libhpmpi.0.dylib", mode); if (!handle) handle = dlopen("libhpmpi.dylib", mode); #else /* GNU/Linux and others*/ if (!handle) handle = dlopen("libhpmpi.so.3", mode); if (!handle) handle = dlopen("libhpmpi.so.2", mode); if (!handle) handle = dlopen("libhpmpi.so.1", mode); if (!handle) handle = dlopen("libhpmpi.so.0", mode); if (!handle) handle = dlopen("libhpmpi.so", mode); #endif } static int PyMPI_HPMPI_MPI_Init(int *argc, char ***argv) { HPMPI_dlopen_libmpi(); return MPI_Init(argc, argv); } #undef MPI_Init #define MPI_Init PyMPI_HPMPI_MPI_Init static int PyMPI_HPMPI_MPI_Init_thread(int *argc, char ***argv, int required, int *provided) { HPMPI_dlopen_libmpi(); return MPI_Init_thread(argc, argv, required, provided); } #undef MPI_Init_thread #define MPI_Init_thread PyMPI_HPMPI_MPI_Init_thread #endif /* !HAVE_DLOPEN */ #endif /* !HPMPI_DLOPEN_LIBMPI */ /* ---------------------------------------------------------------- */ #endif /* !PyMPI_COMPAT_HPMPI_H */