diff --git a/rapid/plugin/group_replication/libmysqlgcs/CMakeLists.txt b/rapid/plugin/group_replication/libmysqlgcs/CMakeLists.txt index e9f51ca8fc9..42a9575e008 100644 --- a/rapid/plugin/group_replication/libmysqlgcs/CMakeLists.txt +++ b/rapid/plugin/group_replication/libmysqlgcs/CMakeLists.txt @@ -139,8 +139,13 @@ IF(MSVC) # This disables signed/unsigned mismatch warnings # Compiler warning C4018. - ADD_COMPILE_FLAGS(${XCOM_SUN_RPCS} ${XCOM_RPCGEN_SOURCES} - COMPILE_FLAGS "/wd4018") + IF(WIN32_CLANG) + ADD_COMPILE_FLAGS(${XCOM_SUN_RPCS} ${XCOM_RPCGEN_SOURCES} + COMPILE_FLAGS "-Wno-sign-compare") + ELSE() + ADD_COMPILE_FLAGS(${XCOM_SUN_RPCS} ${XCOM_RPCGEN_SOURCES} + COMPILE_FLAGS "/wd4018") + ENDIF() ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") ADD_COMPILE_FLAGS(${XCOM_SOURCES} ${XCOM_SUN_RPCS} ${XCOM_RPCGEN_SOURCES} @@ -153,5 +158,9 @@ ADD_COMPILE_FLAGS(${GCS_SOURCES} COMPILE_FLAGS "-DMYSQL_DYNAMIC_PLUGIN") ADD_CONVENIENCE_LIBRARY(${GCS_LIBRARY} ${XCOM_SOURCES} ${GCS_SOURCES}) +IF(TIRPC_LIBRARY) + TARGET_LINK_LIBRARIES(${GCS_LIBRARY} ${TIRPC_LIBRARY}) +ENDIF() + # convenience target ADD_CUSTOM_TARGET(lib${GCS_LIBRARY} DEPENDS ${GCS_LIBRARY}) diff --git a/rapid/plugin/group_replication/libmysqlgcs/configure.cmake b/rapid/plugin/group_replication/libmysqlgcs/configure.cmake index b4519371579..5653d9a3d16 100644 --- a/rapid/plugin/group_replication/libmysqlgcs/configure.cmake +++ b/rapid/plugin/group_replication/libmysqlgcs/configure.cmake @@ -54,8 +54,17 @@ IF (WIN32) ENDIF() IF (NOT WIN32) + # First look for tirpc, then the old Sun RPC + FIND_PATH(RPC_INCLUDE_DIR + NAMES rpc/rpc.h + HINTS /usr/include/tirpc + NO_DEFAULT_PATH + ) + FIND_PATH(RPC_INCLUDE_DIR NAMES rpc/rpc.h) + SET (CMAKE_REQUIRED_FLAGS_BACKUP ${CMAKE_REQUIRED_FLAGS}) SET (CMAKE_REQUIRED_FLAGS "-Wno-error") + SET (CMAKE_REQUIRED_INCLUDES ${RPC_INCLUDE_DIR}) ENDIF() # diff --git a/rapid/plugin/group_replication/libmysqlgcs/rpcgen.cmake b/rapid/plugin/group_replication/libmysqlgcs/rpcgen.cmake index e26ae09ecb9..9b14b2e77e4 100644 --- a/rapid/plugin/group_replication/libmysqlgcs/rpcgen.cmake +++ b/rapid/plugin/group_replication/libmysqlgcs/rpcgen.cmake @@ -94,6 +94,23 @@ FOREACH(X xcom_vp) ${XCOM_BASEDIR}/xcom_proto_enum.h ${XCOM_BASEDIR}/xcom_limits.h) ELSE() + FIND_PROGRAM(RPCGEN_EXECUTABLE rpcgen DOC "path to the rpcgen executable") + MARK_AS_ADVANCED(RPCGEN_EXECUTABLE) + IF(NOT RPCGEN_EXECUTABLE) + MESSAGE(FATAL_ERROR "Could not find rpcgen") + ENDIF() + + IF(NOT RPC_INCLUDE_DIR) + MESSAGE(FATAL_ERROR + "Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc") + ENDIF() + MESSAGE(STATUS "RPC_INCLUDE_DIR ${RPC_INCLUDE_DIR}") + IF(RPC_INCLUDE_DIR STREQUAL "/usr/include/tirpc") + INCLUDE_DIRECTORIES(SYSTEM /usr/include/tirpc) + ADD_DEFINITIONS(-DHAVE_TIRPC) + SET(TIRPC_LIBRARY tirpc) + ENDIF() + # on unix systems try to generate them if needed ADD_CUSTOM_COMMAND(OUTPUT ${x_gen_h} ${x_gen_c} ${x_tmp_plat_h} COMMAND ${CMAKE_COMMAND} -E copy_if_different @@ -110,10 +127,10 @@ FOREACH(X xcom_vp) # generate the sources COMMAND ${CMAKE_COMMAND} -E remove -f ${x_gen_h} - COMMAND rpcgen -C -h -o + COMMAND ${RPCGEN_EXECUTABLE} -C -h -o ${x_gen_h} ${x_tmp_x_canonical_name} COMMAND ${CMAKE_COMMAND} -E remove -f ${x_gen_c} - COMMAND rpcgen -C -c -o + COMMAND ${RPCGEN_EXECUTABLE} -C -c -o ${x_gen_c} ${x_tmp_x_canonical_name} WORKING_DIRECTORY ${gen_xdr_dir} DEPENDS 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 index ad892aa56ae..bc04b597d49 100644 --- 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 @@ -342,13 +345,9 @@ static void dump_header(char *buf) { void dbg_app_data(app_data_ptr a); -#ifdef HAVE___CONST -#define const __const -#else #ifdef OLD_XDR #define const #endif -#endif /* ARGSUSED */ static bool_t x_putlong(XDR *xdrs, @@ -380,9 +379,8 @@ static bool_t x_putbytes(XDR *xdrs, const char *bp MY_ATTRIBUTE((unused)), #endif static u_int -#if defined(__APPLE__) || defined(__FreeBSD__) || \ - defined(X_GETPOSTN_NOT_USE_CONST) -x_getpostn(__const XDR *xdrs) +#if defined(__APPLE__) || defined(__FreeBSD__) || defined(HAVE_TIRPC) +x_getpostn(XDR *xdrs) #else x_getpostn(const XDR *xdrs) #endif