aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroo Ono <hiroo.ono+freebsd@gmail.com>2026-01-31 16:26:26 +0000
committerRobert Clausecker <fuz@FreeBSD.org>2026-02-04 12:41:14 +0000
commite9f8f7c74a9bf21a2a5cae60cda3e76dd4cbd9cd (patch)
tree443f162b5b56f3ce825036536740245bd34c1a37
parent321ef00b6fccd532de07f3efefc462537283d2b8 (diff)
net/linphone: update to 5.3.2
- work around build failure on FreeBSD <15 (requires the XSI timezone symbol, not the old BSD one, cf. D44281) - work around build failure when git is installed - fix dependencies Changelog: https://gitlab.linphone.org/BC/public/linphone-desktop/-/blob/5.3.2/CHANGELOG.md?ref_type=tags PR: 291969, 291317
-rw-r--r--net/linphone/Makefile98
-rw-r--r--net/linphone/distinfo8
-rw-r--r--net/linphone/files/patch-CMakeLists.txt34
-rw-r--r--net/linphone/files/patch-external_ispell_config.h11
-rw-r--r--net/linphone/files/patch-linphone-app_CMakeLists.txt93
-rw-r--r--net/linphone/files/patch-linphone-app_cmake_FindBCToolbox.cmake13
-rw-r--r--net/linphone/files/patch-linphone-app_cmake_FindLibLinphone.cmake28
-rw-r--r--net/linphone/files/patch-linphone-app_cmake_FindMediastreamer2.cmake29
-rw-r--r--net/linphone/files/patch-linphone-app_cmake_FindQtKeychain.cmake35
-rw-r--r--net/linphone/files/patch-linphone-app_cmake__builder_linphone__package_CMakeLists.txt11
-rw-r--r--net/linphone/files/patch-linphone-app_src_app_App.cpp21
-rw-r--r--net/linphone/files/patch-linphone-app_src_app_logger_Logger.cpp11
-rw-r--r--net/linphone/files/patch-linphone-app_src_components_other_clipboard_Clipboard.cpp11
-rw-r--r--net/linphone/files/patch-linphone-app_src_components_other_desktop-tools_DesktopTools.hpp (renamed from net/linphone/files/patch-src_components_other_desktop-tools_DesktopTools.hpp)4
-rw-r--r--net/linphone/files/patch-linphone-app_src_components_other_spell-checker_SpellChecker.cpp11
-rw-r--r--net/linphone/files/patch-linphone-app_src_components_other_spell-checker_SpellChecker.hpp20
-rw-r--r--net/linphone/files/patch-linphone-app_src_components_vfs_VfsUtils.hpp11
-rw-r--r--net/linphone/pkg-plist21
18 files changed, 422 insertions, 48 deletions
diff --git a/net/linphone/Makefile b/net/linphone/Makefile
index 342a2ebd242d..ddf3732c0a06 100644
--- a/net/linphone/Makefile
+++ b/net/linphone/Makefile
@@ -1,25 +1,39 @@
PORTNAME= linphone
-PORTVERSION= 5.0.18
+PORTVERSION= 5.3.2
PORTEPOCH= 1
CATEGORIES= net
+EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= hiroo.ono+freebsd@gmail.com
COMMENT= SIP client supporting voice/video calls and text messaging
WWW= https://www.linphone.org/
LICENSE= GPLv3
+BUILD_DEPENDS= patchelf:sysutils/patchelf
LIB_DEPENDS= libbctoolbox.so:net/bctoolbox \
libbelcard.so:deskutils/belcard \
liblinphone++.so:net/liblinphone \
- libmediastreamer.so:net/mediastreamer \
- libortp.so:net/ortp
+ libmediastreamer2.so:net/mediastreamer \
+ libortp.so:net/ortp \
+ libqt5keychain.so:security/qtkeychain@qt5 \
+ libQt5Multimedia.so:multimedia/qt5-multimedia \
+ libxml2.so:textproc/libxml2 \
+ liblime.so:security/lime \
+ libjsoncpp.so:devel/jsoncpp \
+ libbelle-sip.so:net/belle-sip \
+ libbelr.so:textproc/belr
-USES= cmake compiler:c++11-lib pkgconfig qt:5
+USES= cmake compiler:c++11-lib pkgconfig qt:5 tar:bzip2 xorg sqlite:3
USE_GITLAB= yes
+USE_XORG= x11
GL_SITE= https://gitlab.linphone.org/BC
-GL_ACCOUNT= public
-GL_PROJECT= linphone-desktop
+GL_ACCOUNT= public \
+ public/external:ispell
+GL_PROJECT= linphone-desktop \
+ ispell:ispell
+GL_TAGNAME= ${PORTVERSION} \
+ 05574fe160222c3d0b6283c1433c9b087271fad1:ispell
USE_QT= concurrent core dbus declarative gui linguisttools network \
quickcontrols2 speech svg testlib widgets buildtools:build \
qmake:build graphicaleffects:run quickcontrols:run
@@ -29,34 +43,62 @@ USE_QT= concurrent core dbus declarative gui linguisttools network \
# local tree, we better move it to its own subdirectory, so we need RPATH
# here.
# This will affect actual Linphone plugins as well if they get ported.
-CMAKE_ARGS+= -DCMAKE_INSTALL_RPATH="${LOCALBASE}/lib/linphone"
+CMAKE_ARGS+= -DCMAKE_INSTALL_RPATH="${LOCALBASE}/lib/linphone" \
+ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=NO \
+ -DLINPHONEAPP_INSTALL_PREFIX=${PREFIX} \
+ -DLINPHONEAPP_VERSION="${PORTVERSION}" \
+ -DGIT_EXECUTABLE=NO
+CMAKE_ON= ENABLE_VIDEO \
+ ENABLE_BUILD_VERBOSE \
+ ENABLE_QT_KEYCHAIN
+CMAKE_OFF= ENABLE_BUILD_APP_PLUGINS
-WRKSRC_SUBDIR= linphone-app
+ICONDIR= ${LOCALBASE}/share/icons/hicolor
-ICONDIR= ${LOCALBASE}/share/icons/hicolor/scalable/apps
-
-post-patch:
- @${REINPLACE_CMD} -e 's/bc_compute_full_version([^)]*)//' \
- -e 's/set(FULL_VERSION /&${PORTVERSION}/' \
- -e 's/INSTALL_RPATH_USE_LINK_PATH/BUILD_WITH_INSTALL_RPATH/' \
- -e '/add_subdirectory.*linphone_package/d' \
- -e '/add_subdirectory.*build/d' \
- -e '/add_custom_command/d' -e '/deployqt_hack/d' \
- ${WRKSRC}/CMakeLists.txt
- @${REINPLACE_CMD} 's/LINPHONE_QT_GIT_VERSION/"${PORTVERSION}"/' \
- ${WRKSRC}/src/app/AppController.cpp
+post-extract:
+ ${TAR} -x -C ${WRKSRC}/external/ispell \
+ -f ${DISTDIR}/${DISTFILE_ispell} \
+ --strip-components 1
# override install because otherwise, it does a complete rebuild during stage
do-install:
- ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/linphone \
+ # Patchelf
+ patchelf --set-rpath "${LOCALBASE}/lib:${LOCALBASE}/lib/linphone" \
+ ${BUILD_WRKSRC}/linphone-app/linphone
+ # Linphone
+ ${MKDIR} ${STAGEDIR}${LOCALBASE}/lib/linphone \
+ ${STAGEDIR}${LOCALBASE}/include/LinphoneApp \
+ ${STAGEDIR}${DATADIR} \
+ ${STAGEDIR}${ETCDIR} \
+ ${STAGEDIR}${ICONDIR}
+ ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/linphone-app/linphone \
${STAGEDIR}${LOCALBASE}/bin
- ${MKDIR} ${STAGEDIR}${LOCALBASE}/lib/linphone
- ${MKDIR} ${STAGEDIR}${ICONDIR}
- ${INSTALL_LIB} ${BUILD_WRKSRC}/libapp-plugin.so \
+ ${INSTALL_LIB} ${BUILD_WRKSRC}/linphone-app/libapp-plugin.so \
${STAGEDIR}${LOCALBASE}/lib/linphone
- ${INSTALL_DATA} ${WRKSRC}/assets/images/linphone_logo.svg \
- ${STAGEDIR}${ICONDIR}/linphone.svg
- ${INSTALL_DATA} ${FILESDIR}/linphone.desktop \
+ ${INSTALL_DATA} ${BUILD_WRKSRC}/linphone-app/qt.conf \
+ ${STAGEDIR}${ETCDIR}
+ ${INSTALL_DATA} ${WRKSRC}/linphone-app/include/LinphoneApp/* \
+ ${STAGEDIR}${LOCALBASE}/include/LinphoneApp
+ ${INSTALL_DATA} ${BUILD_WRKSRC}/linphone-app/linphone.desktop \
${STAGEDIR}${LOCALBASE}/share/applications/linphone.desktop
+ ${MKDIR} ${STAGEDIR}${ICONDIR}/scalable/apps
+ ${INSTALL_DATA} ${WRKSRC}/linphone-app/assets/images/linphone_logo.svg \
+ ${STAGEDIR}${ICONDIR}/scalable/apps/linphone.svg
+ for idir in 16x16 22x22 24x24 32x32 64x64 128x128 256x256; do \
+ ${MKDIR} ${STAGEDIR}${ICONDIR}/$${idir}/apps; \
+ ${INSTALL_DATA} ${WRKSRC}/linphone-app/assets/icons/hicolor/$${idir}/apps/icon.png \
+ ${STAGEDIR}${ICONDIR}/$${idir}/apps/linphone.png; \
+ done
+ ${MKDIR} ${STAGEDIR}${DATADIR}/assistant
+ ${INSTALL_DATA} ${WRKSRC}/linphone-app/assets/assistant/* \
+ ${STAGEDIR}${DATADIR}/assistant
+ ${INSTALL_DATA} ${WRKSRC}/linphone-app/assets/linphonerc-factory \
+ ${STAGEDIR}${DATADIR}
+ # ISpell
+ ${INSTALL_LIB} ${BUILD_WRKSRC}/external/ispell/libISpell.so \
+ ${STAGEDIR}${LOCALBASE}/lib
+ ${MKDIR} ${STAGEDIR}${DATADIR}/ispell_dictionaries
+ ${INSTALL_DATA} ${WRKSRC}/external/ispell/ispell_dictionaries/* \
+ ${STAGEDIR}${DATADIR}/ispell_dictionaries
.include <bsd.port.mk>
diff --git a/net/linphone/distinfo b/net/linphone/distinfo
index b9dfb572e6fa..ddef8dabe1a6 100644
--- a/net/linphone/distinfo
+++ b/net/linphone/distinfo
@@ -1,3 +1,5 @@
-TIMESTAMP = 1690571429
-SHA256 (linphone-desktop-5.0.18.tar.bz2) = 7081fb9507359ac6b5129b753f2d8018dc23ac9ab1d7866cb3364d6509e8ee1a
-SIZE (linphone-desktop-5.0.18.tar.bz2) = 2444866
+TIMESTAMP = 1766765152
+SHA256 (linphone-desktop-5.3.2.tar.bz2) = c5ef9fb3b31720da773e7cac54999311b18f254690a3117c3a4692eb936e499c
+SIZE (linphone-desktop-5.3.2.tar.bz2) = 2569523
+SHA256 (public/external-ispell-05574fe160222c3d0b6283c1433c9b087271fad1_GL0.tar.gz) = d0c3fd54a4c6e37af5ce83fae001e47403eeb113efd530d553f437766b8ffe20
+SIZE (public/external-ispell-05574fe160222c3d0b6283c1433c9b087271fad1_GL0.tar.gz) = 1562075
diff --git a/net/linphone/files/patch-CMakeLists.txt b/net/linphone/files/patch-CMakeLists.txt
index 9e789db37d83..e235da081733 100644
--- a/net/linphone/files/patch-CMakeLists.txt
+++ b/net/linphone/files/patch-CMakeLists.txt
@@ -1,19 +1,23 @@
---- CMakeLists.txt.orig 2023-06-16 13:29:33 UTC
+--- CMakeLists.txt.orig 2025-11-12 12:55:13 UTC
+++ CMakeLists.txt
-@@ -20,6 +20,7 @@ cmake_minimum_required(VERSION 3.1)
- #
- ################################################################################
- cmake_minimum_required(VERSION 3.1)
-+project(linphoneqt)
+@@ -228,13 +228,13 @@ if(NOT APPLE OR MONO_ARCH)
+ set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) # Prevent project from overriding the options we just set here
+ add_subdirectory("linphone-sdk")
+ endfunction()
+- add_linphone_sdk()
++ # add_linphone_sdk()
- find_package(bctoolbox CONFIG)
- set(FULL_VERSION )
-@@ -556,7 +557,7 @@ else()
- set(MSPLUGINS_DIR "Frameworks/mediastreamer2.framework/Versions/A/Libraries")
- endif()
+ if(ENABLE_QT_KEYCHAIN)
+ function(add_linphone_keychain)
+ add_subdirectory("external/qtkeychain")
+ endfunction()
+- add_linphone_keychain()
++ # add_linphone_keychain()
+ endif()
+ if(NOT APPLE AND NOT WIN32)
+ function(add_linphone_ispell)
+@@ -276,4 +276,3 @@ endif()
else()
-- set(MSPLUGINS_DIR "plugins/mediastreamer")
-+ set(MSPLUGINS_DIR "lib/mediastreamer/plugins")
+ include(cmake/TasksMacos.cmake)
endif()
- configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
- # ------------------------------------------------------------------------------
+-
diff --git a/net/linphone/files/patch-external_ispell_config.h b/net/linphone/files/patch-external_ispell_config.h
new file mode 100644
index 000000000000..70bf897796e1
--- /dev/null
+++ b/net/linphone/files/patch-external_ispell_config.h
@@ -0,0 +1,11 @@
+--- external/ispell/config.h.orig 2025-12-26 16:36:36 UTC
++++ external/ispell/config.h
+@@ -228,7 +228,7 @@
+ #include <sys/param.h>
+ #include <sys/types.h>
+ #ifndef USG
+-#include <sys/dir.h>
++/* #include <sys/dir.h> */
+ #endif /* USG */
+
+ #ifndef TERMIOS
diff --git a/net/linphone/files/patch-linphone-app_CMakeLists.txt b/net/linphone/files/patch-linphone-app_CMakeLists.txt
new file mode 100644
index 000000000000..938b9adc4edb
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_CMakeLists.txt
@@ -0,0 +1,93 @@
+--- linphone-app/CMakeLists.txt.orig 2025-11-12 12:55:13 UTC
++++ linphone-app/CMakeLists.txt
+@@ -24,7 +24,7 @@ cmake_minimum_required(VERSION 3.22)
+
+
+ #Linphone targets
+-set(LINPHONE_PACKAGES LinphoneCxx Mediastreamer2 Belcard LibLinphone)
++set(LINPHONE_PACKAGES LinphoneCxx Mediastreamer2 BelCard LibLinphone jsoncpp)
+
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+
+@@ -40,6 +40,7 @@ set(metadata )
+ set(version_patch)
+ set(identifiers )
+ set(metadata )
++include(${LINPHONEAPP_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/BCToolbox/cmake/BCToolboxCMakeUtils.cmake)
+ bc_parse_full_version("${LINPHONEAPP_VERSION}" version_major version_minor version_patch identifiers metadata)
+
+
+@@ -63,7 +64,7 @@ list(APPEND CMAKE_MODULE_PATH "${LINPHONE_OUTPUT_DIR}/
+ endif()
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
+ list(APPEND CMAKE_MODULE_PATH "${LINPHONE_OUTPUT_DIR}/cmake")
+-list(APPEND CMAKE_MODULE_PATH "${LINPHONE_OUTPUT_DIR}/lib64/cmake")
++# list(APPEND CMAKE_MODULE_PATH "${LINPHONE_OUTPUT_DIR}/lib64/cmake")
+ list(APPEND CMAKE_MODULE_PATH "${LINPHONE_OUTPUT_DIR}/lib/cmake")
+
+ list(APPEND CMAKE_PREFIX_PATH "${QTKEYCHAIN_OUTPUT_DIR}/lib/cmake")
+@@ -115,7 +116,7 @@ set(APP_TARGETS ${LinphoneCxx_TARGET}
+ set(APP_TARGETS ${LinphoneCxx_TARGET}
+ ${BCToolbox_TARGET}#Logger/App
+ ${Mediastreamer2_TARGET}#MediastreamerUtils
+- ${Belcard_TARGET}#VCard Model
++ ${BelCard_TARGET}#VCard Model
+ ${LibLinphone_TARGET})#MediastreamerUtils
+
+ ####################################
+@@ -198,11 +199,11 @@ endif()
+ if(ENABLE_VIDEO)
+ add_definitions(-DENABLE_VIDEO)
+ endif()
+-if( ENABLE_QT_KEYCHAIN)
++if(ENABLE_QT_KEYCHAIN)
+ if(NOT QTKEYCHAIN_TARGET_NAME)
+ set(QTKEYCHAIN_TARGET_NAME "Qt5Keychain")
+ endif()
+- list(APPEND APP_TARGETS ${QTKEYCHAIN_TARGET_NAME})
++ # list(APPEND APP_TARGETS ${QTKEYCHAIN_TARGET_NAME})
+ endif()
+ if(NOT APPLE AND NOT WIN32)
+ list(APPEND APP_TARGETS ${ISPELL_TARGET_NAME})
+@@ -734,6 +735,7 @@ include_directories("${LINPHONE_OUTPUT_DIR}/include/")
+ include_directories(src/)
+ include_directories("${LINPHONE_OUTPUT_DIR}/include/OpenGL")
+ include_directories("${LINPHONE_OUTPUT_DIR}/include/")
++include_directories("${CMAKE_SOURCE_DIR}/linphone-app/include/")
+ include_directories("${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/")
+ include_directories("${QTKEYCHAIN_OUTPUT_DIR}/include/")
+ if(NOT APPLE AND NOT WIN32)
+@@ -819,13 +821,18 @@ foreach(T ${PLUGIN_TARGETS})
+
+ foreach(T ${PLUGIN_TARGETS})
+ target_include_directories(${APP_PLUGIN} SYSTEM PUBLIC $<TARGET_PROPERTY:${T},INTERFACE_INCLUDE_DIRECTORIES>)
++ target_link_directories(${APP_PLUGIN} PUBLIC $<TARGET_PROPERTY:${T},INTERFACE_LINK_DIRECTORIES>)
+ target_link_libraries(${APP_PLUGIN} ${T})
+ endforeach()
+
+ foreach(T ${APP_TARGETS})
+ target_include_directories(${APP_LIBRARY} SYSTEM PUBLIC $<TARGET_PROPERTY:${T},INTERFACE_INCLUDE_DIRECTORIES>)
++ target_link_directories(${TARGET_NAME} PUBLIC $<TARGET_PROPERTY:${T},INTERFACE_LINK_DIRECTORIES>)
+ target_link_libraries(${TARGET_NAME} ${T})
+ endforeach()
++target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${QTKEYCHAIN_INCLUDE_DIRS})
++target_link_directories(${TARGET_NAME} PUBLIC ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
++target_link_libraries(${TARGET_NAME} Qt5Keychain::Qt5Keychain)
+
+ if (APPLE)
+ target_link_libraries(${TARGET_NAME} "-framework Cocoa" "-framework IOKit" "-framework AVFoundation" "-framework ScreenCaptureKit")
+@@ -857,10 +864,10 @@ set(LINPHONE_BUILDER_SIGNING_IDENTITY ${LINPHONE_BUILD
+ set(TOOLS_DIR "${CMAKE_BINARY_DIR}/programs")
+ set(LINPHONE_BUILDER_SIGNING_IDENTITY ${LINPHONE_BUILDER_SIGNING_IDENTITY})
+
+-add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/")
+-add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/include/" "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/")
+-add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${APP_PLUGIN}> "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/")
+-add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_LINKER_FILE:${APP_PLUGIN}> "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/")
++# add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/")
++# add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/include/" "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}/")
++# add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${APP_PLUGIN}> "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/")
++# add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_LINKER_FILE:${APP_PLUGIN}> "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/")
+ #add_custom_command(TARGET ${TARGET_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/include/LinphoneApp/*" "${CMAKE_INSTALL_PREFIX}/include/LinphoneApp/")
+
+ #configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/*" "${CMAKE_INSTALL_PREFIX}/include/LinphoneApp/" COPYONLY)
diff --git a/net/linphone/files/patch-linphone-app_cmake_FindBCToolbox.cmake b/net/linphone/files/patch-linphone-app_cmake_FindBCToolbox.cmake
new file mode 100644
index 000000000000..b2debc5643a9
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_cmake_FindBCToolbox.cmake
@@ -0,0 +1,13 @@
+--- linphone-app/cmake/FindBCToolbox.cmake.orig 2025-11-12 12:55:13 UTC
++++ linphone-app/cmake/FindBCToolbox.cmake
+@@ -33,8 +33,8 @@ if(NOT TARGET bctoolbox)
+ if(NOT TARGET bctoolbox)
+ set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
+ include(GNUInstallDirs)
+- set(BCToolbox_CMAKE_DIR ${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/bctoolbox/cmake)
+- include(${BCToolbox_CMAKE_DIR}/bctoolboxTargets.cmake)
++ set(BCToolbox_CMAKE_DIR ${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/BCToolbox/cmake)
++ include(${BCToolbox_CMAKE_DIR}/BCToolboxTargets.cmake)
+ endif()
+
+ set(_BCToolbox_REQUIRED_VARS BCToolbox_TARGET BCToolbox_CMAKE_DIR BCToolbox_CMAKE_UTILS)
diff --git a/net/linphone/files/patch-linphone-app_cmake_FindLibLinphone.cmake b/net/linphone/files/patch-linphone-app_cmake_FindLibLinphone.cmake
new file mode 100644
index 000000000000..2069fe1a5ecb
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_cmake_FindLibLinphone.cmake
@@ -0,0 +1,28 @@
+--- linphone-app/cmake/FindLibLinphone.cmake.orig 2025-11-12 12:55:13 UTC
++++ linphone-app/cmake/FindLibLinphone.cmake
+@@ -27,7 +27,8 @@ if(NOT TARGET liblinphone)
+ if(NOT TARGET liblinphone)
+ set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
+ include(GNUInstallDirs)
+- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/linphone/cmake/linphoneTargets.cmake)
++ # include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/linphone/cmake/linphoneTargets.cmake)
++ include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/LibLinphone/cmake/LibLinphoneConfig.cmake)
+ endif()
+
+ set(_LibLinphone_REQUIRED_VARS LibLinphone_TARGET LibLinphone_PLUGINS_DIR)
+@@ -38,9 +39,9 @@ endif()
+ get_target_property(LibLinphone_PLUGINS_DIR ${LibLinphone_TARGET} LIBLINPHONE_PLUGINS_DIR)
+ endif()
+
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(LibLinphone
+- REQUIRED_VARS ${_LibLinphone_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_LibLinphone_CACHE_VARS})
++#include(FindPackageHandleStandardArgs)
++#find_package_handle_standard_args(LibLinphone
++# REQUIRED_VARS ${_LibLinphone_REQUIRED_VARS}
++# HANDLE_COMPONENTS
++#)
++#mark_as_advanced(${_LibLinphone_CACHE_VARS})
diff --git a/net/linphone/files/patch-linphone-app_cmake_FindMediastreamer2.cmake b/net/linphone/files/patch-linphone-app_cmake_FindMediastreamer2.cmake
new file mode 100644
index 000000000000..694272a30610
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_cmake_FindMediastreamer2.cmake
@@ -0,0 +1,29 @@
+--- linphone-app/cmake/FindMediastreamer2.cmake.orig 2025-11-12 12:55:13 UTC
++++ linphone-app/cmake/FindMediastreamer2.cmake
+@@ -29,7 +29,8 @@ if(NOT TARGET mediastreamer2)
+ if(NOT TARGET mediastreamer2)
+ set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
+ include(GNUInstallDirs)
+- include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/Mediastreamer2/cmake/Mediastreamer2Targets.cmake)
++ # include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/Mediastreamer2/cmake/Mediastreamer2Targets.cmake)
++ include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/Mediastreamer2/cmake/Mediastreamer2Config.cmake)
+ endif()
+
+ set(_Mediastreamer2_REQUIRED_VARS Mediastreamer2_TARGET Mediastreamer2_PLUGINS_DIR)
+@@ -40,10 +41,10 @@ endif()
+ get_target_property(Mediastreamer2_PLUGINS_DIR ${Mediastreamer2_TARGET} MS2_PLUGINS_DIR)
+ endif()
+
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(Mediastreamer2
+- REQUIRED_VARS ${_Mediastreamer2_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_Mediastreamer2_CACHE_VARS})
++#include(FindPackageHandleStandardArgs)
++#find_package_handle_standard_args(Mediastreamer2
++# REQUIRED_VARS ${_Mediastreamer2_REQUIRED_VARS}
++# HANDLE_COMPONENTS
++#)
++#mark_as_advanced(${_Mediastreamer2_CACHE_VARS})
+
diff --git a/net/linphone/files/patch-linphone-app_cmake_FindQtKeychain.cmake b/net/linphone/files/patch-linphone-app_cmake_FindQtKeychain.cmake
new file mode 100644
index 000000000000..226f2d87c072
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_cmake_FindQtKeychain.cmake
@@ -0,0 +1,35 @@
+--- linphone-app/cmake/FindQtKeychain.cmake.orig 2025-11-12 12:55:13 UTC
++++ linphone-app/cmake/FindQtKeychain.cmake
+@@ -26,23 +26,22 @@ if(NOT TARGET ${QTKEYCHAIN_TARGET_NAME})
+ # QtKeychain_INCLUDE_DIRS - the linphonecxx include directory
+ # QtKeychain_LIBRARIES - The library needed to use linphonecxx
+ if(NOT TARGET ${QTKEYCHAIN_TARGET_NAME})
+- set(EXPORT_PATH ${QTKEYCHAIN_OUTPUT_DIR})
++ set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
+ include(GNUInstallDirs)
+ include(${EXPORT_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake/${QTKEYCHAIN_TARGET_NAME}/${QTKEYCHAIN_TARGET_NAME}Config.cmake)
+ endif()
+
+-set(_QtKeychain_REQUIRED_VARS QtKeychain_TARGET)
+-set(_QtKeychain_CACHE_VARS ${_QtKeychain_REQUIRED_VARS})
++# set(_QtKeychain_REQUIRED_VARS QtKeychain_TARGET)
++# set(_QtKeychain_CACHE_VARS ${_QtKeychain_REQUIRED_VARS})
+
+ if(TARGET ${QTKEYCHAIN_TARGET_NAME})
+ set(QtKeychain_TARGET ${QTKEYCHAIN_TARGET_NAME})
+ set(QtKeychain_USE_BUILD_INTERFACE TRUE)
+ endif()
+
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(QtKeychain
+- REQUIRED_VARS ${_QtKeychain_REQUIRED_VARS}
+- HANDLE_COMPONENTS
+-)
+-mark_as_advanced(${_QtKeychain_CACHE_VARS})
+-
++#include(FindPackageHandleStandardArgs)
++#find_package_handle_standard_args(QtKeychain
++# REQUIRED_VARS ${_QtKeychain_REQUIRED_VARS}
++# HANDLE_COMPONENTS
++#)
++#mark_as_advanced(${_QtKeychain_CACHE_VARS})
diff --git a/net/linphone/files/patch-linphone-app_cmake__builder_linphone__package_CMakeLists.txt b/net/linphone/files/patch-linphone-app_cmake__builder_linphone__package_CMakeLists.txt
new file mode 100644
index 000000000000..e310e5a34145
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_cmake__builder_linphone__package_CMakeLists.txt
@@ -0,0 +1,11 @@
+--- linphone-app/cmake_builder/linphone_package/CMakeLists.txt.orig 2025-11-12 12:55:13 UTC
++++ linphone-app/cmake_builder/linphone_package/CMakeLists.txt
+@@ -26,7 +26,7 @@ include("${CMAKE_CURRENT_SOURCE_DIR}/../../application
+ endif()
+ include("${CMAKE_CURRENT_SOURCE_DIR}/../../application_info.cmake")
+
+-find_package(Git)
++#find_package(Git)
+ #Policy set to allow link from other directory (cmake 3.13)
+ if (POLICY CMP0079)
+ cmake_policy(SET CMP0079 NEW)
diff --git a/net/linphone/files/patch-linphone-app_src_app_App.cpp b/net/linphone/files/patch-linphone-app_src_app_App.cpp
new file mode 100644
index 000000000000..8e86a8c8d048
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_src_app_App.cpp
@@ -0,0 +1,21 @@
+FreeBSD 14 and earlier do not support timezone with POSIX semantics.
+We work around this shortcoming by skipping the timezone check,
+setting the TZ variable unconditionally.
+This patch can be removed once FreeBSD 14 goes out of support.
+
+--- linphone-app/src/app/App.cpp.orig 2026-02-03 10:42:50 UTC
++++ linphone-app/src/app/App.cpp
+@@ -295,13 +295,10 @@ App::App(int &argc, char *argv[])
+ #else
+ char *tz = getenv("TZ");
+ if (!tz) { // If not set, set the environment variable for uses of mktime from the SDK.
+- tzset(); // init timezone variable
+- if (timezone != -QTimeZone::systemTimeZone().offsetFromUtc(QDateTime::currentDateTime())) {
+ QString timeZone = QTimeZone::systemTimeZoneId();
+ setenv("TZ", timeZone.toStdString().c_str(), 1);
+ tzset();
+ qInfo() << "Set TimeZone to " << timeZone;
+- }
+ } else qInfo() << "Use environment TimeZone:" << tz;
+ #endif
+
diff --git a/net/linphone/files/patch-linphone-app_src_app_logger_Logger.cpp b/net/linphone/files/patch-linphone-app_src_app_logger_Logger.cpp
new file mode 100644
index 000000000000..6e7d0a25f3ba
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_src_app_logger_Logger.cpp
@@ -0,0 +1,11 @@
+--- linphone-app/src/app/logger/Logger.cpp.orig 2025-12-26 08:13:47 UTC
++++ linphone-app/src/app/logger/Logger.cpp
+@@ -34,7 +34,7 @@
+
+ // =============================================================================
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+ #define BLUE "\x1B[1;34m"
+ #define YELLOW "\x1B[1;33m"
+ #define GREEN "\x1B[1;32m"
diff --git a/net/linphone/files/patch-linphone-app_src_components_other_clipboard_Clipboard.cpp b/net/linphone/files/patch-linphone-app_src_components_other_clipboard_Clipboard.cpp
new file mode 100644
index 000000000000..5c28fc00e2c1
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_src_components_other_clipboard_Clipboard.cpp
@@ -0,0 +1,11 @@
+--- linphone-app/src/components/other/clipboard/Clipboard.cpp.orig 2025-12-26 08:11:45 UTC
++++ linphone-app/src/components/other/clipboard/Clipboard.cpp
+@@ -56,7 +56,7 @@ QString Clipboard::getChatFormattedText () const {
+ QString text = getText();
+ if (text.isEmpty())
+ return text;
+-#ifdef __linux__
++#if defined(__linux__ ) || defined(__FreeBSD__)
+ QString cr = "\n";
+ #endif
+ #ifdef WIN32
diff --git a/net/linphone/files/patch-src_components_other_desktop-tools_DesktopTools.hpp b/net/linphone/files/patch-linphone-app_src_components_other_desktop-tools_DesktopTools.hpp
index 110b9cfd9c47..b34238cea8f0 100644
--- a/net/linphone/files/patch-src_components_other_desktop-tools_DesktopTools.hpp
+++ b/net/linphone/files/patch-linphone-app_src_components_other_desktop-tools_DesktopTools.hpp
@@ -1,5 +1,5 @@
---- src/components/other/desktop-tools/DesktopTools.hpp.orig 2022-07-05 13:20:17 UTC
-+++ src/components/other/desktop-tools/DesktopTools.hpp
+--- linphone-app/src/components/other/desktop-tools/DesktopTools.hpp.orig 2025-11-12 12:55:13 UTC
++++ linphone-app/src/components/other/desktop-tools/DesktopTools.hpp
@@ -23,7 +23,7 @@
#include <QtGlobal>
diff --git a/net/linphone/files/patch-linphone-app_src_components_other_spell-checker_SpellChecker.cpp b/net/linphone/files/patch-linphone-app_src_components_other_spell-checker_SpellChecker.cpp
new file mode 100644
index 000000000000..2bb5c7ae5ecf
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_src_components_other_spell-checker_SpellChecker.cpp
@@ -0,0 +1,11 @@
+--- linphone-app/src/components/other/spell-checker/SpellChecker.cpp.orig 2025-12-26 08:15:07 UTC
++++ linphone-app/src/components/other/spell-checker/SpellChecker.cpp
+@@ -35,7 +35,7 @@ SpellChecker::SpellChecker(QObject *parent) : QSyntaxH
+ errorFormater.setUnderlineColor(Qt::red); // not supported before Qt6.2
+
+ QFontMetrics fm = QFontMetrics(CoreManager::getInstance()->getSettingsModel()->getTextMessageFont());
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ wave = QString("‾");
+ QRect boundingRect = fm.boundingRect(wave);
+ waveHeight = 10;
diff --git a/net/linphone/files/patch-linphone-app_src_components_other_spell-checker_SpellChecker.hpp b/net/linphone/files/patch-linphone-app_src_components_other_spell-checker_SpellChecker.hpp
new file mode 100644
index 000000000000..387a4a7ff230
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_src_components_other_spell-checker_SpellChecker.hpp
@@ -0,0 +1,20 @@
+--- linphone-app/src/components/other/spell-checker/SpellChecker.hpp.orig 2025-12-26 08:14:55 UTC
++++ linphone-app/src/components/other/spell-checker/SpellChecker.hpp
+@@ -38,7 +38,7 @@
+ #include "components/core/CoreManager.hpp"
+ #include "components/settings/SettingsModel.hpp"
+
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ #include <thread>
+ #endif
+
+@@ -113,7 +113,7 @@ signals: (private)
+ #endif
+
+ // ISpell linux
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ static int gISpell_sc_read_fd;
+ static int gISpell_sc_write_fd;
+ static int gISpell_app_read_fd;
diff --git a/net/linphone/files/patch-linphone-app_src_components_vfs_VfsUtils.hpp b/net/linphone/files/patch-linphone-app_src_components_vfs_VfsUtils.hpp
new file mode 100644
index 000000000000..10dbc9516b98
--- /dev/null
+++ b/net/linphone/files/patch-linphone-app_src_components_vfs_VfsUtils.hpp
@@ -0,0 +1,11 @@
+--- linphone-app/src/components/vfs/VfsUtils.hpp.orig 2025-12-26 08:02:03 UTC
++++ linphone-app/src/components/vfs/VfsUtils.hpp
+@@ -26,7 +26,7 @@
+ #ifdef QTKEYCHAIN_USE_BUILD_INTERFACE
+ #include <keychain.h>
+ #elif defined(QTKEYCHAIN_TARGET_NAME)
+-#define KEYCHAIN_HEADER <QTKEYCHAIN_TARGET_NAME/keychain.h>
++#define KEYCHAIN_HEADER <qt5keychain/keychain.h>
+ #include KEYCHAIN_HEADER
+ #else
+ #include <EQt5Keychain/keychain.h>
diff --git a/net/linphone/pkg-plist b/net/linphone/pkg-plist
index 50fc36acea0d..8f643c0ee333 100644
--- a/net/linphone/pkg-plist
+++ b/net/linphone/pkg-plist
@@ -1,4 +1,25 @@
bin/linphone
+include/LinphoneApp/LinphonePlugin.hpp
+include/LinphoneApp/PluginDataAPI.hpp
+include/LinphoneApp/PluginExample.json
+include/LinphoneApp/PluginNetworkHelper.hpp
+lib/libISpell.so
lib/linphone/libapp-plugin.so
share/applications/linphone.desktop
+share/icons/hicolor/128x128/apps/linphone.png
+share/icons/hicolor/16x16/apps/linphone.png
+share/icons/hicolor/22x22/apps/linphone.png
+share/icons/hicolor/24x24/apps/linphone.png
+share/icons/hicolor/256x256/apps/linphone.png
+share/icons/hicolor/32x32/apps/linphone.png
+share/icons/hicolor/64x64/apps/linphone.png
share/icons/hicolor/scalable/apps/linphone.svg
+%%DATADIR%%/assistant/create-app-sip-account.rc
+%%DATADIR%%/assistant/use-app-sip-account.rc
+%%DATADIR%%/assistant/use-other-sip-account.rc
+%%DATADIR%%/ispell_dictionaries/en
+%%DATADIR%%/ispell_dictionaries/en.hash
+%%DATADIR%%/ispell_dictionaries/fr
+%%DATADIR%%/ispell_dictionaries/fr.hash
+%%DATADIR%%/linphonerc-factory
+%%ETCDIR%%/qt.conf