commit efe547e8041dc36bb555975e0cb01d2c462b6ab2
Author: François Trahay <francois.trahay@telecom-sudparis.eu>
Date:   Tue Aug 23 11:03:07 2022 +0200

    MPI: some MPI datatypes are not always defined

diff --git a/src/modules/mpi/mpi_eztrace.h b/src/modules/mpi/mpi_eztrace.h
index f37a6ff0..7d642991 100644
--- a/src/modules/mpi/mpi_eztrace.h
+++ b/src/modules/mpi/mpi_eztrace.h
@@ -303,13 +303,75 @@ int ezt_mpi_is_in_place_(void* buf);
  */
 #define CHECK_MPI_IN_PLACE(p) (ezt_mpi_is_in_place_(p) ? MPI_IN_PLACE : (p))
 
+/* in some cases (eg on some architectures, or with some MPI implementations), some MPI datatypes
+ * are not defined :/
+ */
+#ifdef MPI_INTEGER1
+#define _EZT_MPI_INTEGER1 MPI_INTEGER1
+#else
+#define _EZT_MPI_INTEGER1 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_INTEGER2
+#define _EZT_MPI_INTEGER2 MPI_INTEGER2
+#else
+#define _EZT_MPI_INTEGER2 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_INTEGER4
+#define _EZT_MPI_INTEGER4 MPI_INTEGER4
+#else
+#define _EZT_MPI_INTEGER4 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_INTEGER8
+#define _EZT_MPI_INTEGER8 MPI_INTEGER8
+#else
+#define _EZT_MPI_INTEGER8 MPI_DATATYPE_NULL
+#endif
+
 #ifdef MPI_INTEGER16
 #define _EZT_MPI_INTEGER16 MPI_INTEGER16
 #else
-/* in some cases (eg with OpenMPI by default), MPI_INTEGER16 is not defined :/ */
 #define _EZT_MPI_INTEGER16 MPI_DATATYPE_NULL
 #endif
 
+#ifdef MPI_REAL4
+#define _EZT_MPI_REAL4 MPI_REAL4
+#else
+#define _EZT_MPI_REAL4 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_REAL8
+#define _EZT_MPI_REAL8 MPI_REAL8
+#else
+#define _EZT_MPI_REAL8 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_REAL16
+#define _EZT_MPI_REAL16 MPI_REAL16
+#else
+#define _EZT_MPI_REAL16 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_COMPLEX8
+#define _EZT_MPI_COMPLEX8 MPI_COMPLEX8
+#else
+#define _EZT_MPI_COMPLEX8 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_COMPLEX16
+#define _EZT_MPI_COMPLEX16 MPI_COMPLEX16
+#else
+#define _EZT_MPI_COMPLEX16 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_COMPLEX32
+#define _EZT_MPI_COMPLEX32 MPI_COMPLEX32
+#else
+#define _EZT_MPI_COMPLEX32 MPI_DATATYPE_NULL
+#endif
+
 #define EZT_DATATYPE_TO_MPI(ezt_datatype)				\
   ezt_datatype == EZT_MPI_DATATYPE_NULL ? MPI_DATATYPE_NULL:		\
     ezt_datatype == EZT_MPI_CHAR ? MPI_CHAR :				\
@@ -346,17 +408,17 @@ int ezt_mpi_is_in_place_(void* buf);
     ezt_datatype == EZT_MPI_2REAL ? MPI_2REAL :				\
     ezt_datatype == EZT_MPI_DOUBLE_COMPLEX ? MPI_DOUBLE_COMPLEX :	\
     ezt_datatype == EZT_MPI_2DOUBLE_PRECISION ? MPI_2DOUBLE_PRECISION : \
-    ezt_datatype == EZT_MPI_REAL4 ? MPI_REAL4 :				\
-    ezt_datatype == EZT_MPI_COMPLEX8 ? MPI_COMPLEX8 :			\
-    ezt_datatype == EZT_MPI_REAL8 ? MPI_REAL8 :				\
-    ezt_datatype == EZT_MPI_COMPLEX16 ? MPI_COMPLEX16 :			\
-    ezt_datatype == EZT_MPI_REAL16 ? MPI_REAL16 :			\
-    ezt_datatype == EZT_MPI_COMPLEX32 ? MPI_COMPLEX32 :			\
-    ezt_datatype == EZT_MPI_INTEGER1 ? MPI_INTEGER1 :			\
-    ezt_datatype == EZT_MPI_INTEGER2 ? MPI_INTEGER2 :			\
-    ezt_datatype == EZT_MPI_INTEGER4 ? MPI_INTEGER4 :			\
-    ezt_datatype == EZT_MPI_INTEGER8 ? MPI_INTEGER8 :			\
-    ezt_datatype == EZT_MPI_INTEGER16 ? _EZT_MPI_INTEGER16 :			\
+    ezt_datatype == EZT_MPI_REAL4 ? _EZT_MPI_REAL4 :			\
+    ezt_datatype == EZT_MPI_COMPLEX8 ? _EZT_MPI_COMPLEX8 :		\
+    ezt_datatype == EZT_MPI_REAL8 ? _EZT_MPI_REAL8 :			\
+    ezt_datatype == EZT_MPI_COMPLEX16 ? _EZT_MPI_COMPLEX16 :		\
+    ezt_datatype == EZT_MPI_REAL16 ? _EZT_MPI_REAL16 :			\
+    ezt_datatype == EZT_MPI_COMPLEX32 ? _EZT_MPI_COMPLEX32 :		\
+    ezt_datatype == EZT_MPI_INTEGER1 ? _EZT_MPI_INTEGER1 :		\
+    ezt_datatype == EZT_MPI_INTEGER2 ? _EZT_MPI_INTEGER2 :		\
+    ezt_datatype == EZT_MPI_INTEGER4 ? _EZT_MPI_INTEGER4 :		\
+    ezt_datatype == EZT_MPI_INTEGER8 ? _EZT_MPI_INTEGER8 :		\
+    ezt_datatype == EZT_MPI_INTEGER16 ? _EZT_MPI_INTEGER16 :		\
     ezt_datatype == EZT_MPI_INT8_T ? MPI_INT8_T :			\
     ezt_datatype == EZT_MPI_INT16_T ? MPI_INT16_T :			\
     ezt_datatype == EZT_MPI_INT32_T ? MPI_INT32_T :			\
