mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-13 18:55:10 +01:00
846b2ba174
Problem:
A per-test Linker search path was added in commit a911fa4
to CMakeLists.txt as
part of fixing Windows builds. Whilst this is silently ignored by ld(1) on
Linux, it doesn't settle well with OS X. Spurious warnings are generated about
missing directories leading to convoluted build logs.
Solution:
Make per-Test LINK_DIRECTORIES() conditional for non-Apple platforms.
162 lines
4.3 KiB
CMake
162 lines
4.3 KiB
CMake
# CMake build script for ZeroMQ tests
|
|
cmake_minimum_required(VERSION "2.8.1")
|
|
|
|
# On Windows: solution file will be called tests.sln
|
|
PROJECT(tests)
|
|
|
|
set(tests
|
|
test_system
|
|
test_pair_inproc
|
|
test_pair_tcp
|
|
test_reqrep_inproc
|
|
test_reqrep_tcp
|
|
test_hwm
|
|
test_hwm_pubsub
|
|
test_reqrep_device
|
|
test_sub_forward
|
|
test_invalid_rep
|
|
test_msg_flags
|
|
test_msg_ffn
|
|
test_connect_resolve
|
|
test_immediate
|
|
test_last_endpoint
|
|
test_term_endpoint
|
|
test_router_mandatory
|
|
test_probe_router
|
|
test_stream
|
|
test_stream_empty
|
|
test_stream_disconnect
|
|
test_disconnect_inproc
|
|
test_unbind_inproc
|
|
test_unbind_wildcard
|
|
test_ctx_options
|
|
test_ctx_destroy
|
|
test_security_null
|
|
test_security_plain
|
|
test_security_curve
|
|
test_iov
|
|
test_spec_req
|
|
test_spec_rep
|
|
test_spec_dealer
|
|
test_spec_router
|
|
test_spec_pushpull
|
|
test_req_correlate
|
|
test_req_relaxed
|
|
test_conflate
|
|
test_inproc_connect
|
|
test_issue_566
|
|
test_shutdown_stress
|
|
test_timeo
|
|
test_many_sockets
|
|
test_diffserv
|
|
test_connect_rid
|
|
test_xpub_nodrop
|
|
test_pub_invert_matching
|
|
test_thread_safe
|
|
test_client_server
|
|
test_setsockopt
|
|
test_sockopt_hwm
|
|
test_heartbeats
|
|
test_poller
|
|
test_atomics
|
|
test_bind_src_address
|
|
test_capabilities
|
|
test_ipc_wildcard
|
|
test_metadata
|
|
test_router_handover
|
|
test_srcfd
|
|
test_stream_timeout
|
|
test_xpub_manual
|
|
test_xpub_welcome_msg
|
|
test_timers
|
|
test_radio_dish
|
|
test_udp
|
|
)
|
|
if(NOT WIN32)
|
|
list(APPEND tests
|
|
test_monitor
|
|
test_pair_ipc
|
|
test_reqrep_ipc
|
|
test_proxy
|
|
test_proxy_single_socket
|
|
test_proxy_terminate
|
|
test_getsockopt_memset
|
|
test_filter_ipc
|
|
test_stream_exceeds_buffer
|
|
test_router_mandatory_hwm
|
|
test_use_fd_ipc
|
|
test_use_fd_tcp
|
|
)
|
|
if(HAVE_FORK)
|
|
list(APPEND tests test_fork)
|
|
endif()
|
|
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
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_VMCI)
|
|
list(APPEND tests
|
|
test_pair_vmci
|
|
test_reqrep_vmci
|
|
)
|
|
endif()
|
|
|
|
# add location of platform.hpp for Windows builds
|
|
if(WIN32)
|
|
add_definitions(-DZMQ_CUSTOM_PLATFORM_HPP)
|
|
add_definitions(-D_WINSOCK_DEPRECATED_NO_WARNINGS)
|
|
include_directories(../builds/msvc)
|
|
link_libraries(Ws2_32.lib)
|
|
endif()
|
|
|
|
# add library and include dirs for all targets
|
|
link_libraries(libzmq)
|
|
include_directories("${CMAKE_SOURCE_DIR}/../include")
|
|
include_directories("${CMAKE_SOURCE_DIR}/src")
|
|
|
|
foreach(test ${tests})
|
|
add_executable(${test} ${test}.cpp)
|
|
if(WIN32)
|
|
# it will only link correctly for DEBUG builds in Windows (I don't know how to specify the target and target library in CMake)
|
|
SET_TARGET_PROPERTIES( ${test} PROPERTIES LINK_FLAGS "/LIBPATH:../bin/Win32/Debug/v120/dynamic" )
|
|
else()
|
|
# per-test directories not generated on OS X / Darwin
|
|
if (NOT APPLE)
|
|
link_directories(${test} PRIVATE "${CMAKE_SOURCE_DIR}/../lib")
|
|
endif()
|
|
endif()
|
|
|
|
if(RT_LIBRARY)
|
|
target_link_libraries(${test} ${RT_LIBRARY} )
|
|
endif()
|
|
if(WIN32)
|
|
add_test(NAME ${test} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} COMMAND ${test})
|
|
else()
|
|
add_test(NAME ${test} COMMAND ${test})
|
|
endif()
|
|
set_tests_properties(${test} PROPERTIES TIMEOUT 10)
|
|
endforeach()
|
|
|
|
#Check whether all tests in the current folder are present
|
|
file(READ "${CMAKE_CURRENT_LIST_FILE}" CURRENT_LIST_FILE_CONTENT)
|
|
file(GLOB ALL_TEST_SOURCES "test_*.cpp")
|
|
foreach(TEST_SOURCE ${ALL_TEST_SOURCES})
|
|
get_filename_component(TESTNAME "${TEST_SOURCE}" NAME_WE)
|
|
string(REGEX MATCH "${TESTNAME}" MATCH_TESTNAME "${CURRENT_LIST_FILE_CONTENT}")
|
|
if (NOT MATCH_TESTNAME)
|
|
message(AUTHOR_WARNING "Test '${TESTNAME}' is not known to CTest.")
|
|
endif()
|
|
endforeach()
|
|
|