diff --git a/CMakeLists.txt b/CMakeLists.txt index e5cfa968..2ce69eb2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,14 +9,17 @@ if(APPLE) option(ZMQ_BUILD_FRAMEWORK "Build as OS X framework" ON) endif() -if(WIN32) - option(WITH_TWEETNACL "Build with tweetnacl" OFF) -else() - option(WITH_TWEETNACL "Build with tweetnacl" ON) -endif() +list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}") +find_package(Sodium) -if(WITH_TWEETNACL) - add_definitions(-DHAVE_TWEETNACL -DHAVE_LIBSODIUM) +set(USE_TWEETNACL OFF) + +if(SODIUM_FOUND) + add_definitions(-DHAVE_LIBSODIUM) + include_directories(${SODIUM_INCLUDE_DIRS}) +else() + set(USE_TWEETNACL ON) + add_definitions(-DHAVE_TWEETNACL) include_directories( tweetnacl/contrib/randombytes tweetnacl/src @@ -25,16 +28,12 @@ if(WITH_TWEETNACL) set(TWEETNACL_SOURCES tweetnacl/src/tweetnacl.c ) - if(WIN32) - else() + + if(NOT WIN32) list(APPEND TWEETNACL_SOURCES tweetnacl/contrib/randombytes/devurandom.c) endif() -else() - find_library(SODIUM_FOUND sodium) endif() - - set(POLLER "" CACHE STRING "Choose polling system. valid values are kqueue, epoll, devpoll, poll or select [default=autodetect]") @@ -502,9 +501,11 @@ foreach(source ${cxx-sources}) list(APPEND sources ${CMAKE_CURRENT_SOURCE_DIR}/src/${source}) endforeach() -foreach(source ${TWEETNACL_SOURCES}) - list(APPEND sources ${CMAKE_CURRENT_SOURCE_DIR}/${source}) -endforeach() +if(USE_TWEETNACL) + foreach(source ${TWEETNACL_SOURCES}) + list(APPEND sources ${CMAKE_CURRENT_SOURCE_DIR}/${source}) + endforeach() +endif() foreach(source ${rc-sources}) list(APPEND sources ${CMAKE_CURRENT_BINARY_DIR}/${source}) @@ -602,7 +603,7 @@ else() PUBLIC_HEADER "${public_headers}" VERSION ${ZMQ_VERSION} SOVERSION "${ZMQ_VERSION_MAJOR}.${ZMQ_VERSION_MINOR}.0" - OUTPUT_NAME "libzmq") + OUTPUT_NAME "libzmq") if(ZMQ_BUILD_FRAMEWORK) set_target_properties(libzmq PROPERTIES FRAMEWORK TRUE @@ -623,7 +624,11 @@ else() OUTPUT_NAME "libzmq-static") endif() -target_link_libraries(libzmq ${SODIUM_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(libzmq ${CMAKE_THREAD_LIBS_INIT}) + +if(SODIUM_FOUND) + target_link_libraries(libzmq ${SODIUM_LIBRARIES}) +endif() if(HAVE_WS2_32) target_link_libraries(libzmq ws2_32) elseif(HAVE_WS2) diff --git a/FindSodium.cmake b/FindSodium.cmake new file mode 100644 index 00000000..ee1903f9 --- /dev/null +++ b/FindSodium.cmake @@ -0,0 +1,40 @@ +################################################################################ +# THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY # +# Please refer to the README for information about making permanent changes. # +################################################################################ + +if (NOT MSVC) +include(FindPkgConfig) +pkg_check_modules(PC_SODIUM "libsodium") +if (NOT PC_SODIUM_FOUND) + pkg_check_modules(PC_SODIUM "sodium") +endif (NOT PC_SODIUM_FOUND) +if (PC_SODIUM_FOUND) + set(SODIUM_INCLUDE_HINTS ${PC_SODIUM_INCLUDE_DIRS} ${PC_SODIUM_INCLUDE_DIRS}/*) + set(SODIUM_LIBRARY_HINTS ${PC_SODIUM_LIBRARY_DIRS} ${PC_SODIUM_LIBRARY_DIRS}/*) +endif() +endif (NOT MSVC) + +# some libraries install the headers is a subdirectory of the include dir +# returned by pkg-config, so use a wildcard match to improve chances of finding +# headers and libraries. +find_path( + SODIUM_INCLUDE_DIRS + NAMES sodium.h + HINTS ${SODIUM_INCLUDE_HINTS} +) + +find_library( + SODIUM_LIBRARIES + NAMES libsodium sodium + HINTS ${SODIUM_LIBRARY_HINTS} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(SODIUM DEFAULT_MSG SODIUM_LIBRARIES SODIUM_INCLUDE_DIRS) +mark_as_advanced(SODIUM_FOUND SODIUM_LIBRARIES SODIUM_INCLUDE_DIRS) + +################################################################################ +# THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY # +# Please refer to the README for information about making permanent changes. # +################################################################################ diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index cae45258..3aec08b7 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -50,7 +50,7 @@ set(tests test_pub_invert_matching test_thread_safe test_client_server - test_sockopt_hwm + test_sockopt_hwm test_heartbeats test_poller ) @@ -83,6 +83,7 @@ foreach(test ${tests}) else() add_test(NAME ${test} COMMAND ${test}) endif() + set_tests_properties(${test} PROPERTIES TIMEOUT 10) endforeach() if(NOT WIN32)