Skip to content
This repository was archived by the owner on Feb 12, 2022. It is now read-only.

Commit 7a960a2

Browse files
jpeddicordmm318
authored andcommitted
Initial commit
0 parents  commit 7a960a2

25 files changed

+2389
-0
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
*Issue #, if available:*
2+
3+
*Description of changes:*
4+
5+
6+
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

.travis.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
install:
2+
- git clone https://github.com/ros-industrial/industrial_ci.git .ros_ci
3+
script:
4+
- .ros_ci/travis.sh

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# ROS Kinesis Service Common Library
2+
3+
4+
## Overview
5+
This repository contains the kinesis_manager package, a library for interacting with Amazon Kinesis Video Streams. It is used by the `kinesis_video_streamer` package.
6+
7+
### License
8+
The source code is released under an [Apache 2.0].
9+
10+
**Author**: AWS RoboMaker<br/>
11+
**Affiliation**: [Amazon Web Services (AWS)]<br/>
12+
**Maintainer**: AWS RoboMaker, [email protected]
13+
14+
### Supported ROS Distributions
15+
- Kinetic
16+
- Lunar
17+
- Melodic
18+
19+
[Amazon Web Services (AWS)]: https://aws.amazon.com/
20+
[Apache 2.0]: https://aws.amazon.com/apache-2-0/

kinesis_manager/CMakeLists.txt

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
cmake_minimum_required(VERSION 2.8.3)
2+
project(kinesis_manager)
3+
set(KINESIS_MANAGER_VERSION 0.1.0)
4+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++14 ")
5+
6+
find_package(aws_common REQUIRED)
7+
if(AWSSDK_FOUND)
8+
set(SERVICE kinesis)
9+
AWSSDK_DETERMINE_LIBS_TO_LINK(SERVICE AWSSDK_LIBS_TO_LINK)
10+
link_directories("${AWSSDK_LIB_DIR}")
11+
endif()
12+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/") # Required for FindKVSSDK
13+
14+
find_package(CURL REQUIRED)
15+
find_package(KVSSDK REQUIRED)
16+
17+
#############
18+
## Library ##
19+
#############
20+
## Declare a C++ library
21+
add_library(${PROJECT_NAME} SHARED src/stream_definition_provider.cpp src/kinesis_stream_manager.cpp src/default_callbacks.cpp)
22+
set(${PROJECT_NAME}_IMPORTED_LIBRARIES producer log4cplus)
23+
24+
## Add KVS SDK libraries
25+
if(NOT KVSSDK_FOUND)
26+
add_subdirectory(kvssdk)
27+
add_dependencies(${PROJECT_NAME} KVS_SDK_IMPORT)
28+
endif()
29+
30+
foreach(_imported_lib ${${PROJECT_NAME}_IMPORTED_LIBRARIES})
31+
if(NOT TARGET ${_imported_lib})
32+
add_library(${_imported_lib} UNKNOWN IMPORTED)
33+
set_target_properties(${_imported_lib} PROPERTIES
34+
INTERFACE_INCLUDE_DIRECTORIES "${AWSSDK_EXTERNAL_INCLUDE_DIR}")
35+
set_target_properties(${_imported_lib} PROPERTIES
36+
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
37+
IMPORTED_LOCATION "${KVSSDK_EXTERNAL_LIB_DIR}/lib${_imported_lib}.so")
38+
set_property(TARGET producer APPEND PROPERTY
39+
IMPORTED_CONFIGURATIONS RELEASE)
40+
endif()
41+
endforeach()
42+
43+
target_include_directories(${PROJECT_NAME} PRIVATE ${aws_common_INCLUDE_DIRS} ${AWSSDK_INCLUDE_DIR} ${KVSSDK_EXTERNAL_INCLUDE_DIR})
44+
target_include_directories(${PROJECT_NAME} PUBLIC
45+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
46+
$<INSTALL_INTERFACE:include>)
47+
target_link_libraries(${PROJECT_NAME} ${AWSSDK_LIBS_TO_LINK} ${${PROJECT_NAME}_IMPORTED_LIBRARIES})
48+
49+
#############
50+
## Tests ##
51+
#############
52+
53+
enable_testing()
54+
55+
# Build tests which perform API calls to AWS and require user configuration set up
56+
if(BUILD_AWS_TESTING)
57+
add_definitions(-DBUILD_AWS_TESTING)
58+
endif()
59+
60+
find_package(GTest QUIET)
61+
if(NOT GTEST_FOUND)
62+
message(WARNING "Could not find GTest. Not building unit tests.")
63+
else()
64+
add_executable(test_kinesis_manager test/kinesis_manager_test.cpp)
65+
target_include_directories(test_kinesis_manager PRIVATE ${aws_common_INCLUDE_DIRS} ${KVSSDK_EXTERNAL_INCLUDE_DIR})
66+
67+
target_link_libraries(test_kinesis_manager
68+
${GTEST_LIBRARIES}
69+
pthread
70+
${aws_common_LIBRARIES}
71+
${PROJECT_NAME}
72+
${rclcpp_LIBRARIES}
73+
${PRODUCER_LIBRARY}
74+
${LOG_LIBRARY}
75+
${CURL_LIBRARIES}
76+
)
77+
add_test(NAME test_kinesis_manager COMMAND test_kinesis_manager --gtest_output=xml:test_results/)
78+
endif()
79+
80+
#############
81+
## Install ##
82+
#############
83+
84+
## Mark executables and/or libraries for installation
85+
install(TARGETS ${PROJECT_NAME}
86+
EXPORT "${PROJECT_NAME}-targets"
87+
ARCHIVE DESTINATION lib
88+
LIBRARY DESTINATION lib
89+
RUNTIME DESTINATION bin
90+
)
91+
92+
## Mark cpp header files for installation
93+
install(
94+
DIRECTORY include/
95+
DESTINATION include
96+
)
97+
98+
## Export KVS SDK artifacts
99+
install(
100+
DIRECTORY ${KVSSDK_EXTERNAL_LIB_DIR}/
101+
DESTINATION lib/
102+
)
103+
104+
install(
105+
DIRECTORY ${KVSSDK_EXTERNAL_INCLUDE_DIR}/
106+
DESTINATION include
107+
)
108+
109+
export(TARGETS ${PROJECT_NAME}
110+
FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake")
111+
export(PACKAGE ${PROJECT_NAME})
112+
113+
CONFIGURE_FILE(${PROJECT_NAME}Config.cmake.in
114+
${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY)
115+
CONFIGURE_FILE(${PROJECT_NAME}ConfigVersion.cmake.in
116+
${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake @ONLY)
117+
118+
INSTALL(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake DESTINATION share/${PROJECT_NAME}/cmake)
119+
INSTALL(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake DESTINATION share/${PROJECT_NAME}/cmake)
120+
INSTALL(EXPORT ${PROJECT_NAME}-targets DESTINATION share/${PROJECT_NAME}/cmake)
121+
INSTALL(FILES FindKVSSDK.cmake DESTINATION share/${PROJECT_NAME}/cmake)

kinesis_manager/FindKVSSDK.cmake

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
if(NOT KVSSDK_EXTERNAL_INCLUDE_DIR)
2+
set(KVSSDK_EXTERNAL_INCLUDE_DIR ${CMAKE_BINARY_DIR}/external/include)
3+
endif()
4+
5+
if(NOT KVSSDK_EXTERNAL_LIB_DIR)
6+
set(KVSSDK_EXTERNAL_LIB_DIR ${CMAKE_BINARY_DIR}/external/lib)
7+
endif()
8+
9+
find_path(KVSSDK_PRODUCER_INCLUDE_DIR NAMES KinesisVideoProducer.h HINTS ${KVSSDK_EXTERNAL_INCLUDE_DIR}/kinesis-video-producer)
10+
if(NOT KVSSDK_PRODUCER_INCLUDE_DIR)
11+
# Headers were not installed in the expected location. Try to find & install them.
12+
find_path(KVSSDK_PRODUCER_INCLUDE_DIR NAMES KinesisVideoProducer.h HINTS ${CMAKE_BINARY_DIR}/external/kinesis-video-producer/src)
13+
if(KVSSDK_PRODUCER_INCLUDE_DIR)
14+
file(MAKE_DIRECTORY ${KVSSDK_EXTERNAL_INCLUDE_DIR})
15+
file(MAKE_DIRECTORY ${KVSSDK_EXTERNAL_LIB_DIR})
16+
file(GLOB KINESIS_VIDEO_PRODUCER_HEADERS "${KVSSDK_PRODUCER_INCLUDE_DIR}/*.h")
17+
file(COPY ${KINESIS_VIDEO_PRODUCER_HEADERS} DESTINATION ${KVSSDK_EXTERNAL_INCLUDE_DIR}/kinesis-video-producer)
18+
set(_additional_include_dirs
19+
${KVSSDK_PRODUCER_INCLUDE_DIR}/../opensource/jsoncpp/json
20+
${KVSSDK_PRODUCER_INCLUDE_DIR}/../../kinesis-video-native-build/downloads/local/include/log4cplus
21+
${KVSSDK_PRODUCER_INCLUDE_DIR}/../../kinesis-video-pic/src/client/include/*
22+
${KVSSDK_PRODUCER_INCLUDE_DIR}/../../kinesis-video-pic/src/common/include/*
23+
${KVSSDK_PRODUCER_INCLUDE_DIR}/../../kinesis-video-pic/src/utils/include/*
24+
${KVSSDK_PRODUCER_INCLUDE_DIR}/../../kinesis-video-pic/src/mkvgen/include/*
25+
${KVSSDK_PRODUCER_INCLUDE_DIR}/../../kinesis-video-pic/src/view/include/*
26+
${KVSSDK_PRODUCER_INCLUDE_DIR}/../../kinesis-video-pic/src/heap/include/*)
27+
foreach(_additional_include_dir ${_additional_include_dirs})
28+
file(GLOB _ADDITIONAL_HEADER_FILES "${_additional_include_dir}")
29+
file(COPY ${_ADDITIONAL_HEADER_FILES} DESTINATION ${KVSSDK_EXTERNAL_INCLUDE_DIR}/)
30+
endforeach()
31+
endif()
32+
endif()
33+
34+
if(KVSSDK_PRODUCER_INCLUDE_DIR)
35+
set(KVSSDK_INCLUDE_DIR ${KVSSDK_EXTERNAL_INCLUDE_DIR})
36+
set(KVSSDK_INCLUDE_DIRS ${KVSSDK_INCLUDE_DIR})
37+
if(NOT KVSSDK_LIBRARY)
38+
find_library(KVSSDK_LIBRARY NAMES producer libproducer HINTS ${KVSSDK_EXTERNAL_LIB_DIR})
39+
# Libraries were not installed in the expected location. Try to find & install them.
40+
if(NOT KVSSDK_LIBRARY)
41+
file(GLOB PRODUCER_LIB "${CMAKE_BINARY_DIR}/external/kinesis-video-native-build/downloads/local/lib/libproducer*")
42+
file(COPY ${PRODUCER_LIB} DESTINATION ${KVSSDK_EXTERNAL_LIB_DIR}/)
43+
file(GLOB LOG_LIB "${CMAKE_BINARY_DIR}/external/kinesis-video-native-build/downloads/local/lib/liblog4cplus*")
44+
file(COPY ${LOG_LIB} DESTINATION ${KVSSDK_EXTERNAL_LIB_DIR}/)
45+
endif()
46+
find_library(KVSSDK_LIBRARY NAMES producer libproducer HINTS ${KVSSDK_EXTERNAL_LIB_DIR})
47+
if(EXISTS "${KVSSDK_LIBRARY}")
48+
set(KVSSDK_LIBRARIES ${KVSSDK_LIBRARY})
49+
set(KVSSDK_FOUND true)
50+
endif()
51+
endif()
52+
endif()

0 commit comments

Comments
 (0)