From 48ade4b1ca6a8d9f990ba285645c623831255253 Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Thu, 24 Sep 2020 09:51:21 +0200 Subject: [PATCH 01/10] libdatachannel port --- ports/libdatachannel/CONTROL | 10 ++ ports/libdatachannel/fix-for-vcpkg.patch | 161 +++++++++++++++++++++++ ports/libdatachannel/portfile.cmake | 40 ++++++ ports/libdatachannel/usage | 4 + 4 files changed, 215 insertions(+) create mode 100644 ports/libdatachannel/CONTROL create mode 100644 ports/libdatachannel/fix-for-vcpkg.patch create mode 100644 ports/libdatachannel/portfile.cmake create mode 100644 ports/libdatachannel/usage diff --git a/ports/libdatachannel/CONTROL b/ports/libdatachannel/CONTROL new file mode 100644 index 00000000000000..7f148ddd956ded --- /dev/null +++ b/ports/libdatachannel/CONTROL @@ -0,0 +1,10 @@ +Source: libdatachannel +Version: 0.9.0 +Port-Version: 1 +Build-Depends: libjuice, nlohmann-json, 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. +Default-Features: + +Feature: no-ws +Description: Disable Web Socket support diff --git a/ports/libdatachannel/fix-for-vcpkg.patch b/ports/libdatachannel/fix-for-vcpkg.patch new file mode 100644 index 00000000000000..d5f63334abdb39 --- /dev/null +++ b/ports/libdatachannel/fix-for-vcpkg.patch @@ -0,0 +1,161 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f690573..0b95045 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -104,61 +104,33 @@ 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=) +- target_compile_definitions(usrsctp-static PUBLIC -DSCTP_STDINT_INCLUDE=) +-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) + + if (NO_WEBSOCKET) + add_library(datachannel SHARED + ${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 + ${LIBDATACHANNEL_SOURCES} + ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) +- add_library(datachannel-static STATIC EXCLUDE_FROM_ALL +- ${LIBDATACHANNEL_SOURCES} +- ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) + target_compile_definitions(datachannel PUBLIC RTC_ENABLE_WEBSOCKET=1) +- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=1) + endif() + + set_target_properties(datachannel PROPERTIES + VERSION ${PROJECT_VERSION} + CXX_STANDARD 17) +-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 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/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-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_link_libraries(datachannel PUBLIC Threads::Threads) ++target_link_libraries(datachannel PRIVATE usrsctp) + + if(WIN32) + target_link_libraries(datachannel PRIVATE wsock32 ws2_32) # winsock2 +- target_link_libraries(datachannel-static PRIVATE wsock32 ws2_32) # winsock2 + endif() + + find_package(SRTP) +@@ -172,13 +144,10 @@ if(SRTP_FOUND) + endif() + message(STATUS "LibSRTP found, compiling with media transport") + target_compile_definitions(datachannel PUBLIC RTC_ENABLE_MEDIA=1) +- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_MEDIA=1) + target_link_libraries(datachannel PRIVATE SRTP::SRTP) +- target_link_libraries(datachannel-static PRIVATE SRTP::SRTP) + else() + message(STATUS "LibSRTP NOT found, compiling WITHOUT media transport") + target_compile_definitions(datachannel PUBLIC RTC_ENABLE_MEDIA=0) +- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_MEDIA=0) + endif() + + if (USE_GNUTLS) +@@ -192,49 +161,37 @@ if (USE_GNUTLS) + IMPORTED_LOCATION "${GNUTLS_LIBRARIES}") + endif() + target_compile_definitions(datachannel PRIVATE USE_GNUTLS=1) +- target_compile_definitions(datachannel-static PRIVATE USE_GNUTLS=1) + target_link_libraries(datachannel PRIVATE GnuTLS::GnuTLS) +- target_link_libraries(datachannel-static PRIVATE GnuTLS::GnuTLS) + else() + find_package(OpenSSL REQUIRED) + target_compile_definitions(datachannel PRIVATE USE_GNUTLS=0) +- target_compile_definitions(datachannel-static PRIVATE USE_GNUTLS=0) + target_link_libraries(datachannel PRIVATE OpenSSL::SSL) +- target_link_libraries(datachannel-static PRIVATE OpenSSL::SSL) + endif() + + if (USE_NICE OR NOT USE_JUICE) + find_package(LibNice REQUIRED) + target_compile_definitions(datachannel PRIVATE USE_NICE=1) +- target_compile_definitions(datachannel-static PRIVATE USE_NICE=1) + target_link_libraries(datachannel PRIVATE LibNice::LibNice) +- target_link_libraries(datachannel-static PRIVATE LibNice::LibNice) + else() +- add_subdirectory(deps/libjuice EXCLUDE_FROM_ALL) ++ #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) + 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 LIBRARY DESTINATION lib) + install(FILES ${LIBDATACHANNEL_HEADERS} DESTINATION include/rtc) + + if(NOT MSVC) + target_compile_options(datachannel PRIVATE -Wall -Wextra) +- target_compile_options(datachannel-static PRIVATE -Wall -Wextra) + endif() + + if(WARNINGS_AS_ERRORS) + if(MSVC) + target_compile_options(datachannel PRIVATE /WX) +- target_compile_options(datachannel-static PRIVATE /WX) + else() + target_compile_options(datachannel PRIVATE -Werror) +- target_compile_options(datachannel-static PRIVATE -Werror) + endif() + endif() + +@@ -277,3 +234,9 @@ 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 + + // Use the socket defines from libjuice +-#include "../deps/libjuice/src/socket.h" ++#include + + namespace rtc { + diff --git a/ports/libdatachannel/portfile.cmake b/ports/libdatachannel/portfile.cmake new file mode 100644 index 00000000000000..1aaab7b2081651 --- /dev/null +++ b/ports/libdatachannel/portfile.cmake @@ -0,0 +1,40 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO paullouisageneau/libdatachannel + REF v0.9.0 + SHA512 dd03005c65c6f6188804f2a7d9cb2edb6d83ff952fc000708324b5251bb41682eecf388496ab1c9de5796a92f83f95c1e9eba0b938c8d978f6af687ba99fa878 + HEAD_REF master + PATCHES + fix-for-vcpkg.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + no-ws NO_WEBSOCKET +) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(FILE "${SOURCE_PATH}/CMakeLists.txt") + file(READ ${FILE} _contents) + string(REPLACE "add_library(datachannel SHARED" "add_library(datachannel STATIC" _contents "${_contents}") + file(WRITE ${FILE} "${_contents}") +endif() + +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) +file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) \ No newline at end of file diff --git a/ports/libdatachannel/usage b/ports/libdatachannel/usage new file mode 100644 index 00000000000000..80c059105c0d5c --- /dev/null +++ b/ports/libdatachannel/usage @@ -0,0 +1,4 @@ +The package libdatachannel is compatible with built-in CMake targets: + + find_package(libdatachannel CONFIG REQUIRED) + target_link_libraries(main PRIVATE LibDatachannel::datachannel) \ No newline at end of file From ad8a4d224348ccbed970860f078b881bcd6aafd1 Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Fri, 25 Sep 2020 12:16:29 +0200 Subject: [PATCH 02/10] Fixed various things for pr. --- ports/libdatachannel/CONTROL | 2 - ports/libdatachannel/fix-for-vcpkg.patch | 357 +++++++++++++---------- ports/libdatachannel/portfile.cmake | 8 - ports/libdatachannel/usage | 4 - 4 files changed, 196 insertions(+), 175 deletions(-) delete mode 100644 ports/libdatachannel/usage diff --git a/ports/libdatachannel/CONTROL b/ports/libdatachannel/CONTROL index 7f148ddd956ded..875462aa01fc4a 100644 --- a/ports/libdatachannel/CONTROL +++ b/ports/libdatachannel/CONTROL @@ -1,10 +1,8 @@ Source: libdatachannel Version: 0.9.0 -Port-Version: 1 Build-Depends: libjuice, nlohmann-json, 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. -Default-Features: Feature: no-ws Description: Disable Web Socket support diff --git a/ports/libdatachannel/fix-for-vcpkg.patch b/ports/libdatachannel/fix-for-vcpkg.patch index d5f63334abdb39..9d7219d04e4040 100644 --- a/ports/libdatachannel/fix-for-vcpkg.patch +++ b/ports/libdatachannel/fix-for-vcpkg.patch @@ -1,161 +1,196 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index f690573..0b95045 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -104,61 +104,33 @@ 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=) -- target_compile_definitions(usrsctp-static PUBLIC -DSCTP_STDINT_INCLUDE=) --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) - - if (NO_WEBSOCKET) - add_library(datachannel SHARED - ${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 - ${LIBDATACHANNEL_SOURCES} - ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) -- add_library(datachannel-static STATIC EXCLUDE_FROM_ALL -- ${LIBDATACHANNEL_SOURCES} -- ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) - target_compile_definitions(datachannel PUBLIC RTC_ENABLE_WEBSOCKET=1) -- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=1) - endif() - - set_target_properties(datachannel PROPERTIES - VERSION ${PROJECT_VERSION} - CXX_STANDARD 17) --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 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/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-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_link_libraries(datachannel PUBLIC Threads::Threads) -+target_link_libraries(datachannel PRIVATE usrsctp) - - if(WIN32) - target_link_libraries(datachannel PRIVATE wsock32 ws2_32) # winsock2 -- target_link_libraries(datachannel-static PRIVATE wsock32 ws2_32) # winsock2 - endif() - - find_package(SRTP) -@@ -172,13 +144,10 @@ if(SRTP_FOUND) - endif() - message(STATUS "LibSRTP found, compiling with media transport") - target_compile_definitions(datachannel PUBLIC RTC_ENABLE_MEDIA=1) -- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_MEDIA=1) - target_link_libraries(datachannel PRIVATE SRTP::SRTP) -- target_link_libraries(datachannel-static PRIVATE SRTP::SRTP) - else() - message(STATUS "LibSRTP NOT found, compiling WITHOUT media transport") - target_compile_definitions(datachannel PUBLIC RTC_ENABLE_MEDIA=0) -- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_MEDIA=0) - endif() - - if (USE_GNUTLS) -@@ -192,49 +161,37 @@ if (USE_GNUTLS) - IMPORTED_LOCATION "${GNUTLS_LIBRARIES}") - endif() - target_compile_definitions(datachannel PRIVATE USE_GNUTLS=1) -- target_compile_definitions(datachannel-static PRIVATE USE_GNUTLS=1) - target_link_libraries(datachannel PRIVATE GnuTLS::GnuTLS) -- target_link_libraries(datachannel-static PRIVATE GnuTLS::GnuTLS) - else() - find_package(OpenSSL REQUIRED) - target_compile_definitions(datachannel PRIVATE USE_GNUTLS=0) -- target_compile_definitions(datachannel-static PRIVATE USE_GNUTLS=0) - target_link_libraries(datachannel PRIVATE OpenSSL::SSL) -- target_link_libraries(datachannel-static PRIVATE OpenSSL::SSL) - endif() - - if (USE_NICE OR NOT USE_JUICE) - find_package(LibNice REQUIRED) - target_compile_definitions(datachannel PRIVATE USE_NICE=1) -- target_compile_definitions(datachannel-static PRIVATE USE_NICE=1) - target_link_libraries(datachannel PRIVATE LibNice::LibNice) -- target_link_libraries(datachannel-static PRIVATE LibNice::LibNice) - else() -- add_subdirectory(deps/libjuice EXCLUDE_FROM_ALL) -+ #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) - 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 LIBRARY DESTINATION lib) - install(FILES ${LIBDATACHANNEL_HEADERS} DESTINATION include/rtc) - - if(NOT MSVC) - target_compile_options(datachannel PRIVATE -Wall -Wextra) -- target_compile_options(datachannel-static PRIVATE -Wall -Wextra) - endif() - - if(WARNINGS_AS_ERRORS) - if(MSVC) - target_compile_options(datachannel PRIVATE /WX) -- target_compile_options(datachannel-static PRIVATE /WX) - else() - target_compile_options(datachannel PRIVATE -Werror) -- target_compile_options(datachannel-static PRIVATE -Werror) - endif() - endif() - -@@ -277,3 +234,9 @@ 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 - - // Use the socket defines from libjuice --#include "../deps/libjuice/src/socket.h" -+#include - - namespace rtc { - +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f690573..01f53f1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -104,61 +104,43 @@ 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=) +- target_compile_definitions(usrsctp-static PUBLIC -DSCTP_STDINT_INCLUDE=) +-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) + + if (NO_WEBSOCKET) ++ if(BUILD_SHARED_LIBS) + add_library(datachannel SHARED + ${LIBDATACHANNEL_SOURCES}) +- add_library(datachannel-static STATIC EXCLUDE_FROM_ALL ++ else() ++ add_library(datachannel STATIC + ${LIBDATACHANNEL_SOURCES}) ++ endif() + target_compile_definitions(datachannel PUBLIC RTC_ENABLE_WEBSOCKET=0) +- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=0) + else() ++ if(BUILD_SHARED_LIBS) + add_library(datachannel SHARED + ${LIBDATACHANNEL_SOURCES} + ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) +- add_library(datachannel-static STATIC EXCLUDE_FROM_ALL ++ else() ++ add_library(datachannel STATIC + ${LIBDATACHANNEL_SOURCES} + ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) ++ endif() + target_compile_definitions(datachannel PUBLIC RTC_ENABLE_WEBSOCKET=1) +- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=1) + endif() + + set_target_properties(datachannel PROPERTIES + VERSION ${PROJECT_VERSION} + CXX_STANDARD 17) +-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 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/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-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_link_libraries(datachannel PUBLIC Threads::Threads) ++target_link_libraries(datachannel PRIVATE usrsctp) + + if(WIN32) + target_link_libraries(datachannel PRIVATE wsock32 ws2_32) # winsock2 +- target_link_libraries(datachannel-static PRIVATE wsock32 ws2_32) # winsock2 + endif() + + find_package(SRTP) +@@ -172,13 +154,10 @@ if(SRTP_FOUND) + endif() + message(STATUS "LibSRTP found, compiling with media transport") + target_compile_definitions(datachannel PUBLIC RTC_ENABLE_MEDIA=1) +- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_MEDIA=1) + target_link_libraries(datachannel PRIVATE SRTP::SRTP) +- target_link_libraries(datachannel-static PRIVATE SRTP::SRTP) + else() + message(STATUS "LibSRTP NOT found, compiling WITHOUT media transport") + target_compile_definitions(datachannel PUBLIC RTC_ENABLE_MEDIA=0) +- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_MEDIA=0) + endif() + + if (USE_GNUTLS) +@@ -192,49 +171,38 @@ if (USE_GNUTLS) + IMPORTED_LOCATION "${GNUTLS_LIBRARIES}") + endif() + target_compile_definitions(datachannel PRIVATE USE_GNUTLS=1) +- target_compile_definitions(datachannel-static PRIVATE USE_GNUTLS=1) + target_link_libraries(datachannel PRIVATE GnuTLS::GnuTLS) +- target_link_libraries(datachannel-static PRIVATE GnuTLS::GnuTLS) + else() + find_package(OpenSSL REQUIRED) + target_compile_definitions(datachannel PRIVATE USE_GNUTLS=0) +- target_compile_definitions(datachannel-static PRIVATE USE_GNUTLS=0) + target_link_libraries(datachannel PRIVATE OpenSSL::SSL) +- target_link_libraries(datachannel-static PRIVATE OpenSSL::SSL) + endif() + + if (USE_NICE OR NOT USE_JUICE) + find_package(LibNice REQUIRED) + target_compile_definitions(datachannel PRIVATE USE_NICE=1) +- target_compile_definitions(datachannel-static PRIVATE USE_NICE=1) + 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) + 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) + target_compile_options(datachannel PRIVATE -Wall -Wextra) +- target_compile_options(datachannel-static PRIVATE -Wall -Wextra) + endif() + + if(WARNINGS_AS_ERRORS) + if(MSVC) + target_compile_options(datachannel PRIVATE /WX) +- target_compile_options(datachannel-static PRIVATE /WX) + else() + target_compile_options(datachannel PRIVATE -Werror) +- target_compile_options(datachannel-static PRIVATE -Werror) + endif() + endif() + +@@ -246,11 +214,7 @@ if(NOT NO_TESTS) + CXX_STANDARD 17) + set_target_properties(datachannel-tests PROPERTIES OUTPUT_NAME tests) + target_include_directories(datachannel-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) +- if(WIN32) +- target_link_libraries(datachannel-tests datachannel-static) # DLL exports only the C API +- else() +- target_link_libraries(datachannel-tests datachannel) +- endif() ++ target_link_libraries(datachannel-tests datachannel) + + # Benchmark + add_executable(datachannel-benchmark test/benchmark.cpp) +@@ -260,11 +224,7 @@ if(NOT NO_TESTS) + set_target_properties(datachannel-benchmark PROPERTIES OUTPUT_NAME benchmark) + target_compile_definitions(datachannel-benchmark PRIVATE BENCHMARK_MAIN=1) + target_include_directories(datachannel-benchmark PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) +- if(WIN32) +- target_link_libraries(datachannel-benchmark datachannel-static) # DLL exports only the C API +- else() +- target_link_libraries(datachannel-benchmark datachannel) +- endif() ++ target_link_libraries(datachannel-benchmark datachannel) + endif() + + # Examples +@@ -277,3 +237,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 + + // Use the socket defines from libjuice +-#include "../deps/libjuice/src/socket.h" ++#include + + namespace rtc { + diff --git a/ports/libdatachannel/portfile.cmake b/ports/libdatachannel/portfile.cmake index 1aaab7b2081651..65d7255cd8c7c6 100644 --- a/ports/libdatachannel/portfile.cmake +++ b/ports/libdatachannel/portfile.cmake @@ -13,13 +13,6 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS no-ws NO_WEBSOCKET ) -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(FILE "${SOURCE_PATH}/CMakeLists.txt") - file(READ ${FILE} _contents) - string(REPLACE "add_library(datachannel SHARED" "add_library(datachannel STATIC" _contents "${_contents}") - file(WRITE ${FILE} "${_contents}") -endif() - vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA @@ -37,4 +30,3 @@ 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) -file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}) \ No newline at end of file diff --git a/ports/libdatachannel/usage b/ports/libdatachannel/usage deleted file mode 100644 index 80c059105c0d5c..00000000000000 --- a/ports/libdatachannel/usage +++ /dev/null @@ -1,4 +0,0 @@ -The package libdatachannel is compatible with built-in CMake targets: - - find_package(libdatachannel CONFIG REQUIRED) - target_link_libraries(main PRIVATE LibDatachannel::datachannel) \ No newline at end of file From 53ada4e140079771c3dd7b527cee1979f0fab8f1 Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Thu, 1 Oct 2020 08:10:47 +0200 Subject: [PATCH 03/10] Update to v0.9.2 --- ports/libdatachannel/CONTROL | 4 ++-- ports/libdatachannel/fix-for-vcpkg.patch | 16 +++++++++------- ports/libdatachannel/portfile.cmake | 4 ++-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/ports/libdatachannel/CONTROL b/ports/libdatachannel/CONTROL index 875462aa01fc4a..aa65d3ab1471aa 100644 --- a/ports/libdatachannel/CONTROL +++ b/ports/libdatachannel/CONTROL @@ -1,6 +1,6 @@ Source: libdatachannel -Version: 0.9.0 -Build-Depends: libjuice, nlohmann-json, plog, usrsctp +Version: 0.9.2 +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. diff --git a/ports/libdatachannel/fix-for-vcpkg.patch b/ports/libdatachannel/fix-for-vcpkg.patch index 9d7219d04e4040..97fc3df3b2fc5d 100644 --- a/ports/libdatachannel/fix-for-vcpkg.patch +++ b/ports/libdatachannel/fix-for-vcpkg.patch @@ -1,8 +1,8 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index f690573..01f53f1 100644 +index 415f79d..698c88f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -104,61 +104,43 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE) +@@ -104,61 +104,45 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) set(CMAKE_POLICY_DEFAULT_CMP0048 NEW) @@ -21,6 +21,7 @@ index f690573..01f53f1 100644 -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) + if(BUILD_SHARED_LIBS) @@ -67,6 +68,7 @@ index f690573..01f53f1 100644 -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 PRIVATE ${PLOG_INCLUDE_DIRS}) +target_link_libraries(datachannel PUBLIC Threads::Threads) +target_link_libraries(datachannel PRIVATE usrsctp) @@ -76,7 +78,7 @@ index f690573..01f53f1 100644 endif() find_package(SRTP) -@@ -172,13 +154,10 @@ if(SRTP_FOUND) +@@ -172,13 +156,10 @@ if(SRTP_FOUND) endif() message(STATUS "LibSRTP found, compiling with media transport") target_compile_definitions(datachannel PUBLIC RTC_ENABLE_MEDIA=1) @@ -90,7 +92,7 @@ index f690573..01f53f1 100644 endif() if (USE_GNUTLS) -@@ -192,49 +171,38 @@ if (USE_GNUTLS) +@@ -192,49 +173,38 @@ if (USE_GNUTLS) IMPORTED_LOCATION "${GNUTLS_LIBRARIES}") endif() target_compile_definitions(datachannel PRIVATE USE_GNUTLS=1) @@ -146,7 +148,7 @@ index f690573..01f53f1 100644 endif() endif() -@@ -246,11 +214,7 @@ if(NOT NO_TESTS) +@@ -246,11 +216,7 @@ if(NOT NO_TESTS) CXX_STANDARD 17) set_target_properties(datachannel-tests PROPERTIES OUTPUT_NAME tests) target_include_directories(datachannel-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -159,7 +161,7 @@ index f690573..01f53f1 100644 # Benchmark add_executable(datachannel-benchmark test/benchmark.cpp) -@@ -260,11 +224,7 @@ if(NOT NO_TESTS) +@@ -260,11 +226,7 @@ if(NOT NO_TESTS) set_target_properties(datachannel-benchmark PROPERTIES OUTPUT_NAME benchmark) target_compile_definitions(datachannel-benchmark PRIVATE BENCHMARK_MAIN=1) target_include_directories(datachannel-benchmark PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -172,7 +174,7 @@ index f690573..01f53f1 100644 endif() # Examples -@@ -277,3 +237,8 @@ if(NOT NO_EXAMPLES) +@@ -277,3 +239,8 @@ if(NOT NO_EXAMPLES) add_subdirectory(examples/copy-paste-capi) endif() diff --git a/ports/libdatachannel/portfile.cmake b/ports/libdatachannel/portfile.cmake index 65d7255cd8c7c6..b01293d67400a3 100644 --- a/ports/libdatachannel/portfile.cmake +++ b/ports/libdatachannel/portfile.cmake @@ -1,8 +1,8 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO paullouisageneau/libdatachannel - REF v0.9.0 - SHA512 dd03005c65c6f6188804f2a7d9cb2edb6d83ff952fc000708324b5251bb41682eecf388496ab1c9de5796a92f83f95c1e9eba0b938c8d978f6af687ba99fa878 + REF v0.9.2 + SHA512 7fc43728d3d7be5c088551f399941213b0cfbe6fb712befafe50851ff5495239913fab924dfd653fc202239c226082411ff8c768185f3838631fe7ee00d9e985 HEAD_REF master PATCHES fix-for-vcpkg.patch From 2ed77e240942c69cc4178a99addb5a634df69e34 Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Wed, 7 Oct 2020 15:10:28 +0200 Subject: [PATCH 04/10] Update to 0.9.4 and enable SRTP feature --- ports/libdatachannel/CONTROL | 6 +- ports/libdatachannel/fix-for-vcpkg.patch | 146 +++++------------------ ports/libdatachannel/portfile.cmake | 4 +- 3 files changed, 37 insertions(+), 119 deletions(-) diff --git a/ports/libdatachannel/CONTROL b/ports/libdatachannel/CONTROL index aa65d3ab1471aa..8653ec1c434864 100644 --- a/ports/libdatachannel/CONTROL +++ b/ports/libdatachannel/CONTROL @@ -1,8 +1,12 @@ Source: libdatachannel -Version: 0.9.2 +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 diff --git a/ports/libdatachannel/fix-for-vcpkg.patch b/ports/libdatachannel/fix-for-vcpkg.patch index 97fc3df3b2fc5d..30baa27cd75781 100644 --- a/ports/libdatachannel/fix-for-vcpkg.patch +++ b/ports/libdatachannel/fix-for-vcpkg.patch @@ -1,8 +1,8 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 415f79d..698c88f 100644 +index 0098760..3b333ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -104,61 +104,45 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE) +@@ -105,30 +105,19 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) set(CMAKE_POLICY_DEFAULT_CMP0048 NEW) @@ -24,107 +24,61 @@ index 415f79d..698c88f 100644 +find_path(PLOG_INCLUDE_DIRS "plog/Appenders/AndroidAppender.h") if (NO_WEBSOCKET) -+ if(BUILD_SHARED_LIBS) - add_library(datachannel SHARED +- add_library(datachannel SHARED ++ add_library(datachannel ${LIBDATACHANNEL_SOURCES}) -- add_library(datachannel-static STATIC EXCLUDE_FROM_ALL -+ else() -+ add_library(datachannel STATIC + add_library(datachannel-static STATIC EXCLUDE_FROM_ALL ${LIBDATACHANNEL_SOURCES}) -+ endif() target_compile_definitions(datachannel PUBLIC RTC_ENABLE_WEBSOCKET=0) -- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=0) + target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=0) else() -+ if(BUILD_SHARED_LIBS) - add_library(datachannel SHARED +- add_library(datachannel SHARED ++ add_library(datachannel ${LIBDATACHANNEL_SOURCES} ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) -- add_library(datachannel-static STATIC EXCLUDE_FROM_ALL -+ else() -+ add_library(datachannel STATIC - ${LIBDATACHANNEL_SOURCES} - ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) -+ endif() - target_compile_definitions(datachannel PUBLIC RTC_ENABLE_WEBSOCKET=1) -- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=1) - endif() - - set_target_properties(datachannel PROPERTIES + add_library(datachannel-static STATIC EXCLUDE_FROM_ALL +@@ -145,17 +134,18 @@ set_target_properties(datachannel-static PROPERTIES VERSION ${PROJECT_VERSION} CXX_STANDARD 17) --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 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) ++target_include_directories(datachannel PUBLIC $ $) 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-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 PRIVATE ${PLOG_INCLUDE_DIRS}) -+target_link_libraries(datachannel PUBLIC Threads::Threads) +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 -- target_link_libraries(datachannel-static PRIVATE wsock32 ws2_32) # winsock2 - endif() - - find_package(SRTP) -@@ -172,13 +156,10 @@ if(SRTP_FOUND) - endif() - message(STATUS "LibSRTP found, compiling with media transport") - target_compile_definitions(datachannel PUBLIC RTC_ENABLE_MEDIA=1) -- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_MEDIA=1) - target_link_libraries(datachannel PRIVATE SRTP::SRTP) -- target_link_libraries(datachannel-static PRIVATE SRTP::SRTP) - else() - message(STATUS "LibSRTP NOT found, compiling WITHOUT media transport") - target_compile_definitions(datachannel PUBLIC RTC_ENABLE_MEDIA=0) -- target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_MEDIA=0) - endif() - - if (USE_GNUTLS) -@@ -192,49 +173,38 @@ if (USE_GNUTLS) - IMPORTED_LOCATION "${GNUTLS_LIBRARIES}") - endif() - target_compile_definitions(datachannel PRIVATE USE_GNUTLS=1) -- target_compile_definitions(datachannel-static PRIVATE USE_GNUTLS=1) - target_link_libraries(datachannel PRIVATE GnuTLS::GnuTLS) -- target_link_libraries(datachannel-static PRIVATE GnuTLS::GnuTLS) - else() - find_package(OpenSSL REQUIRED) - target_compile_definitions(datachannel PRIVATE USE_GNUTLS=0) -- target_compile_definitions(datachannel-static PRIVATE USE_GNUTLS=0) - target_link_libraries(datachannel PRIVATE OpenSSL::SSL) -- target_link_libraries(datachannel-static PRIVATE OpenSSL::SSL) - endif() - - if (USE_NICE OR NOT USE_JUICE) - find_package(LibNice REQUIRED) - target_compile_definitions(datachannel PRIVATE USE_NICE=1) -- target_compile_definitions(datachannel-static PRIVATE USE_NICE=1) +@@ -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) + 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_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() --add_library(LibDataChannel::LibDataChannel ALIAS datachannel) --add_library(LibDataChannel::LibDataChannelStatic ALIAS datachannel-static) -- + 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 @@ -134,47 +88,7 @@ index 415f79d..698c88f 100644 install(FILES ${LIBDATACHANNEL_HEADERS} DESTINATION include/rtc) if(NOT MSVC) - target_compile_options(datachannel PRIVATE -Wall -Wextra) -- target_compile_options(datachannel-static PRIVATE -Wall -Wextra) - endif() - - if(WARNINGS_AS_ERRORS) - if(MSVC) - target_compile_options(datachannel PRIVATE /WX) -- target_compile_options(datachannel-static PRIVATE /WX) - else() - target_compile_options(datachannel PRIVATE -Werror) -- target_compile_options(datachannel-static PRIVATE -Werror) - endif() - endif() - -@@ -246,11 +216,7 @@ if(NOT NO_TESTS) - CXX_STANDARD 17) - set_target_properties(datachannel-tests PROPERTIES OUTPUT_NAME tests) - target_include_directories(datachannel-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) -- if(WIN32) -- target_link_libraries(datachannel-tests datachannel-static) # DLL exports only the C API -- else() -- target_link_libraries(datachannel-tests datachannel) -- endif() -+ target_link_libraries(datachannel-tests datachannel) - - # Benchmark - add_executable(datachannel-benchmark test/benchmark.cpp) -@@ -260,11 +226,7 @@ if(NOT NO_TESTS) - set_target_properties(datachannel-benchmark PROPERTIES OUTPUT_NAME benchmark) - target_compile_definitions(datachannel-benchmark PRIVATE BENCHMARK_MAIN=1) - target_include_directories(datachannel-benchmark PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) -- if(WIN32) -- target_link_libraries(datachannel-benchmark datachannel-static) # DLL exports only the C API -- else() -- target_link_libraries(datachannel-benchmark datachannel) -- endif() -+ target_link_libraries(datachannel-benchmark datachannel) - endif() - - # Examples -@@ -277,3 +239,8 @@ if(NOT NO_EXAMPLES) +@@ -283,3 +276,8 @@ if(NOT NO_EXAMPLES) add_subdirectory(examples/copy-paste-capi) endif() diff --git a/ports/libdatachannel/portfile.cmake b/ports/libdatachannel/portfile.cmake index b01293d67400a3..922878c317cf81 100644 --- a/ports/libdatachannel/portfile.cmake +++ b/ports/libdatachannel/portfile.cmake @@ -1,8 +1,8 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO paullouisageneau/libdatachannel - REF v0.9.2 - SHA512 7fc43728d3d7be5c088551f399941213b0cfbe6fb712befafe50851ff5495239913fab924dfd653fc202239c226082411ff8c768185f3838631fe7ee00d9e985 + REF v0.9.4 + SHA512 aa4d5b0fad86ac9a323f89583508b416ad6cf5f0384458b3ba1aed9ba85093eb92dab6fbdcf915e9716d9b4fb38c57469d6ef59e05467232583556fc7652168e HEAD_REF master PATCHES fix-for-vcpkg.patch From 59e1c5b351da9f069d50f90d4f4616ceeae40f8d Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Fri, 23 Oct 2020 21:37:14 +0200 Subject: [PATCH 05/10] Add openssl dependency --- ports/libdatachannel/CONTROL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/libdatachannel/CONTROL b/ports/libdatachannel/CONTROL index 8653ec1c434864..a75c6f804f8495 100644 --- a/ports/libdatachannel/CONTROL +++ b/ports/libdatachannel/CONTROL @@ -1,6 +1,6 @@ Source: libdatachannel Version: 0.9.4 -Build-Depends: libjuice, plog, usrsctp +Build-Depends: libjuice, plog, usrsctp, openssl 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. From 9c6c58cc3461654eed5df15c54a8c62112c134b9 Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Sat, 24 Oct 2020 00:36:43 +0200 Subject: [PATCH 06/10] Fix usrsctp find_library --- ports/libdatachannel/fix-for-vcpkg.patch | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ports/libdatachannel/fix-for-vcpkg.patch b/ports/libdatachannel/fix-for-vcpkg.patch index 30baa27cd75781..54555686122577 100644 --- a/ports/libdatachannel/fix-for-vcpkg.patch +++ b/ports/libdatachannel/fix-for-vcpkg.patch @@ -1,8 +1,8 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0098760..3b333ea 100644 +index 0098760..dd85ba6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -105,30 +105,19 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE) +@@ -105,30 +105,20 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) set(CMAKE_POLICY_DEFAULT_CMP0048 NEW) @@ -20,6 +20,7 @@ index 0098760..3b333ea 100644 -endif() -add_library(Usrsctp::Usrsctp ALIAS usrsctp) -add_library(Usrsctp::UsrsctpStatic ALIAS usrsctp-static) ++find_library(USRSCTP_LIBRARY usrsctp REQUIRED) +find_package(libjuice CONFIG REQUIRED) +find_path(PLOG_INCLUDE_DIRS "plog/Appenders/AndroidAppender.h") @@ -37,7 +38,7 @@ index 0098760..3b333ea 100644 ${LIBDATACHANNEL_SOURCES} ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) add_library(datachannel-static STATIC EXCLUDE_FROM_ALL -@@ -145,17 +134,18 @@ set_target_properties(datachannel-static PROPERTIES +@@ -145,17 +135,18 @@ set_target_properties(datachannel-static PROPERTIES VERSION ${PROJECT_VERSION} CXX_STANDARD 17) @@ -48,7 +49,7 @@ index 0098760..3b333ea 100644 -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_link_libraries(datachannel PRIVATE ${USRSCTP_LIBRARY}) target_include_directories(datachannel-static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) target_include_directories(datachannel-static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/rtc) @@ -57,11 +58,11 @@ index 0098760..3b333ea 100644 -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) ++target_link_libraries(datachannel-static PRIVATE ${USRSCTP_LIBRARY}) if(WIN32) target_link_libraries(datachannel PRIVATE wsock32 ws2_32) # winsock2 -@@ -211,11 +201,10 @@ if (USE_NICE OR NOT USE_JUICE) +@@ -211,11 +202,10 @@ if (USE_NICE OR NOT USE_JUICE) target_link_libraries(datachannel PRIVATE LibNice::LibNice) target_link_libraries(datachannel-static PRIVATE LibNice::LibNice) else() @@ -75,7 +76,7 @@ index 0098760..3b333ea 100644 endif() if(CAPI_STDCALL) -@@ -226,7 +215,11 @@ endif() +@@ -226,7 +216,11 @@ endif() add_library(LibDataChannel::LibDataChannel ALIAS datachannel) add_library(LibDataChannel::LibDataChannelStatic ALIAS datachannel-static) @@ -88,7 +89,7 @@ index 0098760..3b333ea 100644 install(FILES ${LIBDATACHANNEL_HEADERS} DESTINATION include/rtc) if(NOT MSVC) -@@ -283,3 +276,8 @@ if(NOT NO_EXAMPLES) +@@ -283,3 +277,8 @@ if(NOT NO_EXAMPLES) add_subdirectory(examples/copy-paste-capi) endif() From bba68336ac57d620e08f4f1bbf518a344cb77b0d Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Fri, 23 Oct 2020 18:39:04 -0700 Subject: [PATCH 07/10] Flip the sense of the websockets feature and use a manifest instead of CONTROL file. --- ports/libdatachannel/CONTROL | 12 ------------ ports/libdatachannel/portfile.cmake | 4 ++-- ports/libdatachannel/vcpkg.json | 26 ++++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 14 deletions(-) delete mode 100644 ports/libdatachannel/CONTROL create mode 100644 ports/libdatachannel/vcpkg.json diff --git a/ports/libdatachannel/CONTROL b/ports/libdatachannel/CONTROL deleted file mode 100644 index a75c6f804f8495..00000000000000 --- a/ports/libdatachannel/CONTROL +++ /dev/null @@ -1,12 +0,0 @@ -Source: libdatachannel -Version: 0.9.4 -Build-Depends: libjuice, plog, usrsctp, openssl -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 diff --git a/ports/libdatachannel/portfile.cmake b/ports/libdatachannel/portfile.cmake index 922878c317cf81..0dfc5614d6ab34 100644 --- a/ports/libdatachannel/portfile.cmake +++ b/ports/libdatachannel/portfile.cmake @@ -9,8 +9,8 @@ vcpkg_from_github( ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS - FEATURES - no-ws NO_WEBSOCKET + INVERTED_FEATURES + ws NO_WEBSOCKET ) vcpkg_configure_cmake( diff --git a/ports/libdatachannel/vcpkg.json b/ports/libdatachannel/vcpkg.json new file mode 100644 index 00000000000000..0de290317930d3 --- /dev/null +++ b/ports/libdatachannel/vcpkg.json @@ -0,0 +1,26 @@ +{ + "name": "libdatachannel", + "version-string": "0.9.4", + "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.", + "homepage": "https://github.com/paullouisageneau/libdatachannel", + "dependencies": [ + "libjuice", + "openssl", + "plog", + "usrsctp" + ], + "default-features": [ + "ws" + ], + "features": { + "srtp": { + "description": "Use Cisco's libSRTP for media transport.", + "dependencies": [ + "libsrtp" + ] + }, + "ws": { + "description": "Web Socket support" + } + } +} From 650e7cb5610e043bbd97aa6f52dc9bb428c9be83 Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Sun, 25 Oct 2020 00:11:19 +0200 Subject: [PATCH 08/10] Need to update libjuice and libdatachannel but there is now a USE_SRTP option. --- ports/libdatachannel/portfile.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/libdatachannel/portfile.cmake b/ports/libdatachannel/portfile.cmake index 0dfc5614d6ab34..3c53b92418c9cf 100644 --- a/ports/libdatachannel/portfile.cmake +++ b/ports/libdatachannel/portfile.cmake @@ -11,6 +11,7 @@ vcpkg_from_github( vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS INVERTED_FEATURES ws NO_WEBSOCKET + srtp USE_SRTP ) vcpkg_configure_cmake( From d7313ce181a3c1a7038dcf472c4f18e0b1c3fdee Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Sun, 25 Oct 2020 10:10:58 +0100 Subject: [PATCH 09/10] Update libdatachannel for USE_SRTP Option --- ports/libdatachannel/fix-for-vcpkg.patch | 26 ++++++++++++------------ ports/libdatachannel/portfile.cmake | 8 +++++--- ports/libdatachannel/vcpkg.json | 2 +- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/ports/libdatachannel/fix-for-vcpkg.patch b/ports/libdatachannel/fix-for-vcpkg.patch index 54555686122577..67db3272f972e7 100644 --- a/ports/libdatachannel/fix-for-vcpkg.patch +++ b/ports/libdatachannel/fix-for-vcpkg.patch @@ -1,13 +1,13 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0098760..dd85ba6 100644 +index 1560700..197ada2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -105,30 +105,20 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE) +@@ -108,30 +108,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) @@ -26,7 +26,7 @@ index 0098760..dd85ba6 100644 if (NO_WEBSOCKET) - add_library(datachannel SHARED -+ add_library(datachannel ++ add_library(datachannel ${LIBDATACHANNEL_SOURCES}) add_library(datachannel-static STATIC EXCLUDE_FROM_ALL ${LIBDATACHANNEL_SOURCES}) @@ -34,11 +34,11 @@ index 0098760..dd85ba6 100644 target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=0) else() - add_library(datachannel SHARED -+ add_library(datachannel ++ add_library(datachannel ${LIBDATACHANNEL_SOURCES} ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) add_library(datachannel-static STATIC EXCLUDE_FROM_ALL -@@ -145,17 +135,18 @@ set_target_properties(datachannel-static PROPERTIES +@@ -148,17 +137,17 @@ set_target_properties(datachannel-static PROPERTIES VERSION ${PROJECT_VERSION} CXX_STANDARD 17) @@ -49,7 +49,7 @@ index 0098760..dd85ba6 100644 -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_LIBRARY}) ++target_link_libraries(datachannel PUBLIC Threads::Threads ${USRSCTP_LIBRARY}) target_include_directories(datachannel-static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) target_include_directories(datachannel-static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/rtc) @@ -57,12 +57,11 @@ index 0098760..dd85ba6 100644 -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_LIBRARY}) ++target_link_libraries(datachannel-static PUBLIC Threads::Threads ${USRSCTP_LIBRARY}) if(WIN32) - target_link_libraries(datachannel PRIVATE wsock32 ws2_32) # winsock2 -@@ -211,11 +202,10 @@ if (USE_NICE OR NOT USE_JUICE) + target_link_libraries(datachannel PRIVATE ws2_32) # winsock2 +@@ -222,11 +211,10 @@ if (USE_NICE OR NOT USE_JUICE) target_link_libraries(datachannel PRIVATE LibNice::LibNice) target_link_libraries(datachannel-static PRIVATE LibNice::LibNice) else() @@ -76,7 +75,7 @@ index 0098760..dd85ba6 100644 endif() if(CAPI_STDCALL) -@@ -226,7 +216,11 @@ endif() +@@ -237,7 +225,11 @@ endif() add_library(LibDataChannel::LibDataChannel ALIAS datachannel) add_library(LibDataChannel::LibDataChannelStatic ALIAS datachannel-static) @@ -89,7 +88,7 @@ index 0098760..dd85ba6 100644 install(FILES ${LIBDATACHANNEL_HEADERS} DESTINATION include/rtc) if(NOT MSVC) -@@ -283,3 +277,8 @@ if(NOT NO_EXAMPLES) +@@ -294,3 +286,9 @@ if(NOT NO_EXAMPLES) add_subdirectory(examples/copy-paste-capi) endif() @@ -98,6 +97,7 @@ index 0098760..dd85ba6 100644 + NAMESPACE LibDatachannel:: + DESTINATION share/cmake/libdatachannel +) ++ diff --git a/src/tcptransport.hpp b/src/tcptransport.hpp index 1447835..1c92686 100644 --- a/src/tcptransport.hpp diff --git a/ports/libdatachannel/portfile.cmake b/ports/libdatachannel/portfile.cmake index 3c53b92418c9cf..d9e53773a37e99 100644 --- a/ports/libdatachannel/portfile.cmake +++ b/ports/libdatachannel/portfile.cmake @@ -1,17 +1,19 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO paullouisageneau/libdatachannel - REF v0.9.4 - SHA512 aa4d5b0fad86ac9a323f89583508b416ad6cf5f0384458b3ba1aed9ba85093eb92dab6fbdcf915e9716d9b4fb38c57469d6ef59e05467232583556fc7652168e + REF d59c209c2044b74b8a60f1de68aadea28298e6b3 + SHA512 35a01349e7038a7d1776d154ee2c111d431d29a426b4948a6288017d30a0baa71f497dc694996085811d7860e40c5e6906a3fb07150bda87f4d9ed56db9fec70 HEAD_REF master PATCHES fix-for-vcpkg.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + srtp USE_SRTP + INVERTED_FEATURES ws NO_WEBSOCKET - srtp USE_SRTP ) vcpkg_configure_cmake( diff --git a/ports/libdatachannel/vcpkg.json b/ports/libdatachannel/vcpkg.json index 0de290317930d3..cd6ee6990c8617 100644 --- a/ports/libdatachannel/vcpkg.json +++ b/ports/libdatachannel/vcpkg.json @@ -1,6 +1,6 @@ { "name": "libdatachannel", - "version-string": "0.9.4", + "version-string": "d59c209c2044b74b8a60f1de68aadea28298e6b3", "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.", "homepage": "https://github.com/paullouisageneau/libdatachannel", "dependencies": [ From 8d162708306f848c9c04593b1ae02a322afe10a7 Mon Sep 17 00:00:00 2001 From: Nemirtingas Date: Mon, 16 Nov 2020 10:36:01 +0100 Subject: [PATCH 10/10] Update libdatachannel to v0.10.1 --- ports/libdatachannel/fix-for-vcpkg.patch | 29 +++++++++++------------- ports/libdatachannel/portfile.cmake | 9 ++++---- ports/libdatachannel/vcpkg.json | 2 +- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/ports/libdatachannel/fix-for-vcpkg.patch b/ports/libdatachannel/fix-for-vcpkg.patch index 67db3272f972e7..fc6c26adf5303b 100644 --- a/ports/libdatachannel/fix-for-vcpkg.patch +++ b/ports/libdatachannel/fix-for-vcpkg.patch @@ -1,32 +1,29 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1560700..197ada2 100644 +index bed634b..fced56e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -108,30 +108,19 @@ set(THREADS_PREFER_PTHREAD_FLAG TRUE) +@@ -112,28 +112,18 @@ 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) +-option(sctp_build_shared_lib 0) -add_subdirectory(deps/usrsctp EXCLUDE_FROM_ALL) -if (MSYS OR MINGW) - target_compile_definitions(usrsctp PUBLIC -DSCTP_STDINT_INCLUDE=) -- target_compile_definitions(usrsctp-static PUBLIC -DSCTP_STDINT_INCLUDE=) -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_library(USRSCTP_LIBRARY usrsctp REQUIRED) -+find_package(libjuice CONFIG REQUIRED) +find_path(PLOG_INCLUDE_DIRS "plog/Appenders/AndroidAppender.h") if (NO_WEBSOCKET) - add_library(datachannel SHARED -+ add_library(datachannel ++ add_library(datachannel ${LIBDATACHANNEL_SOURCES}) add_library(datachannel-static STATIC EXCLUDE_FROM_ALL ${LIBDATACHANNEL_SOURCES}) @@ -34,11 +31,11 @@ index 1560700..197ada2 100644 target_compile_definitions(datachannel-static PUBLIC RTC_ENABLE_WEBSOCKET=0) else() - add_library(datachannel SHARED -+ add_library(datachannel ++ add_library(datachannel ${LIBDATACHANNEL_SOURCES} ${LIBDATACHANNEL_WEBSOCKET_SOURCES}) add_library(datachannel-static STATIC EXCLUDE_FROM_ALL -@@ -148,17 +137,17 @@ set_target_properties(datachannel-static PROPERTIES +@@ -150,17 +140,17 @@ set_target_properties(datachannel-static PROPERTIES VERSION ${PROJECT_VERSION} CXX_STANDARD 17) @@ -47,7 +44,7 @@ index 1560700..197ada2 100644 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_link_libraries(datachannel PRIVATE Usrsctp::Usrsctp) +target_include_directories(datachannel PRIVATE ${PLOG_INCLUDE_DIRS}) +target_link_libraries(datachannel PUBLIC Threads::Threads ${USRSCTP_LIBRARY}) @@ -55,17 +52,18 @@ index 1560700..197ada2 100644 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_link_libraries(datachannel-static PRIVATE Usrsctp::Usrsctp) +target_include_directories(datachannel-static PRIVATE ${PLOG_INCLUDE_DIRS}) +target_link_libraries(datachannel-static PUBLIC Threads::Threads ${USRSCTP_LIBRARY}) if(WIN32) target_link_libraries(datachannel PRIVATE ws2_32) # winsock2 -@@ -222,11 +211,10 @@ if (USE_NICE OR NOT USE_JUICE) +@@ -224,11 +214,11 @@ 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) ++ find_package(libjuice CONFIG REQUIRED) target_compile_definitions(datachannel PRIVATE USE_NICE=0) target_compile_definitions(datachannel-static PRIVATE USE_NICE=0) - target_link_libraries(datachannel PRIVATE LibJuice::LibJuiceStatic) @@ -74,8 +72,8 @@ index 1560700..197ada2 100644 + target_link_libraries(datachannel-static PRIVATE LibJuice::juice) endif() - if(CAPI_STDCALL) -@@ -237,7 +225,11 @@ endif() + if(RSA_KEY_BITS_2048) +@@ -244,7 +234,11 @@ endif() add_library(LibDataChannel::LibDataChannel ALIAS datachannel) add_library(LibDataChannel::LibDataChannelStatic ALIAS datachannel-static) @@ -88,7 +86,7 @@ index 1560700..197ada2 100644 install(FILES ${LIBDATACHANNEL_HEADERS} DESTINATION include/rtc) if(NOT MSVC) -@@ -294,3 +286,9 @@ if(NOT NO_EXAMPLES) +@@ -306,3 +300,8 @@ if(NOT NO_EXAMPLES AND NOT CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") add_subdirectory(examples/copy-paste-capi) endif() @@ -97,7 +95,6 @@ index 1560700..197ada2 100644 + NAMESPACE LibDatachannel:: + DESTINATION share/cmake/libdatachannel +) -+ diff --git a/src/tcptransport.hpp b/src/tcptransport.hpp index 1447835..1c92686 100644 --- a/src/tcptransport.hpp diff --git a/ports/libdatachannel/portfile.cmake b/ports/libdatachannel/portfile.cmake index d9e53773a37e99..9fb73f372698cf 100644 --- a/ports/libdatachannel/portfile.cmake +++ b/ports/libdatachannel/portfile.cmake @@ -1,19 +1,17 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO paullouisageneau/libdatachannel - REF d59c209c2044b74b8a60f1de68aadea28298e6b3 - SHA512 35a01349e7038a7d1776d154ee2c111d431d29a426b4948a6288017d30a0baa71f497dc694996085811d7860e40c5e6906a3fb07150bda87f4d9ed56db9fec70 + REF v0.10.1 + SHA512 195f564776b2a7ab6fe3a838d55be7fa03b72a5f08faaba5ddefac59ae1fff28f3ee0b9ed5dc17a7ef9155a1d30a61f8c593f2a108f60e415ffd213188e081bd HEAD_REF master PATCHES fix-for-vcpkg.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS - FEATURES - srtp USE_SRTP - INVERTED_FEATURES ws NO_WEBSOCKET + srtp NO_MEDIA ) vcpkg_configure_cmake( @@ -21,6 +19,7 @@ vcpkg_configure_cmake( PREFER_NINJA OPTIONS ${FEATURE_OPTIONS} + -DUSE_SYSTEM_SRTP=ON -DNO_EXAMPLES=ON -DNO_TESTS=ON ) diff --git a/ports/libdatachannel/vcpkg.json b/ports/libdatachannel/vcpkg.json index cd6ee6990c8617..79299fa5caf9dc 100644 --- a/ports/libdatachannel/vcpkg.json +++ b/ports/libdatachannel/vcpkg.json @@ -1,6 +1,6 @@ { "name": "libdatachannel", - "version-string": "d59c209c2044b74b8a60f1de68aadea28298e6b3", + "version-string": "v0.10.1", "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.", "homepage": "https://github.com/paullouisageneau/libdatachannel", "dependencies": [