|
@@ -7,8 +7,12 @@ set(PROJECT_DESCRIPTION "C/C++ WebRTC network library featuring Data Channels, M
|
|
|
# Options
|
|
|
option(USE_GNUTLS "Use GnuTLS instead of OpenSSL" OFF)
|
|
|
option(USE_NICE "Use libnice instead of libjuice" OFF)
|
|
|
-option(USE_SYSTEM_SRTP "Use system libSRTP" OFF)
|
|
|
-option(USE_SYSTEM_JUICE "Use system libjuice" OFF)
|
|
|
+option(PREFER_SYSTEM_LIB "Prefer system libraries over deps folder" OFF)
|
|
|
+option(USE_SYSTEM_SRTP "Use system libSRTP" ${PREFER_SYSTEM_LIB})
|
|
|
+option(USE_SYSTEM_JUICE "Use system libjuice" ${PREFER_SYSTEM_LIB})
|
|
|
+option(USE_SYSTEM_USRSCTP "Use system libusrsctp" ${PREFER_SYSTEM_LIB})
|
|
|
+option(USE_SYSTEM_PLOG "Use system Plog" ${PREFER_SYSTEM_LIB})
|
|
|
+option(USE_SYSTEM_JSON "Use system Nlohmann JSON" ${PREFER_SYSTEM_LIB})
|
|
|
option(NO_WEBSOCKET "Disable WebSocket support" OFF)
|
|
|
option(NO_MEDIA "Disable media transport support" OFF)
|
|
|
option(NO_EXAMPLES "Disable examples" OFF)
|
|
@@ -202,25 +206,34 @@ set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
|
|
-set(CMAKE_POLICY_DEFAULT_CMP0048 NEW)
|
|
|
-add_subdirectory(deps/plog EXCLUDE_FROM_ALL)
|
|
|
+if(USE_SYSTEM_PLOG)
|
|
|
+ find_package(plog REQUIRED)
|
|
|
+else()
|
|
|
+ set(CMAKE_POLICY_DEFAULT_CMP0048 NEW)
|
|
|
+ add_subdirectory(deps/plog EXCLUDE_FROM_ALL)
|
|
|
+endif()
|
|
|
|
|
|
if(SCTP_DEBUG)
|
|
|
add_definitions(-DSCTP_DEBUG)
|
|
|
endif()
|
|
|
-option(sctp_build_shared_lib OFF)
|
|
|
-option(sctp_build_programs OFF)
|
|
|
-option(sctp_inet OFF)
|
|
|
-option(sctp_inet6 OFF)
|
|
|
-set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
|
|
|
-add_subdirectory(deps/usrsctp EXCLUDE_FROM_ALL)
|
|
|
-if (MSYS OR MINGW)
|
|
|
- target_compile_definitions(usrsctp PUBLIC -DSCTP_STDINT_INCLUDE=<stdint.h>)
|
|
|
-endif()
|
|
|
-if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
|
|
- target_compile_options(usrsctp PRIVATE -Wno-error=format-truncation)
|
|
|
+
|
|
|
+if(USE_SYSTEM_USRSCTP)
|
|
|
+ find_package(Usrsctp REQUIRED)
|
|
|
+else()
|
|
|
+ option(sctp_build_shared_lib OFF)
|
|
|
+ option(sctp_build_programs OFF)
|
|
|
+ option(sctp_inet OFF)
|
|
|
+ option(sctp_inet6 OFF)
|
|
|
+ set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
|
|
|
+ add_subdirectory(deps/usrsctp EXCLUDE_FROM_ALL)
|
|
|
+ if (MSYS OR MINGW)
|
|
|
+ target_compile_definitions(usrsctp PUBLIC -DSCTP_STDINT_INCLUDE=<stdint.h>)
|
|
|
+ endif()
|
|
|
+ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
|
|
+ target_compile_options(usrsctp PRIVATE -Wno-error=format-truncation)
|
|
|
+ endif()
|
|
|
+ add_library(Usrsctp::Usrsctp ALIAS usrsctp)
|
|
|
endif()
|
|
|
-add_library(Usrsctp::Usrsctp ALIAS usrsctp)
|
|
|
|
|
|
add_library(datachannel SHARED
|
|
|
${LIBDATACHANNEL_SOURCES}
|
|
@@ -473,7 +486,11 @@ endif()
|
|
|
# Examples
|
|
|
if(NOT NO_EXAMPLES)
|
|
|
set(JSON_BuildTests OFF CACHE INTERNAL "")
|
|
|
- add_subdirectory(deps/json EXCLUDE_FROM_ALL)
|
|
|
+ if(USE_SYSTEM_JSON)
|
|
|
+ find_package(nlohmann_json REQUIRED)
|
|
|
+ else()
|
|
|
+ add_subdirectory(deps/json EXCLUDE_FROM_ALL)
|
|
|
+ endif()
|
|
|
|
|
|
if(NOT NO_WEBSOCKET)
|
|
|
add_subdirectory(examples/client)
|