diff --git a/cmake/install/cleanCPack.cmake.in b/cmake/install/cleanCPack.cmake.in
new file mode 100644
index 000000000..53246b1f5
--- /dev/null
+++ b/cmake/install/cleanCPack.cmake.in
@@ -0,0 +1,61 @@
+################################################################################
+#
+# Copyright (c) 2017-2024 Belledonne Communications SARL.
+#
+# This file is part of linphone-desktop
+# (see https://www.linphone.org).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+################################################################################
+
+# This script is used for CPack to remove root folders that comes from SDK.
+# As CPack call install() from SDK, its files are into cmake_install_prefix too.
+# It is neccessary to use it because CPack doesn't take account of some install() (those that do the move)
+
+set(DO_SIGNING @LINPHONE_BUILDER_SIGNING_IDENTITY@)
+set(DEPLOYQT_PROGRAM @DEPLOYQT_PROGRAM@)
+
+if(APPLE)
+ execute_process(COMMAND rsync -a --force "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/Frameworks/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_LIBDIR@/") #Use rsync to bypass symlinks override issues of frameworks. copy_directory will fail without explicit error...
+ #execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/Frameworks/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_LIBDIR@/")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/Frameworks/")
+
+ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/include/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_INCLUDEDIR@/")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/include/")
+ # move share
+ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/share/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_DATAROOTDIR@/")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/share/")
+ # move mkspecs
+ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/mkspecs/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_DATAROOTDIR@/")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/mkspecs/")
+ # remove other folders
+ execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/cmake/")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/lib/")
+
+
+ message(STATUS "Execute : @DEPLOYQT_PROGRAM@ ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@APPLICATION_NAME@.app -qmldir=@LINPHONE_QML_DIR@ -no-strip -verbose=2 -always-overwrite")
+ execute_process(COMMAND @DEPLOYQT_PROGRAM@ "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@APPLICATION_NAME@.app" "-qmldir=@LINPHONE_QML_DIR@" "-no-strip" "-verbose=2" "-always-overwrite")
+
+ #CPack doesn't sign all files.
+ if (DO_SIGNING)
+ execute_process(COMMAND bash "@CMAKE_SOURCE_DIR@/cmake/install/sign_package.sh" codesign "@LINPHONE_BUILDER_SIGNING_IDENTITY@" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE")
+ #execute_process(COMMAND codesign --entitlements" "@CMAKE_CURRENT_BINARY_DIR@/../../entitlements.xml" "--force" "--deep" "--timestamp" "--options" "runtime,library" "--verbose" "-s" "@LINPHONE_BUILDER_SIGNING_IDENTITY@" "@APPLICATION_OUTPUT_DIR@/@APPLICATION_NAME@.app")
+ endif()
+elseif(WIN32)
+ message(STATUS "Execute : @DEPLOYQT_PROGRAM@ ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/@CMAKE_INSTALL_BINDIR@/@EXECUTABLE_NAME@.exe --qmldir=@LINPHONE_QML_DIR@ --verbose=2 --no-compiler-runtime")
+ execute_process(COMMAND @DEPLOYQT_PROGRAM@ "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/@CMAKE_INSTALL_BINDIR@/@EXECUTABLE_NAME@.exe" "--qmldir=@LINPHONE_QML_DIR@" "--verbose=2" "--no-compiler-runtime")
+ # --plugindir "${CMAKE_CURRENT_BINARY_DIR}/winqt/plugins"
+ # --dir "${CMAKE_CURRENT_BINARY_DIR}/winqt/"
+endif()
diff --git a/cmake/install/install.cmake b/cmake/install/install.cmake
index 5838d049b..c93cf3d13 100644
--- a/cmake/install/install.cmake
+++ b/cmake/install/install.cmake
@@ -96,6 +96,7 @@ if(APPLE)
if (NOT DEPLOYQT_PROGRAM)
message(FATAL_ERROR "Could not find the macdeployqt program. Make sure it is in the PATH.")
endif()
+ #Packaging is done by CPack in the cleanCpack.cmake file. But on mac, we need Qt files in .app
if(NOT ENABLE_APP_PACKAGING)
install(CODE "MESSAGE(\"MacDeploy install: execute_process(COMMAND ${DEPLOYQT_PROGRAM} ${APPLICATION_OUTPUT_DIR}/${APPLICATION_NAME}.app -qmldir=${LINPHONE_QML_DIR} -no-strip -verbose=2 -always-overwrite) \")")
install(CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} ${APPLICATION_OUTPUT_DIR}/${APPLICATION_NAME}.app -qmldir=${LINPHONE_QML_DIR} -no-strip -verbose=2 -always-overwrite)")
@@ -114,8 +115,39 @@ elseif(WIN32)
NAMES msys2_shell.cmd
HINTS "C:/msys64/"
)
+ find_program(DEPLOYQT_PROGRAM windeployqt HINTS "${_qt_bin_dir}")
+ if (NOT DEPLOYQT_PROGRAM)
+ message(FATAL_ERROR "Could not find the windeployqt program. Make sure it is in the PATH.")
+ endif ()
endif()
+#Windeployqt hack for CPack. WindeployQt cannot be used only with a simple 'install(CODE "execute_process' or CPack will not have all required files.
+#Call it from target folder
+function(deployqt_hack target)
+ if(WIN32)
+ find_program(DEPLOYQT_PROGRAM windeployqt HINTS "${_qt_bin_dir}")
+ if (NOT DEPLOYQT_PROGRAM)
+ message(FATAL_ERROR "Could not find the windeployqt program. Make sure it is in the PATH.")
+ endif ()
+ add_custom_command(TARGET ${target} POST_BUILD
+ COMMAND "${CMAKE_COMMAND}" -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/winqt/"
+ COMMAND "${CMAKE_COMMAND}" -E
+ env PATH="${_qt_bin_dir}" "${DEPLOYQT_PROGRAM}"
+ --qmldir "${LINPHONE_QML_DIR}"
+ --plugindir "${CMAKE_CURRENT_BINARY_DIR}/winqt/plugins"
+ --verbose 0
+ --no-compiler-runtime
+ --dir "${CMAKE_CURRENT_BINARY_DIR}/winqt/"
+ "$"
+ COMMENT "Deploying Qt..."
+ WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}/.."
+ )
+ install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/winqt/" DESTINATION bin)
+ set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
+ include(InstallRequiredSystemLibraries)
+ endif()
+endfunction()
+
# ==============================================================================
# CPack.
# ==============================================================================
@@ -142,6 +174,9 @@ if(${ENABLE_APP_PACKAGING})
set(CPACK_RESOURCE_FILE_LICENSE_PROVIDED ${ENABLE_APP_LICENSE})
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/Linphone/data/icon.ico")
set(PERFORM_SIGNING 0)
+
+ configure_file("${CMAKE_SOURCE_DIR}/cmake/install/cleanCpack.cmake.in" "${CMAKE_BINARY_DIR}/cmake/install/cleanCpack.cmake" @ONLY)
+ set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_BINARY_DIR}/cmake/install/cleanCPack.cmake")
if(APPLE)
##############################################
@@ -155,9 +190,6 @@ if(${ENABLE_APP_PACKAGING})
set(CPACK_BUNDLE_APPLE_CERT_APP ${LINPHONE_BUILDER_SIGNING_IDENTITY})
set(PACKAGE_EXT "dmg")
- configure_file("${CMAKE_SOURCE_DIR}/cmake/install/macos/cleanCpack.cmake.in" "${CMAKE_BINARY_DIR}/cmake/install/macos/cleanCpack.cmake" @ONLY)
- set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_BINARY_DIR}/cmake/install/macos/cleanCPack.cmake")
-
message(STATUS "Set DragNDrop CPack generator in OUTPUT/Packages")
elseif(WIN32)
##############################################
diff --git a/cmake/install/macos/cleanCPack.cmake.in b/cmake/install/macos/cleanCPack.cmake.in
deleted file mode 100644
index 568d3a70b..000000000
--- a/cmake/install/macos/cleanCPack.cmake.in
+++ /dev/null
@@ -1,54 +0,0 @@
-################################################################################
-#
-# Copyright (c) 2017-2024 Belledonne Communications SARL.
-#
-# This file is part of linphone-desktop
-# (see https://www.linphone.org).
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-################################################################################
-
-# This script is used for CPack to remove root folders that comes from SDK.
-# As CPack call install() from SDK, its files are into cmake_install_prefix too.
-# It is neccessary to use it because CPack doesn't take account of some install() (those that do the move)
-
-set(DO_SIGNING @LINPHONE_BUILDER_SIGNING_IDENTITY@)
-set(DO_SIGNING @LINPHONE_BUILDER_SIGNING_IDENTITY@)
-
-execute_process(COMMAND rsync -a --force "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/Frameworks/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_LIBDIR@/") #Use rsync to bypass symlinks override issues of frameworks. copy_directory will fail without explicit error...
-#execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/Frameworks/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_LIBDIR@/")
-execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/Frameworks/")
-
-execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/include/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_INCLUDEDIR@/")
-execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/include/")
-# move share
-execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/share/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_DATAROOTDIR@/")
-execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/share/")
-# move mkspecs
-execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/mkspecs/" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@CMAKE_INSTALL_DATAROOTDIR@/")
-execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/mkspecs/")
-# remove other folders
-execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/cmake/")
-execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/lib/")
-
-
-message(STATUS "Execute : @DEPLOYQT_PROGRAM@ ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@APPLICATION_NAME@.app -qmldir=@LINPHONE_QML_DIR@ -no-strip -verbose=2 -always-overwrite")
-execute_process(COMMAND @DEPLOYQT_PROGRAM@ "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/@APPLICATION_NAME@.app" "-qmldir=@LINPHONE_QML_DIR@" "-no-strip" "-verbose=2" "-always-overwrite")
-
-#CPack doesn't sign all files.
-if (DO_SIGNING)
- execute_process(COMMAND bash "@CMAKE_SOURCE_DIR@/cmake/install/sign_package.sh" codesign "@LINPHONE_BUILDER_SIGNING_IDENTITY@" "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE")
- #execute_process(COMMAND codesign --entitlements" "@CMAKE_CURRENT_BINARY_DIR@/../../entitlements.xml" "--force" "--deep" "--timestamp" "--options" "runtime,library" "--verbose" "-s" "@LINPHONE_BUILDER_SIGNING_IDENTITY@" "@APPLICATION_OUTPUT_DIR@/@APPLICATION_NAME@.app")
-endif()
diff --git a/external/linphone-sdk b/external/linphone-sdk
index c07748c06..54bb7fb4d 160000
--- a/external/linphone-sdk
+++ b/external/linphone-sdk
@@ -1 +1 @@
-Subproject commit c07748c0683510f0c6267e29f83085a144cf9385
+Subproject commit 54bb7fb4d84141bb94042a09b157257df84d8be9