@@ -7,6 +7,7 @@ set(PROJECT_DESCRIPTION "C/C++ WebRTC network library featuring Data Channels, M
7
7
include (GNUInstallDirs)
8
8
9
9
# Options
10
+ option (BUILD_SHARED_LIBS "Build shared libraries" ON )
10
11
option (USE_GNUTLS "Use GnuTLS instead of OpenSSL" OFF )
11
12
option (USE_MBEDTLS "Use Mbed TLS instead of OpenSSL" OFF )
12
13
option (USE_NICE "Use libnice instead of libjuice" OFF )
@@ -49,7 +50,6 @@ endif()
49
50
50
51
list (APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} /cmake/Modules)
51
52
set (CMAKE_POSITION_INDEPENDENT_CODE ON )
52
- set (BUILD_SHARED_LIBS OFF ) # to force usrsctp to be built static
53
53
54
54
if (WIN32 )
55
55
add_definitions (-DWIN32_LEAN_AND_MEAN)
@@ -254,7 +254,10 @@ else()
254
254
option (sctp_inet6 OFF )
255
255
option (sctp_werror OFF )
256
256
set (CMAKE_POLICY_DEFAULT_CMP0077 NEW)
257
+ set (OLD_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS} )
258
+ set (BUILD_SHARED_LIBS OFF ) # to force usrsctp to be built static
257
259
add_subdirectory (deps/usrsctp EXCLUDE_FROM_ALL )
260
+ set (BUILD_SHARED_LIBS ${OLD_BUILD_SHARED_LIBS} )
258
261
if (MSYS OR MINGW)
259
262
target_compile_definitions (usrsctp PUBLIC -DSCTP_STDINT_INCLUDE=<stdint.h>)
260
263
endif ()
@@ -268,7 +271,7 @@ if(RTC_UPDATE_VERSION_HEADER)
268
271
)
269
272
endif ()
270
273
271
- add_library (datachannel SHARED
274
+ add_library (datachannel
272
275
${LIBDATACHANNEL_SOURCES}
273
276
${LIBDATACHANNEL_HEADERS}
274
277
${LIBDATACHANNEL_IMPL_SOURCES}
@@ -301,18 +304,24 @@ target_compile_definitions(datachannel-static PUBLIC RTC_STATIC)
301
304
target_include_directories (datachannel PUBLIC
302
305
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
303
306
$<INSTALL_INTERFACE:include >)
304
- target_include_directories (datachannel PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /include /rtc)
305
- target_include_directories (datachannel PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /src)
306
- target_link_libraries (datachannel PRIVATE Threads::Threads)
307
- target_link_libraries (datachannel PRIVATE Usrsctp::Usrsctp plog::plog)
307
+ target_include_directories (datachannel PRIVATE
308
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /rtc
309
+ ${CMAKE_CURRENT_SOURCE_DIR} /src)
310
+ target_link_libraries (datachannel PRIVATE
311
+ Threads::Threads
312
+ Usrsctp::Usrsctp
313
+ $<BUILD_INTERFACE:plog::plog>)
308
314
309
315
target_include_directories (datachannel-static PUBLIC
310
316
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
311
317
$<INSTALL_INTERFACE:include >)
312
- target_include_directories (datachannel-static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /include /rtc)
313
- target_include_directories (datachannel-static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /src)
314
- target_link_libraries (datachannel-static PRIVATE Threads::Threads)
315
- target_link_libraries (datachannel-static PRIVATE Usrsctp::Usrsctp plog::plog)
318
+ target_include_directories (datachannel-static PRIVATE
319
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /rtc
320
+ ${CMAKE_CURRENT_SOURCE_DIR} /src)
321
+ target_link_libraries (datachannel-static PRIVATE
322
+ Threads::Threads
323
+ Usrsctp::Usrsctp
324
+ $<BUILD_INTERFACE:plog::plog>)
316
325
317
326
if (WIN32 )
318
327
target_link_libraries (datachannel PUBLIC ws2_32) # winsock2
@@ -348,7 +357,7 @@ else()
348
357
target_link_libraries (datachannel-static PRIVATE libSRTP::srtp2)
349
358
else ()
350
359
if (NOT TARGET srtp2)
351
- add_subdirectory (deps/libsrtp EXCLUDE_FROM_ALL )
360
+ add_subdirectory (deps/libsrtp)
352
361
endif ()
353
362
target_compile_definitions (datachannel PRIVATE RTC_SYSTEM_SRTP=0)
354
363
target_compile_definitions (datachannel-static PRIVATE RTC_SYSTEM_SRTP=0)
@@ -425,10 +434,10 @@ else()
425
434
target_link_libraries (datachannel PRIVATE LibJuice::LibJuice)
426
435
target_link_libraries (datachannel-static PRIVATE LibJuice::LibJuice)
427
436
else ()
428
- add_subdirectory (deps/libjuice EXCLUDE_FROM_ALL )
437
+ add_subdirectory (deps/libjuice)
429
438
target_compile_definitions (datachannel PRIVATE RTC_SYSTEM_JUICE=0)
430
439
target_compile_definitions (datachannel-static PRIVATE RTC_SYSTEM_JUICE=0)
431
- target_link_libraries (datachannel PRIVATE LibJuice::LibJuiceStatic )
440
+ target_link_libraries (datachannel PRIVATE LibJuice::LibJuice )
432
441
target_link_libraries (datachannel-static PRIVATE LibJuice::LibJuiceStatic)
433
442
endif ()
434
443
endif ()
@@ -470,6 +479,15 @@ install(FILES ${LIBDATACHANNEL_HEADERS}
470
479
)
471
480
472
481
# Export targets
482
+ if (NOT USE_SYSTEM_USRSCTP AND NOT BUILD_SHARED_LIBS )
483
+ # usrsctp lacks an export set
484
+ set_target_properties (usrsctp PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "" )
485
+ install (TARGETS usrsctp EXPORT UsrsctpTargets DESTINATION ${CMAKE_INSTALL_LIBDIR} )
486
+ install (EXPORT UsrsctpTargets
487
+ FILE UsrsctpTargets.cmake
488
+ NAMESPACE Usrsctp::
489
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/usrsctp)
490
+ endif ()
473
491
install (
474
492
EXPORT LibDataChannelTargets
475
493
FILE LibDataChannelTargets.cmake
0 commit comments