From bed0e8e9ab6c8690b85a5e921406262c2eb41e05 Mon Sep 17 00:00:00 2001
From: Mikael Djurfeldt <mikael@djurfeldt.com>
Date: Mon, 2 Dec 2019 14:24:57 +0100
Subject: [PATCH] Use MPI_Comm_create_errhandler if available

---
 configure.ac                       | 9 ++++++++-
 ros/adapters/Makefile.am           | 5 ++---
 src/music/music-config.hh.in       | 3 ++-
 testsuite/sanitytests/multiport.cc | 6 +++++-
 4 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/configure.ac b/configure.ac
index 89b97d7..08d2613 100644
--- a/configure.ac
+++ b/configure.ac
@@ -222,7 +222,7 @@ dnl Must use $CXX, not $MPI_CXX, here
 
 CXX="$CXX $MPI_CXXFLAGS"
 LIBS="$LIBS $MPI_LDFLAGS"
-AC_CHECK_FUNCS([rts_get_personality ompi_comm_free])
+AC_CHECK_FUNCS([rts_get_personality ompi_comm_free MPI_Comm_create_errhandler])
 
 AC_MSG_CHECKING([for MPI::Init_thread method])
 ac_have_cxx_mpi_init_thread=no
@@ -288,6 +288,12 @@ else
   MUSIC_HAVE_LONG_LONG=0
 fi
 
+if test $ac_cv_func_MPI_Comm_create_errhandler = yes; then
+  MUSIC_HAVE_MPI_COMM_CREATE_ERRHANDLER=1
+else
+  MUSIC_HAVE_MPI_COMM_CREATE_ERRHANDLER=0
+fi
+
 if test "$prefix" = NONE; then
    PKGDATADIR=`eval echo $ac_default_prefix/share/$PACKAGE-$PACKAGE_VERSION`
 else
@@ -378,6 +384,7 @@ AC_SUBST(MPI_CFLAGS)
 AC_SUBST(MPI_LDFLAGS)
 AC_SUBST(MUSIC_HAVE_SIZE_T)
 AC_SUBST(MUSIC_HAVE_LONG_LONG)
+AC_SUBST(MUSIC_HAVE_MPI_COMM_CREATE_ERRHANDLER)
 AC_SUBST(MUSIC_USE_MPI)
 AC_SUBST(MUSIC_ISENDWAITALL)
 AC_SUBST(MUSIC_ANYSOURCE)
diff --git a/ros/adapters/Makefile.am b/ros/adapters/Makefile.am
index 4e3817e..05b33f6 100644
--- a/ros/adapters/Makefile.am
+++ b/ros/adapters/Makefile.am
@@ -2,10 +2,10 @@ bin_PROGRAMS = connect_adapter ros_sensor_adapter ros_command_adapter
 
 
 # look for ros in the common paths
-LD_ROS_PATH = -L/opt/ros/kinetic/lib/ \
+LD_ROS_PATH = -L/opt/ros/melodic/lib/ \
 			  -L/opt/ros/jade/lib/
 
-INC_ROS_PATH = -I/opt/ros/kinetic/include \
+INC_ROS_PATH = -I/opt/ros/melodic/include \
 			   -I/opt/ros/jade/include
 
 AM_CXXFLAGS = $(INC_ROS_PATH) -I$(top_srcdir) -I$(top_srcdir)/src -I$(top_builddir)/src @MPI_CXXFLAGS@
@@ -13,7 +13,6 @@ AM_LDFLAGS = $(top_builddir)/mpidep/libmpidep.la @MPI_LDFLAGS@ \
 			 $(top_builddir)/src/libmusic.la \
 			 $(top_builddir)/src/libmusic-c.la \
 			 $(LD_ROS_PATH) 
-						
 
 connect_adapter_SOURCES = connect.h connect.cpp 
 connect_adapter_LDADD = -lgsl -lgslcblas -ljsoncpp
diff --git a/src/music/music-config.hh.in b/src/music/music-config.hh.in
index 6a5cc72..5998aee 100644
--- a/src/music/music-config.hh.in
+++ b/src/music/music-config.hh.in
@@ -2,7 +2,7 @@
 
 /*
  *  This file is part of MUSIC.
- *  Copyright (C) 2008 INCF
+ *  Copyright (C) 2008, 2019 INCF
  *
  *  MUSIC is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -20,6 +20,7 @@
 
 #define MUSIC_HAVE_SIZE_T @MUSIC_HAVE_SIZE_T@
 #define MUSIC_HAVE_LONG_LONG @MUSIC_HAVE_LONG_LONG@
+#define MUSIC_HAVE_MPI_COMM_CREATE_ERRHANDLER @MUSIC_HAVE_MPI_COMM_CREATE_ERRHANDLER@
 #define MUSIC_USE_MPI @MUSIC_USE_MPI@
 #define MUSIC_ISENDWAITALL @MUSIC_ISENDWAITALL@
 #define MUSIC_ANYSOURCE @MUSIC_ANYSOURCE@
diff --git a/testsuite/sanitytests/multiport.cc b/testsuite/sanitytests/multiport.cc
index 00fbcc3..118f12e 100644
--- a/testsuite/sanitytests/multiport.cc
+++ b/testsuite/sanitytests/multiport.cc
@@ -1,6 +1,6 @@
 /*
  *  This file is part of MUSIC.
- *  Copyright (C) 2008, 2009 INCF
+ *  Copyright (C) 2008, 2009, 2019 INCF
  *
  *  MUSIC is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -377,7 +377,11 @@ main (int argc, char *argv[])
 {
   MUSIC::Setup* setup = new MUSIC::Setup (argc, argv);
   MPI_Errhandler errh;
+#if MUSIC_HAVE_MPI_COMM_CREATE_ERRHANDLER
+  MPI_Comm_create_errhandler (errhandler, &errh);
+#else
   MPI_Errhandler_create (errhandler, &errh);
+#endif
   MPI_Comm_set_errhandler (MPI_COMM_WORLD, errh);
   
   MPI::Intracomm comm = setup->communicator ();
-- 
GitLab