CMakeLists.txt 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. # CMake build script for ZeroMQ unit tests
  2. cmake_minimum_required(VERSION "2.8.1")
  3. set(unittests
  4. unittest_ypipe
  5. unittest_poller
  6. unittest_mtrie
  7. unittest_ip_resolver
  8. unittest_udp_address
  9. unittest_radix_tree
  10. unittest_curve_encoding)
  11. # if(ENABLE_DRAFTS) list(APPEND tests ) endif(ENABLE_DRAFTS)
  12. # add location of platform.hpp for Windows builds
  13. if(WIN32)
  14. add_definitions(-DZMQ_CUSTOM_PLATFORM_HPP)
  15. add_definitions(-D_WINSOCK_DEPRECATED_NO_WARNINGS)
  16. # Same name on 64bit systems
  17. link_libraries(ws2_32.lib)
  18. endif()
  19. include_directories("${ZeroMQ_SOURCE_DIR}/include" "${ZeroMQ_SOURCE_DIR}/src" "${ZeroMQ_BINARY_DIR}")
  20. include_directories("${ZeroMQ_SOURCE_DIR}/external/unity")
  21. foreach(test ${unittests})
  22. # target_sources not supported before CMake 3.1
  23. add_executable(${test} ${test}.cpp "unittest_resolver_common.hpp")
  24. # per-test directories not generated on OS X / Darwin
  25. if(NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang.*")
  26. link_directories(${test} PRIVATE "${ZeroMQ_SOURCE_DIR}/../lib")
  27. endif()
  28. target_link_libraries(${test} testutil-static)
  29. if(RT_LIBRARY)
  30. target_link_libraries(${test} ${RT_LIBRARY})
  31. endif()
  32. if(CMAKE_SYSTEM_NAME MATCHES "QNX")
  33. target_link_libraries(${test} socket)
  34. target_link_libraries(${test} m)
  35. endif()
  36. if(WIN32)
  37. add_test(
  38. NAME ${test}
  39. WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
  40. COMMAND ${test})
  41. else()
  42. add_test(NAME ${test} COMMAND ${test})
  43. endif()
  44. set_tests_properties(${test} PROPERTIES TIMEOUT 10)
  45. # TODO prevent libzmq (non-static) being in the list of link libraries at all
  46. get_target_property(LIBS ${test} LINK_LIBRARIES)
  47. list(REMOVE_ITEM LIBS libzmq)
  48. set_target_properties(${test} PROPERTIES LINK_LIBRARIES "${LIBS}")
  49. endforeach()
  50. # Check whether all tests in the current folder are present TODO duplicated with tests/CMakeLists.txt, define as a
  51. # function?
  52. file(READ "${CMAKE_CURRENT_LIST_FILE}" CURRENT_LIST_FILE_CONTENT)
  53. file(GLOB ALL_TEST_SOURCES "test_*.cpp")
  54. foreach(TEST_SOURCE ${ALL_TEST_SOURCES})
  55. get_filename_component(TESTNAME "${TEST_SOURCE}" NAME_WE)
  56. string(REGEX MATCH "${TESTNAME}" MATCH_TESTNAME "${CURRENT_LIST_FILE_CONTENT}")
  57. if(NOT MATCH_TESTNAME)
  58. message(AUTHOR_WARNING "Test '${TESTNAME}' is not known to CTest.")
  59. endif()
  60. endforeach()