From 8f8bfda9df0fd87f022b91e4699cfb4fe84fe9ca Mon Sep 17 00:00:00 2001 From: Dmytro Bogovych Date: Fri, 13 Feb 2026 09:53:13 +0300 Subject: [PATCH] - add missed libsrtp files --- src/libs/libsrtp/cmake/ConfigSafeGuards.cmake | 10 +++ src/libs/libsrtp/cmake/FindMbedTLS.cmake | 38 ++++++++++ src/libs/libsrtp/cmake/FindNSS.cmake | 15 ++++ src/libs/libsrtp/cmake/FindPCAP.cmake | 12 +++ src/libs/libsrtp/cmake/FindwolfSSL.cmake | 22 ++++++ src/libs/libsrtp/cmake/LTO.cmake | 19 +++++ src/libs/libsrtp/cmake/Sanitizer.cmake | 52 +++++++++++++ src/libs/libsrtp/cmake/Warnings.cmake | 74 +++++++++++++++++++ 8 files changed, 242 insertions(+) create mode 100644 src/libs/libsrtp/cmake/ConfigSafeGuards.cmake create mode 100644 src/libs/libsrtp/cmake/FindMbedTLS.cmake create mode 100644 src/libs/libsrtp/cmake/FindNSS.cmake create mode 100644 src/libs/libsrtp/cmake/FindPCAP.cmake create mode 100644 src/libs/libsrtp/cmake/FindwolfSSL.cmake create mode 100644 src/libs/libsrtp/cmake/LTO.cmake create mode 100644 src/libs/libsrtp/cmake/Sanitizer.cmake create mode 100644 src/libs/libsrtp/cmake/Warnings.cmake diff --git a/src/libs/libsrtp/cmake/ConfigSafeGuards.cmake b/src/libs/libsrtp/cmake/ConfigSafeGuards.cmake new file mode 100644 index 00000000..fe7240f2 --- /dev/null +++ b/src/libs/libsrtp/cmake/ConfigSafeGuards.cmake @@ -0,0 +1,10 @@ +if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) + message( + FATAL_ERROR + "In-source builds not allowed. Please make a build directory.") +endif() + +if(NOT CMAKE_BUILD_TYPE) + message(STATUS "No build type selected, default to Debug") + set(CMAKE_BUILD_TYPE "Debug") +endif() diff --git a/src/libs/libsrtp/cmake/FindMbedTLS.cmake b/src/libs/libsrtp/cmake/FindMbedTLS.cmake new file mode 100644 index 00000000..b3ed046b --- /dev/null +++ b/src/libs/libsrtp/cmake/FindMbedTLS.cmake @@ -0,0 +1,38 @@ +find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h) + +find_library(MBEDTLS_LIBRARY mbedtls) +find_library(MBEDX509_LIBRARY mbedx509) +find_library(MBEDCRYPTO_LIBRARY mbedcrypto) + +set(MBEDTLS_LIBRARIES "${MBEDTLS_LIBRARY}" "${MBEDX509_LIBRARY}" "${MBEDCRYPTO_LIBRARY}") + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(MbedTLS DEFAULT_MSG + MBEDTLS_LIBRARY MBEDTLS_INCLUDE_DIRS MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY) + +mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY) + +if(NOT TARGET MbedTLS) + message("in mbedtls ${MBEDTLS_LIBRARY}") + add_library(MbedTLS UNKNOWN IMPORTED) + set_target_properties(MbedTLS PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIRS}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${MBEDTLS_LIBRARY}") +endif() + +if(NOT TARGET MbedCrypto) + add_library(MbedCrypto UNKNOWN IMPORTED) + set_target_properties(MbedCrypto PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIRS}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${MBEDCRYPTO_LIBRARY}") +endif() + +if(NOT TARGET MbedX509) + add_library(MbedX509 UNKNOWN IMPORTED) + set_target_properties(MbedX509 PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${MBEDTLS_INCLUDE_DIRS}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${MBEDX509_LIBRARY}") +endif() diff --git a/src/libs/libsrtp/cmake/FindNSS.cmake b/src/libs/libsrtp/cmake/FindNSS.cmake new file mode 100644 index 00000000..716616bd --- /dev/null +++ b/src/libs/libsrtp/cmake/FindNSS.cmake @@ -0,0 +1,15 @@ +find_path(NSS_INCLUDE_DIR nss/nss.h) +find_path(NSPR_INCLUDE_DIR nspr/nspr.h) + +set(NSS_INCLUDE_DIRS "${NSS_INCLUDE_DIR}/nss" "${NSPR_INCLUDE_DIR}/nspr") + +find_library(NSS3_LIBRARY nss3) +find_library(NSPR4_LIBRARY nspr4) + +set(NSS_LIBRARIES "${NSS3_LIBRARY}" "${NSPR4_LIBRARY}") + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(NSS DEFAULT_MSG + NSS3_LIBRARY NSS_INCLUDE_DIR NSPR4_LIBRARY NSPR_INCLUDE_DIR) + +mark_as_advanced(NSS_INCLUDE_DIR NSPR_INCLUDE_DIR NSS3_LIBRARY NSPR4_LIBRARY) diff --git a/src/libs/libsrtp/cmake/FindPCAP.cmake b/src/libs/libsrtp/cmake/FindPCAP.cmake new file mode 100644 index 00000000..fae21029 --- /dev/null +++ b/src/libs/libsrtp/cmake/FindPCAP.cmake @@ -0,0 +1,12 @@ +find_path(PCAP_INCLUDE_DIR_TEMP pcap.h) +find_library(PCAP_LIBRARY_TEMP pcap) + +if (PCAP_INCLUDE_DIR_TEMP AND PCAP_LIBRARY_TEMP) + set(PCAP_LIBRARY pcap) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PCAP DEFAULT_MSG + PCAP_LIBRARY) + +mark_as_advanced(PCAP_LIBRARY) diff --git a/src/libs/libsrtp/cmake/FindwolfSSL.cmake b/src/libs/libsrtp/cmake/FindwolfSSL.cmake new file mode 100644 index 00000000..e395a1a7 --- /dev/null +++ b/src/libs/libsrtp/cmake/FindwolfSSL.cmake @@ -0,0 +1,22 @@ +if (WOLFSSL_ROOT_DIR) + set(_WOLFSSL_ROOT_HINTS_AND_PATHS HINTS ${WOLFSSL_ROOT_DIR} PATH_SUFFIXES include lib NO_DEFAULT_PATH) +endif() + +find_path(WOLFSSL_INCLUDE_DIR wolfssl/ssl.h ${_WOLFSSL_ROOT_HINTS_AND_PATHS}) + +find_library(WOLFSSL_LIBRARY wolfssl ${_WOLFSSL_ROOT_HINTS_AND_PATHS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(wolfSSL DEFAULT_MSG + WOLFSSL_LIBRARY WOLFSSL_INCLUDE_DIR) + +mark_as_advanced(WOLFSSL_INCLUDE_DIR WOLFSSL_LIBRARY) + +if(NOT TARGET wolfSSL) + add_library(wolfSSL UNKNOWN IMPORTED) + set_target_properties(wolfSSL PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${WOLFSSL_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${WOLFSSL_LIBRARY}") +endif() + diff --git a/src/libs/libsrtp/cmake/LTO.cmake b/src/libs/libsrtp/cmake/LTO.cmake new file mode 100644 index 00000000..eb42a33a --- /dev/null +++ b/src/libs/libsrtp/cmake/LTO.cmake @@ -0,0 +1,19 @@ +function(target_enable_lto) + set(oneValueArgs TARGET ENABLE) + cmake_parse_arguments( + LTO + "${options}" + "${oneValueArgs}" + "${multiValueArgs}" + ${ARGN}) + + include(CheckIPOSupported) + check_ipo_supported(RESULT result OUTPUT output) + if(result) + message(STATUS "IPO/LTO is supported: ${LTO_TARGET}") + set_property(TARGET ${LTO_TARGET} PROPERTY INTERPROCEDURAL_OPTIMIZATION + ${LTO_ENABLE}) + else() + message(WARNING "IPO/LTO is not supported: ${LTO_TARGET}") + endif() +endfunction() diff --git a/src/libs/libsrtp/cmake/Sanitizer.cmake b/src/libs/libsrtp/cmake/Sanitizer.cmake new file mode 100644 index 00000000..bd300af0 --- /dev/null +++ b/src/libs/libsrtp/cmake/Sanitizer.cmake @@ -0,0 +1,52 @@ +function(add_sanitizer_flags) + if(NOT ENABLE_SANITIZE_ADDR AND NOT ENABLE_SANITIZE_UNDEF) + return() + endif() + + if(CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "GNU") + add_compile_options("-fno-omit-frame-pointer") + add_link_options("-fno-omit-frame-pointer") + + if(ENABLE_SANITIZE_ADDR) + add_compile_options("-fsanitize=address") + add_link_options("-fsanitize=address") + endif() + + if(ENABLE_SANITIZE_UNDEF) + add_compile_options("-fsanitize=undefined") + add_link_options("-fsanitize=undefined") + endif() + + if(ENABLE_SANITIZE_LEAK) + add_compile_options("-fsanitize=leak") + add_link_options("-fsanitize=leak") + endif() + + if(ENABLE_SANITIZE_THREAD) + if(ENABLE_SANITIZE_ADDR OR ENABLE_SANITIZE_LEAK) + message(WARNING "thread does not work with: address and leak") + endif() + add_compile_options("-fsanitize=thread") + add_link_options("-fsanitize=thread") + endif() + elseif(CMAKE_C_COMPILER_ID STREQUAL "MSVC") + if(ENABLE_SANITIZE_ADDR) + add_compile_options("/fsanitize=address") + endif() + + if(ENABLE_SANITIZE_UNDEF) + message(STATUS "sanitize=undefined not avail. for MSVC") + endif() + + if(ENABLE_SANITIZE_LEAK) + message(STATUS "sanitize=leak not avail. for MSVC") + endif() + + if(ENABLE_SANITIZE_THREAD) + message(STATUS "sanitize=thread not avail. for MSVC") + endif() + else() + message(WARNING "This sanitizer not supported in this environment (${CMAKE_C_COMPILER_ID})") + return() + endif() +endfunction(add_sanitizer_flags) diff --git a/src/libs/libsrtp/cmake/Warnings.cmake b/src/libs/libsrtp/cmake/Warnings.cmake new file mode 100644 index 00000000..4383aed6 --- /dev/null +++ b/src/libs/libsrtp/cmake/Warnings.cmake @@ -0,0 +1,74 @@ +function(target_set_warnings) + set(oneValueArgs TARGET ENABLE AS_ERRORS) + cmake_parse_arguments( + TARGET_SET_WARNINGS + "${options}" + "${oneValueArgs}" + "${multiValueArgs}" + ${ARGN}) + + if(NOT ${TARGET_SET_WARNINGS_ENABLE}) + message(STATUS "Warnings Disabled for: ${TARGET_SET_WARNINGS_TARGET}") + return() + endif() + message(STATUS "Warnings Active for: ${TARGET_SET_WARNINGS_TARGET}") + message(STATUS "Warnings as Errors: ${TARGET_SET_WARNINGS_AS_ERRORS}") + + set(MSVC_WARNINGS + # Baseline + /W4 # Baseline reasonable warnings + /permissive- # standards conformance mode for MSVC compiler + # C and C++ Warnings + # /w14242 # conversion from 'type1' to 'type1', possible loss of data + # /w14254 # 'operator': conversion from 't1:field_bits' to 't2:field_bits' + # /w14287 # unsigned/negative constant mismatch + # /w14296 # expression is always 'boolean_value' + # /w14311 # pointer truncation from 'type1' to 'type2' + /w44062 # enumerator in a switch of enum 'enumeration' is not handled + # /w44242 # conversion from 'type1' to 'type2', possible loss of data + # /w14826 # Conversion from 'type1' to 'type_2' is sign-extended + # /w14905 # wide string literal cast to 'LPSTR' + # /w14906 # string literal cast to 'LPWSTR' + ) + + set(CLANG_WARNINGS + # Baseline + -Wall + -Wextra # reasonable and standard + -Wshadow # if a variable declaration shadows one from a parent context + -Wpedantic # warn if non-standard is used + # C and C++ Warnings + -Wunused # warn on anything being unused +# -Wformat=2 # warn on security issues around functions that format output +# -Wcast-align # warn for potential performance problem casts +# -Wconversion # warn on type conversions that may lose data +# -Wsign-conversion # warn on sign conversions + -Wnull-dereference # warn if a null dereference is detected + -Wdouble-promotion # warn if float is implicit promoted to double + -Wcast-qual + ) + + set(GCC_WARNINGS + ${CLANG_WARNINGS} + -Wduplicated-cond # warn if if / else chain has duplicated conditions + -Wduplicated-branches # warn if if / else branches have duplicated code + -Wlogical-op # warn about logical operations being used where bitwise were probably wanted + ) + + if(${TARGET_SET_WARNINGS_AS_ERRORS}) + set(CLANG_WARNINGS ${CLANG_WARNINGS} -Werror) + set(GCC_WARNINGS ${GCC_WARNINGS} -Werror) + set(MSVC_WARNINGS ${MSVC_WARNINGS} /WX) + endif() + + if(CMAKE_C_COMPILER_ID MATCHES "MSVC") + set(WARNINGS ${MSVC_WARNINGS}) + elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") + set(WARNINGS ${CLANG_WARNINGS}) + elseif(CMAKE_C_COMPILER_ID MATCHES "GNU") + set(WARNINGS ${GCC_WARNINGS}) + endif() + + target_compile_options(${TARGET_SET_WARNINGS_TARGET} PRIVATE ${WARNINGS}) + +endfunction(target_set_warnings)