| #------------------------------ |
| # Integration test executable |
| #------------------------------ |
| |
| if(CASS_USE_LIBSSH2) |
| # Allow for libssh2 directory to be specified on the command line |
| if(NOT LIBSSH2_ROOT) |
| if(EXISTS "${PROJECT_SOURCE_DIR}/lib/libssh2/") |
| set(LIBSSH2_ROOT "${PROJECT_SOURCE_DIR}/lib/libssh2/") |
| elseif(EXISTS "${PROJECT_SOURCE_DIR}/build/libs/libssh2/") |
| set(LIBSSH2_ROOT "${PROJECT_SOURCE_DIR}/build/libs/libssh2/") |
| elseif(DEFINED ENV{LIBSSH2_ROOT} AND |
| EXISTS "$ENV{LIBSSH2_ROOT}") |
| set(LIBSSH2_ROOT "$ENV{LIBSSH2_ROOT}") |
| endif() |
| endif() |
| if(LIBSSH2_ROOT_DIR) |
| if(EXISTS ${LIBSSH2_ROOT_DIR}) |
| set(LIBSSH2_ROOT ${LIBSSH2_ROOT_DIR}) |
| endif() |
| endif() |
| |
| # Check for libssh2 availability (build if necessary on Windows) |
| if(WIN32 AND LIBSSH2_VERSION) # Store the current version of libssh2 to prevent corruption |
| set(SAVED_LIBSSH2_VERSION ${LIBSSH2_VERSION}) |
| endif() |
| find_package(Libssh2) |
| if(WIN32 AND NOT LIBSSH2_FOUND) |
| message(STATUS "Unable to Locate libssh2: Third party build step will be performed") |
| if(SAVED_LIBSSH2_VERSION) |
| set(LIBSSH2_VERSION ${SAVED_LIBSSH2_VERSION}) |
| endif() |
| include(ExternalProject-libssh2) |
| elseif(NOT LIBSSH2_FOUND) |
| message(STATUS "libssh2 is Unavailable: Building integration tests without libssh2 support") |
| endif() |
| endif() |
| |
| if(LIBSSH2_FOUND OR LIBSSH2_INCLUDE_DIRS) |
| include_directories(${LIBSSH2_INCLUDE_DIRS}) |
| set(INTEGRATION_TESTS_LIBSSH2_LIBRARIES ${LIBSSH2_LIBRARIES}) |
| # Build up the includes and libraries for CCM dependencies |
| add_definitions(-DCASS_USE_LIBSSH2 -DOPENSSL_CLEANUP) |
| file(GLOB INTEGRATION_TESTS_LIBSSH2_INCLUDE_FILES ${LIBSSH2_INCLUDE_DIRS}/*.h) |
| source_group("Header Files\\libssh2" FILES ${INTEGRATION_TESTS_LIBSSH2_INCLUDE_FILES}) |
| |
| if(WIN32) |
| add_definitions(-D_WINSOCK_DEPRECATED_NO_WARNINGS) |
| endif() |
| endif() |
| |
| add_executable(cassandra-integration-tests |
| ${CASS_API_HEADER_FILES} |
| ${COMMON_INTEGRATION_TEST_INCLUDE_FILES} |
| ${COMMON_INTEGRATION_TEST_SOURCE_FILES} |
| ${INTEGRATION_TESTS_LIBSSH2_INCLUDE_FILES} |
| ${RAPIDJSON_HEADER_FILES}) |
| |
| target_include_directories(cassandra-integration-tests PRIVATE |
| ${CMAKE_CURRENT_SOURCE_DIR} |
| ${CMAKE_CURRENT_SOURCE_DIR}/ccm |
| ${CASS_INCLUDES}) |
| |
| target_link_libraries(cassandra-integration-tests |
| ${CASS_LIBS} |
| ${PROJECT_LIB_NAME_TARGET} |
| ${INTEGRATION_TESTS_LIBSSH2_LIBRARIES}) |
| |
| set_target_properties(cassandra-integration-tests PROPERTIES |
| ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} |
| LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} |
| RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) |
| |
| # Enable bigobj for large object files during compilation (Cassandra types integration test) |
| if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") |
| set(TEST_CMAKE_CXX_FLAGS "${TEST_CMAKE_CXX_FLAGS} /bigobj") |
| endif() |
| |
| set_target_properties(cassandra-integration-tests PROPERTIES |
| PROJECT_LABEL "Integration Tests" |
| FOLDER "Tests" |
| COMPILE_FLAGS "${TEST_CMAKE_CXX_FLAGS}") |
| |
| if(LIBSSH2_LIBRARY_NAME) # Handle ExternalProject dependency |
| add_dependencies(cassandra-integration-tests ${LIBSSH2_LIBRARY_NAME}) |
| endif() |