blob: dbfbcea8461749aa4deaf1fab949ba83067d4be8 [file]
#------------------------------
# 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()