Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions ports/libdatachannel/CONTROL
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Source: libdatachannel
Version: 0.9.4
Build-Depends: libjuice, plog, usrsctp
Homepage: https://github.com/paullouisageneau/libdatachannel
Description: libdatachannel is a standalone implementation of WebRTC Data Channels, WebRTC Media Transport, and WebSockets in C++17 with C bindings for POSIX platforms (including GNU/Linux, Android, and Apple macOS) and Microsoft Windows.

Feature: no-ws
Description: Disable Web Socket support

Feature: srtp
Description: Use Cisco's libSRTP for media transport.
Build-Depends: libsrtp
112 changes: 112 additions & 0 deletions ports/libdatachannel/fix-for-vcpkg.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0098760..3b333ea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -105,30 +105,19 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE)
find_package(Threads REQUIRED)

set(CMAKE_POLICY_DEFAULT_CMP0048 NEW)
-add_subdirectory(deps/plog)

-option(sctp_build_programs 0)
-add_subdirectory(deps/usrsctp EXCLUDE_FROM_ALL)
-if (MSYS OR MINGW)
- target_compile_definitions(usrsctp PUBLIC -DSCTP_STDINT_INCLUDE=<stdint.h>)
- target_compile_definitions(usrsctp-static PUBLIC -DSCTP_STDINT_INCLUDE=<stdint.h>)
-endif()
-if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
- target_compile_options(usrsctp PRIVATE -Wno-error=format-truncation)
- target_compile_options(usrsctp-static PRIVATE -Wno-error=format-truncation)
-endif()
-add_library(Usrsctp::Usrsctp ALIAS usrsctp)
-add_library(Usrsctp::UsrsctpStatic ALIAS usrsctp-static)
+find_package(libjuice CONFIG REQUIRED)
+find_path(PLOG_INCLUDE_DIRS "plog/Appenders/AndroidAppender.h")

if (NO_WEBSOCKET)
- add_library(datachannel SHARED
+ add_library(datachannel
${LIBDATACHANNEL_SOURCES})
add_library(datachannel-static STATIC EXCLUDE_FROM_ALL
${LIBDATACHANNEL_SOURCES})
target_compile_definitions(datachannel PUBLIC RTC_ENABLE_WEBSOCKET=0)
target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=0)
else()
- add_library(datachannel SHARED
+ add_library(datachannel
${LIBDATACHANNEL_SOURCES}
${LIBDATACHANNEL_WEBSOCKET_SOURCES})
add_library(datachannel-static STATIC EXCLUDE_FROM_ALL
@@ -145,17 +134,18 @@ set_target_properties(datachannel-static PROPERTIES
VERSION ${PROJECT_VERSION}
CXX_STANDARD 17)

-target_include_directories(datachannel PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
+target_include_directories(datachannel PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>)
target_include_directories(datachannel PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/rtc)
target_include_directories(datachannel PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
-target_link_libraries(datachannel PUBLIC Threads::Threads plog::plog)
-target_link_libraries(datachannel PRIVATE Usrsctp::UsrsctpStatic)
+target_include_directories(datachannel PRIVATE ${PLOG_INCLUDE_DIRS})
+target_link_libraries(datachannel PRIVATE usrsctp)

target_include_directories(datachannel-static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(datachannel-static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/rtc)
target_include_directories(datachannel-static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
-target_link_libraries(datachannel-static PUBLIC Threads::Threads plog::plog)
-target_link_libraries(datachannel-static PRIVATE Usrsctp::UsrsctpStatic)
+target_include_directories(datachannel-static PRIVATE ${PLOG_INCLUDE_DIRS})
+target_link_libraries(datachannel-static PUBLIC Threads::Threads)
+target_link_libraries(datachannel-static PRIVATE usrsctp)

if(WIN32)
target_link_libraries(datachannel PRIVATE wsock32 ws2_32) # winsock2
@@ -211,11 +201,10 @@ if (USE_NICE OR NOT USE_JUICE)
target_link_libraries(datachannel PRIVATE LibNice::LibNice)
target_link_libraries(datachannel-static PRIVATE LibNice::LibNice)
else()
- add_subdirectory(deps/libjuice EXCLUDE_FROM_ALL)
target_compile_definitions(datachannel PRIVATE USE_NICE=0)
target_compile_definitions(datachannel-static PRIVATE USE_NICE=0)
- target_link_libraries(datachannel PRIVATE LibJuice::LibJuiceStatic)
- target_link_libraries(datachannel-static PRIVATE LibJuice::LibJuiceStatic)
+ target_link_libraries(datachannel PRIVATE LibJuice::juice)
+ target_link_libraries(datachannel-static PRIVATE LibJuice::juice)
endif()

if(CAPI_STDCALL)
@@ -226,7 +215,11 @@ endif()
add_library(LibDataChannel::LibDataChannel ALIAS datachannel)
add_library(LibDataChannel::LibDataChannelStatic ALIAS datachannel-static)

-install(TARGETS datachannel LIBRARY DESTINATION lib)
+install(TARGETS datachannel EXPORT libdatachannel-config
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
install(FILES ${LIBDATACHANNEL_HEADERS} DESTINATION include/rtc)

if(NOT MSVC)
@@ -283,3 +276,8 @@ if(NOT NO_EXAMPLES)
add_subdirectory(examples/copy-paste-capi)
endif()

+install(
+ EXPORT libdatachannel-config
+ NAMESPACE LibDatachannel::
+ DESTINATION share/cmake/libdatachannel
+)
diff --git a/src/tcptransport.hpp b/src/tcptransport.hpp
index 1447835..1c92686 100644
--- a/src/tcptransport.hpp
+++ b/src/tcptransport.hpp
@@ -29,7 +29,7 @@
#include <thread>

// Use the socket defines from libjuice
-#include "../deps/libjuice/src/socket.h"
+#include <juice/src/socket.h>

namespace rtc {

32 changes: 32 additions & 0 deletions ports/libdatachannel/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO paullouisageneau/libdatachannel
REF v0.9.4
SHA512 aa4d5b0fad86ac9a323f89583508b416ad6cf5f0384458b3ba1aed9ba85093eb92dab6fbdcf915e9716d9b4fb38c57469d6ef59e05467232583556fc7652168e
HEAD_REF master
PATCHES
fix-for-vcpkg.patch
)

vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
no-ws NO_WEBSOCKET
)

vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
${FEATURE_OPTIONS}
-DNO_EXAMPLES=ON
-DNO_TESTS=ON
)

vcpkg_install_cmake()

file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")

vcpkg_fixup_cmake_targets(CONFIG_PATH share/cmake/libdatachannel)
vcpkg_fixup_pkgconfig()

file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)