f07a920
diff --git a/rapid/plugin/group_replication/rpcgen.cmake b/rapid/plugin/group_replication/rpcgen.cmake
f07a920
index b9c5895..f4569cd 100644
f07a920
--- a/rapid/plugin/group_replication/rpcgen.cmake
f07a920
+++ b/rapid/plugin/group_replication/rpcgen.cmake
f07a920
@@ -87,6 +87,12 @@ FOREACH(X xcom_vp)
f07a920
         ${XCOM_BASEDIR}/xcom_proto_enum.h
f07a920
         ${XCOM_BASEDIR}/xcom_limits.h)
f07a920
   ELSE()
f07a920
+    FIND_PROGRAM(RPCGEN_EXECUTABLE rpcgen DOC "path to the rpcgen executable")
f07a920
+    MARK_AS_ADVANCED(RPCGEN_EXECUTABLE)
f07a920
+    IF(NOT RPCGEN_EXECUTABLE)
f07a920
+      MESSAGE(FATAL_ERROR "Could not find rpcgen")
f07a920
+    ENDIF()
f07a920
+
f07a920
     # on unix systems try to generate them if needed
f07a920
     ADD_CUSTOM_COMMAND(OUTPUT ${x_gen_h} ${x_gen_c} ${x_tmp_plat_h}
f07a920
       COMMAND ${CMAKE_COMMAND} -E copy_if_different
f07a920
@@ -103,10 +109,10 @@ FOREACH(X xcom_vp)
f07a920
 
f07a920
        # generate the sources
f07a920
        COMMAND ${CMAKE_COMMAND} -E remove -f ${x_gen_h}
f07a920
-       COMMAND rpcgen  -C -h -o
f07a920
+       COMMAND ${RPCGEN_EXECUTABLE}  -C -h -o
f07a920
                     ${x_gen_h} ${x_tmp_x_canonical_name}
f07a920
        COMMAND ${CMAKE_COMMAND} -E remove -f ${x_gen_c}
f07a920
-                COMMAND rpcgen  -C -c -o
f07a920
+                COMMAND ${RPCGEN_EXECUTABLE}  -C -c -o
f07a920
                 ${x_gen_c} ${x_tmp_x_canonical_name}
f07a920
        WORKING_DIRECTORY ${gen_xdr_dir}
f07a920
        DEPENDS
f07a920
f07a920
diff --git a/rapid/plugin/group_replication/CMakeLists.txt b/rapid/plugin/group_replication/CMakeLists.txt
f07a920
index 5bcaa8b..bce9de4 100644
f07a920
--- a/rapid/plugin/group_replication/CMakeLists.txt
f07a920
+++ b/rapid/plugin/group_replication/CMakeLists.txt
f07a920
@@ -218,6 +218,7 @@ MYSQL_ADD_PLUGIN(group_replication
f07a920
                  LINK_LIBRARIES
f07a920
                  ${LZ4_LIBRARY}
f07a920
                  ${SSL_LIBRARIES}
f07a920
+                 ${TIRPC_LIBRARY}
f07a920
                  MODULE_ONLY MODULE_OUTPUT_NAME "group_replication")
f07a920
 
f07a920
 ### INSTALLATION ###
f07a920
diff --git a/rapid/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c b/rapid/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c
f07a920
index 245dda0..210e124 100644
f07a920
--- a/rapid/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c
f07a920
+++ b/rapid/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_transport.c
f07a920
@@ -417,7 +417,11 @@ x_putbytes (XDR *xdrs, const char *bp MY_ATTRIBUTE((unused)), u_int len)
f07a920
 
f07a920
 
f07a920
 static u_int
f07a920
+#if defined(__APPLE__) || defined(__FreeBSD__) || defined(HAVE_TIRPC)
f07a920
+x_getpostn(XDR *xdrs)
f07a920
+#else
f07a920
 x_getpostn (const XDR *xdrs)
f07a920
+#endif
f07a920
 {
f07a920
 #ifdef OLD_XDR
f07a920
   return (u_int)(xdrs->x_handy);
f07a920
diff --git a/rapid/plugin/group_replication/rpcgen.cmake b/rapid/plugin/group_replication/rpcgen.cmake
f07a920
index f4569cd..cccb1c3 100644
f07a920
--- a/rapid/plugin/group_replication/rpcgen.cmake
f07a920
+++ b/rapid/plugin/group_replication/rpcgen.cmake
f07a920
@@ -93,6 +93,24 @@ FOREACH(X xcom_vp)
f07a920
       MESSAGE(FATAL_ERROR "Could not find rpcgen")
f07a920
     ENDIF()
f07a920
 
f07a920
+    # First look for tirpc, then the old Sun RPC
f07a920
+    FIND_PATH(RPC_INCLUDE_DIR
f07a920
+      NAMES rpc/rpc.h
f07a920
+      HINTS /usr/include/tirpc
f07a920
+      NO_DEFAULT_PATH
f07a920
+      )
f07a920
+    FIND_PATH(RPC_INCLUDE_DIR NAMES rpc/rpc.h)
f07a920
+    IF(NOT RPC_INCLUDE_DIR)
f07a920
+      MESSAGE(FATAL_ERROR
f07a920
+        "Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc")
f07a920
+    ENDIF()
f07a920
+    MESSAGE(STATUS "RPC_INCLUDE_DIR ${RPC_INCLUDE_DIR}")
f07a920
+    IF(RPC_INCLUDE_DIR STREQUAL "/usr/include/tirpc")
f07a920
+      INCLUDE_DIRECTORIES(SYSTEM /usr/include/tirpc)
f07a920
+      ADD_DEFINITIONS(-DHAVE_TIRPC)
f07a920
+      SET(TIRPC_LIBRARY tirpc)
f07a920
+    ENDIF()
f07a920
+
f07a920
     # on unix systems try to generate them if needed
f07a920
     ADD_CUSTOM_COMMAND(OUTPUT ${x_gen_h} ${x_gen_c} ${x_tmp_plat_h}
f07a920
       COMMAND ${CMAKE_COMMAND} -E copy_if_different