@@ -55,36 +55,41 @@ if(BP_BUILD_LIB)
5555 endif ()
5656else ()
5757
58- if (DEFINED ENV{KINESIS_VIDEO_PIC_SRC})
59- set (KINESIS_VIDEO_PIC_SRC $ENV{KINESIS_VIDEO_PIC_SRC} )
60- else ()
61- set (KINESIS_VIDEO_PIC_SRC "${CMAKE_CURRENT_SOURCE_DIR} /../kinesis-video-pic" )
62- endif ()
63-
64- if (DEFINED ENV{KINESIS_VIDEO_PRODUCER_C_SRC})
65- set (KINESIS_VIDEO_PRODUCER_C_SRC $ENV{KINESIS_VIDEO_PRODUCER_C_SRC} )
66- else ()
67- set (KINESIS_VIDEO_PRODUCER_C_SRC "${CMAKE_CURRENT_SOURCE_DIR} /../kinesis-video-producer-c" )
58+ if (NOT KINESIS_VIDEO_PIC_SRC)
59+ if (DEFINED ENV{KINESIS_VIDEO_PIC_SRC})
60+ set (KINESIS_VIDEO_PIC_SRC $ENV{KINESIS_VIDEO_PIC_SRC} )
61+ else ()
62+ set (KINESIS_VIDEO_PIC_SRC "${CMAKE_CURRENT_SOURCE_DIR} /../kinesis-video-pic" )
63+ endif ()
6864 endif ()
6965
70- if (DEFINED ENV{KINESIS_VIDEO_OPEN_SOURCE_SRC})
71- set (KINESIS_VIDEO_OPEN_SOURCE_SRC $ENV{KINESIS_VIDEO_OPEN_SOURCE_SRC} )
72- else ()
73- set (KINESIS_VIDEO_OPEN_SOURCE_SRC "${CMAKE_CURRENT_SOURCE_DIR} /../kinesis-video-native-build/downloads" )
66+ if (NOT KINESIS_VIDEO_PRODUCER_C_SRC)
67+ if (DEFINED ENV{KINESIS_VIDEO_PRODUCER_C_SRC})
68+ set (KINESIS_VIDEO_PRODUCER_C_SRC $ENV{KINESIS_VIDEO_PRODUCER_C_SRC} )
69+ else ()
70+ set (KINESIS_VIDEO_PRODUCER_C_SRC "${CMAKE_CURRENT_SOURCE_DIR} " )
71+ endif ()
7472 endif ()
7573
76- if (DEFINED ENV{KVS_JSMN_ROOT})
77- set (KVS_JSMN_ROOT $ENV{KVS_JSMN_ROOT} )
78- else ()
79- message ( FATAL_ERROR "No JSMN root specified." )
74+ if (NOT KINESIS_VIDEO_OPEN_SOURCE_SRC)
75+ if (DEFINED ENV{KINESIS_VIDEO_OPEN_SOURCE_SRC})
76+ set (KINESIS_VIDEO_OPEN_SOURCE_SRC $ENV{KINESIS_VIDEO_OPEN_SOURCE_SRC} )
77+ else ()
78+ set (KINESIS_VIDEO_OPEN_SOURCE_SRC "${CMAKE_CURRENT_SOURCE_DIR} /../kinesis-video-native-build/downloads/local" )
79+ endif ()
8080 endif ()
8181
8282 message (STATUS "Kinesis Video PIC path is ${KINESIS_VIDEO_PIC_SRC} " )
83- message (STATUS "Kinesis Video Producer path is ${KINESIS_VIDEO_PRODUCER_SRC } " )
83+ message (STATUS "Kinesis Video Producer path is ${KINESIS_VIDEO_PRODUCER_C_SRC } " )
8484 message (STATUS "Kinesis Video Open Source path is ${KINESIS_VIDEO_OPEN_SOURCE_SRC} " )
8585
86- set (CMAKE_INSTALL_RPATH "${KVS_INSTALL_PATH} " )
87- set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
86+ if (NOT EXISTS ${KINESIS_VIDEO_PIC_SRC} )
87+ message (FATAL_ERROR "KINESIS_VIDEO_PIC_SRC ${KINESIS_VIDEO_PIC_SRC} does not exist" )
88+ elseif (NOT EXISTS ${KINESIS_VIDEO_PRODUCER_C_SRC} )
89+ message (FATAL_ERROR "KINESIS_VIDEO_PRODUCER_C_SRC ${KINESIS_VIDEO_PRODUCER_C_SRC} does not exist" )
90+ elseif (NOT EXISTS ${KINESIS_VIDEO_OPEN_SOURCE_SRC} )
91+ message (FATAL_ERROR "KINESIS_VIDEO_OPEN_SOURCE_SRC ${KINESIS_VIDEO_OPEN_SOURCE_SRC} does not exist." )
92+ endif ()
8893
8994 if (CMAKE_SIZEOF_VOID_P STREQUAL 4)
9095 message (STATUS "Bitness 32 bits" )
@@ -103,93 +108,110 @@ else()
103108 if ("${CMAKE_C_COMPILER_ID} " MATCHES "GNU|Clang" )
104109 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC" )
105110
106- find_package (PkgConfig REQUIRED)
111+ if (NOT OPENSSL_FOUND)
112+ message ("looking for openssl" )
113+ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
114+ set (OPENSSL_ROOT_DIR "/usr/local/opt/openssl" )
115+ endif ()
116+
117+ find_package (OpenSSL REQUIRED)
107118
108- if (USE_SYS_LIBRARIES AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
109- set (OPENSSL_ROOT_DIR "/usr/local/opt/openssl" )
119+ set (OPEN_SRC_INCLUDE_DIRS
120+ ${OPEN_SRC_INCLUDE_DIRS}
121+ ${OPENSSL_INCLUDE_DIR} )
110122 endif ()
111123
112- find_package (OpenSSL REQUIRED)
113- find_package (CURL REQUIRED)
124+ if (NOT CURL_FOUND AND BUILD_COMMON_CURL)
125+ message ("looking for curl" )
126+ find_package (CURL REQUIRED)
114127
115- set (OPEN_SRC_INCLUDE_DIRS
116- ${CURL_INCLUDE_DIRS}
117- ${OPENSSL_INCLUDE_DIR} )
128+ set (OPEN_SRC_INCLUDE_DIRS
129+ ${OPEN_SRC_INCLUDE_DIRS}
130+ ${CURL_INCLUDE_DIRS} )
131+ endif ()
118132
119- set (PRODUCER_C_LIBRARIES
120- ${OPENSSL_CRYPTO_LIBRARY}
121- ${OPENSSL_SSL_LIBRARY}
122- ${CURL_LIBRARIES} )
133+ if (NOT LIBSRTP_FOUND AND BUILD_COMMON_LWS)
134+ message ("looking for libwebsocket" )
135+ set (ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH} :${KINESIS_VIDEO_OPEN_SOURCE_SRC} /lib/pkgconfig" )
136+ pkg_check_modules(LIBSRTP REQUIRED libsrtp2)
137+
138+ set (OPEN_SRC_INCLUDE_DIRS
139+ ${LIBWEBSOCKET_INCLUDE_DIRS} )
140+ link_directories (${LIBWEBSOCKET_LIBRARY_DIRS} )
141+ endif ()
123142 endif ()
124143
125- find_library (KvsPic
126- NAMES kvspic
127- REQUIRED
128- PATHS ${KINESIS_VIDEO_PIC_SRC}
129- NO_DEFAULT_PATH)
130- find_library (Jsmn
144+ if (NOT Jsmn)
145+ find_library (Jsmn
131146 NAMES jsmn
132147 REQUIRED
133- PATHS ${KVS_JSMN_ROOT } /lib
148+ PATHS ${KINESIS_VIDEO_OPEN_SOURCE_SRC } /lib
134149 NO_DEFAULT_PATH)
150+ endif ()
135151
136152 # Uncomment below line for debug heap
137153 #add_definitions(-DHEAP_DEBUG)
138154
139155 # Uncomment below line for very verbose logging
140156 #add_definitions(-DLOG_STREAMING)
141157
142- set (PRODUCER_C_SOURCE_FILES
143- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /Auth.c
144- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /AwsV4Signer.c
145- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /CallbacksProvider.c
146- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /CurlApiCallbacks.c
147- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /DeviceInfoProvider.c
148- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /StreamInfoProvider.c
149- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /Producer.c
150- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /Request.c
151- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /Response.c
152- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /Util.c
153- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /FileAuthCallbacks.c
154- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /StaticAuthCallbacks.c
155- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /IotAuthCallback.c
156- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /ConnectionStaleStateMachine.c
157- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /ContinuousRetryStreamCallbacks.c
158- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /StateMachineData.c
159- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /StreamErrorReportStateMachine.c
160- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /StreamLatencyStateMachine.c
161- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /StreamCallbacksProvider.c
162- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /FileLoggerPlatformCallbackProvider.c
163- ${KINESIS_VIDEO_PRODUCER_C_SRC} /src/source /Version .c)
164-
165- include_directories (${KINESIS_VIDEO_PIC_SRC} /src/client/include )
166- include_directories (${KINESIS_VIDEO_PIC_SRC} /src/common/include )
167- include_directories (${KINESIS_VIDEO_PIC_SRC} /src/heap/include )
168- include_directories (${KINESIS_VIDEO_PIC_SRC} /src/trace/include )
169- include_directories (${KINESIS_VIDEO_PIC_SRC} /src/mkvgen/include )
170- include_directories (${KINESIS_VIDEO_PIC_SRC} /src/view/include )
171- include_directories (${KINESIS_VIDEO_PIC_SRC} /src/utils/include )
172- include_directories (${KINESIS_VIDEO_PRODUCER_C_SRC} )
158+ file (GLOB KVS_COMMON_SOURCE_FILES_BASE
159+ "src/source/Common/*.c"
160+ )
161+
162+ file (GLOB KVS_COMMON_SOURCE_FILES_LWS
163+ "src/source/Common/Lws/*.c"
164+ )
165+
166+ file (GLOB KVS_COMMON_SOURCE_FILES_CURL
167+ "src/source/Common/Curl/*.c"
168+ )
169+
170+ file (GLOB PRODUCER_C_SOURCE_FILES
171+ "src/source/*.c"
172+ )
173+
174+ file (GLOB PIC_HEADERS
175+ "${KINESIS_VIDEO_PIC_SRC} /src/*/include"
176+ )
177+
178+ include_directories (${PIC_HEADERS} )
179+ include_directories (${KINESIS_VIDEO_PRODUCER_C_SRC} /src/include )
173180 include_directories (${OPEN_SRC_INCLUDE_DIRS} )
174- include_directories (${KVS_JSMN_ROOT} /include )
181+ include_directories (${KINESIS_VIDEO_OPEN_SOURCE_SRC} /include )
182+
183+ add_subdirectory (${KINESIS_VIDEO_PIC_SRC} ./kvspic EXCLUDE_FROM_ALL )
175184
176- add_library (kvsproducerc SHARED ${PRODUCER_C_SOURCE_FILES} )
185+ if (BUILD_COMMON_LWS)
186+ add_library (kvsCommonLws STATIC ${KVS_COMMON_SOURCE_FILES_BASE} ${KVS_COMMON_SOURCE_FILES_LWS} )
187+ target_compile_definitions (kvsCommonLws PRIVATE KVS_BUILD_WITH_LWS=1)
188+ target_link_libraries (kvsCommonLws
189+ ${Jsmn}
190+ ${OPENSSL_CRYPTO_LIBRARY}
191+ ${OPENSSL_SSL_LIBRARY}
192+ ${LIBWEBSOCKET_LIBRARIES} )
193+ endif ()
177194
178- target_link_libraries (kvsproducerc
179- ${KvsPic}
195+ # producer only uses curl right now
196+ add_library (kvsCommonCurl STATIC ${KVS_COMMON_SOURCE_FILES_BASE} ${KVS_COMMON_SOURCE_FILES_CURL} )
197+ target_compile_definitions (kvsCommonCurl PRIVATE KVS_BUILD_WITH_CURL=1)
198+ target_link_libraries (kvsCommonCurl
180199 ${Jsmn}
181- ${PRODUCER_C_LIBRARIES} )
200+ ${OPENSSL_CRYPTO_LIBRARY}
201+ ${OPENSSL_SSL_LIBRARY}
202+ ${CURL_LIBRARIES} )
203+
204+ add_library (cproducer SHARED ${PRODUCER_C_SOURCE_FILES} )
205+
206+ target_link_libraries (cproducer
207+ kvspic
208+ kvsCommonCurl)
182209
183210 add_executable (kvsVideoOnlyStreamingSample ${KINESIS_VIDEO_PRODUCER_C_SRC} /samples/KvsVideoOnlyStreamingSample.c)
184211 target_link_libraries (kvsVideoOnlyStreamingSample
185- kvsproducerc )
212+ cproducer )
186213
187214 if (BUILD_TEST)
188215 add_subdirectory (tst)
189216 endif ()
190-
191- install (TARGETS kvsproducerc
192- DESTINATION ${KVS_INSTALL_PATH} )
193- install (TARGETS kvsVideoOnlyStreamingSample
194- DESTINATION ${KVS_INSTALL_PATH} )
195217endif ()
0 commit comments