mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-12 10:33:52 +01:00
Problem: CMake does not check for TIPC support
Solution: add macro in ZMQSourceRunChecks.cmake and optionally include the TIPC sources if the support is available. More importantly, only run the TIPC tests if the support is there.
This commit is contained in:
parent
317499edae
commit
ea294afd8b
@ -282,6 +282,7 @@ zmq_check_tcp_keepcnt ()
|
||||
zmq_check_tcp_keepidle ()
|
||||
zmq_check_tcp_keepintvl ()
|
||||
zmq_check_tcp_keepalive ()
|
||||
zmq_check_tcp_tipc ()
|
||||
|
||||
|
||||
if ( CMAKE_SYSTEM_NAME MATCHES "Linux"
|
||||
@ -550,6 +551,11 @@ if (WITH_VMCI)
|
||||
list (APPEND cxx-sources vmci_address.cpp vmci_connecter.cpp vmci_listener.cpp vmci.cpp)
|
||||
endif (WITH_VMCI)
|
||||
|
||||
if (ZMQ_HAVE_TIPC)
|
||||
add_definitions (-DZMQ_HAVE_TIPC)
|
||||
list (APPEND cxx-source tipc_address.cpp tipc_connecter.cpp tipc_listener.cpp)
|
||||
endif (ZMQ_HAVE_TIPC)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# source generators
|
||||
|
||||
|
@ -127,3 +127,37 @@ int main(int argc, char *argv [])
|
||||
"
|
||||
ZMQ_HAVE_TCP_KEEPALIVE)
|
||||
endmacro()
|
||||
|
||||
|
||||
macro(zmq_check_tcp_tipc)
|
||||
message(STATUS "Checking whether TIPC is supported")
|
||||
check_c_source_runs(
|
||||
"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/socket.h>
|
||||
#include <linux/tipc.h>
|
||||
|
||||
int main(int argc, char *argv [])
|
||||
{
|
||||
struct sockaddr_tipc topsrv;
|
||||
int sd = socket(AF_TIPC, SOCK_SEQPACKET, 0);
|
||||
if (sd == -EAFNOSUPPORT) {
|
||||
return 1;
|
||||
}
|
||||
memset(&topsrv, 0, sizeof(topsrv));
|
||||
topsrv.family = AF_TIPC;
|
||||
topsrv.addrtype = TIPC_ADDR_NAME;
|
||||
topsrv.addr.name.name.type = TIPC_TOP_SRV;
|
||||
topsrv.addr.name.name.instance = TIPC_TOP_SRV;
|
||||
fcntl(sd, F_SETFL, O_NONBLOCK);
|
||||
if (connect(sd, (struct sockaddr *)&topsrv, sizeof(topsrv)) != 0) {
|
||||
if (errno != EINPROGRESS)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
"
|
||||
ZMQ_HAVE_TIPC)
|
||||
endmacro()
|
||||
|
@ -93,15 +93,19 @@ if(NOT WIN32)
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
list(APPEND tests
|
||||
test_abstract_ipc
|
||||
test_pair_tipc
|
||||
test_reqrep_device_tipc
|
||||
test_reqrep_tipc
|
||||
test_router_mandatory_tipc
|
||||
test_sub_forward_tipc
|
||||
test_connect_delay_tipc
|
||||
test_shutdown_stress_tipc
|
||||
test_term_endpoint_tipc
|
||||
)
|
||||
if(ZMQ_HAVE_TIPC)
|
||||
list(APPEND tests
|
||||
test_pair_tipc
|
||||
test_reqrep_device_tipc
|
||||
test_reqrep_tipc
|
||||
test_router_mandatory_tipc
|
||||
test_sub_forward_tipc
|
||||
test_connect_delay_tipc
|
||||
test_shutdown_stress_tipc
|
||||
test_term_endpoint_tipc
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user