cmake_minimum_required(VERSION 2.8.3) project(kinesis_manager) set(KINESIS_MANAGER_VERSION 0.1.0) set(CMAKE_CXX_STANDARD 14) find_package(aws_common REQUIRED) if(AWSSDK_FOUND) set(SERVICE kinesis) AWSSDK_DETERMINE_LIBS_TO_LINK(SERVICE AWSSDK_LIBS_TO_LINK) link_directories("${AWSSDK_LIB_DIR}") endif() find_package(CURL REQUIRED) ## Add KVS SDK libraries include(FindKVSSDK.cmake) add_subdirectory(kvssdk) ############# ## Library ## ############# ## Declare a C++ library add_library(${PROJECT_NAME} SHARED src/stream_definition_provider.cpp src/kinesis_stream_manager.cpp src/default_callbacks.cpp src/kinesis_video_stream_interface.cpp src/kinesis_video_producer_interface.cpp) set(${PROJECT_NAME}_IMPORTED_LIBRARIES producer) add_dependencies(${PROJECT_NAME} KVS_SDK_IMPORT) foreach(_imported_lib ${${PROJECT_NAME}_IMPORTED_LIBRARIES}) if(NOT TARGET ${_imported_lib}) add_library(${_imported_lib} UNKNOWN IMPORTED) set_target_properties(${_imported_lib} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${AWSSDK_EXTERNAL_INCLUDE_DIR}") set_target_properties(${_imported_lib} PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" IMPORTED_LOCATION "${KVSSDK_EXTERNAL_LIB_DIR}/lib${_imported_lib}.so") set_property(TARGET producer APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) endif() endforeach() target_include_directories(${PROJECT_NAME} PRIVATE ${aws_common_INCLUDE_DIRS} ${AWSSDK_INCLUDE_DIR} ${KVSSDK_EXTERNAL_INCLUDE_DIR}) target_include_directories(${PROJECT_NAME} PUBLIC $ $) target_link_libraries(${PROJECT_NAME} ${AWSSDK_LIBS_TO_LINK} ${${PROJECT_NAME}_IMPORTED_LIBRARIES} log4cplus) ############# ## Tests ## ############# enable_testing() # Build tests which perform API calls to AWS and require user configuration set up if(BUILD_AWS_TESTING) add_definitions(-DBUILD_AWS_TESTING) endif() find_common_test_packages() add_common_gtest(test_kinesis_manager test/kinesis_manager_test.cpp ) if(TARGET test_kinesis_manager) target_include_directories(test_kinesis_manager PRIVATE ${aws_common_INCLUDE_DIRS} ${KVSSDK_EXTERNAL_INCLUDE_DIR} ) target_link_libraries(test_kinesis_manager ${PROJECT_NAME} ${aws_common_LIBRARIES} ${GMOCK_LIBRARY} pthread ) endif() add_common_gtest(test_stream_subscription_installer test/stream_subscription_installer_test.cpp ) if(TARGET test_stream_subscription_installer) target_include_directories(test_stream_subscription_installer PRIVATE ${aws_common_INCLUDE_DIRS} ${KVSSDK_EXTERNAL_INCLUDE_DIR} ) target_link_libraries(test_stream_subscription_installer ${PROJECT_NAME} ${GMOCK_LIBRARY} pthread ) endif() add_common_gtest(test_default_callbacks test/default_callbacks_test.cpp ) if(TARGET test_default_callbacks) target_include_directories(test_default_callbacks PRIVATE ${aws_common_INCLUDE_DIRS} ${KVSSDK_EXTERNAL_INCLUDE_DIR} ) target_link_libraries(test_default_callbacks ${PROJECT_NAME} ${aws_common_LIBRARIES} ${GMOCK_LIBRARY} pthread ) endif() ############# ## Install ## ############# ## Mark executables and/or libraries for installation install(TARGETS ${PROJECT_NAME} EXPORT "${PROJECT_NAME}-targets" ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) ## Mark cpp header files for installation install( DIRECTORY include/ DESTINATION include ) ## Export KVS SDK artifacts install( DIRECTORY ${KVSSDK_EXTERNAL_LIB_DIR}/ DESTINATION lib/ ) install( DIRECTORY ${KVSSDK_EXTERNAL_INCLUDE_DIR}/ DESTINATION include ) export(TARGETS ${PROJECT_NAME} FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake") export(PACKAGE ${PROJECT_NAME}) CONFIGURE_FILE(${PROJECT_NAME}Config.cmake.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY) CONFIGURE_FILE(${PROJECT_NAME}ConfigVersion.cmake.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake @ONLY) INSTALL(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake DESTINATION share/${PROJECT_NAME}/cmake) INSTALL(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION share/${PROJECT_NAME}/cmake) INSTALL(EXPORT ${PROJECT_NAME}-targets DESTINATION share/${PROJECT_NAME}/cmake) INSTALL(FILES FindKVSSDK.cmake DESTINATION share/${PROJECT_NAME}/cmake)