Set build install paths and options.

This commit is contained in:
Julien Wadel 2023-07-11 09:56:47 +02:00
parent 94ea043ac6
commit f285ce68de
36 changed files with 941 additions and 218 deletions

View file

@ -100,7 +100,7 @@ job-archlinux-latest-ninja-clang-novideo:
# - $NIGHTLY_MASTER
# - $DEPLOY_LINUX
# variables:
# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON
# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_GPL_THIRD_PARTIES=ON
# extends: job-archlinux-latest-makefile-clang
# artifacts:
# paths:

View file

@ -74,7 +74,7 @@ job-centos7-ninja-gcc-package:
variables:
- $DEPLOY_LINUX_CENTOS7
variables:
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
CMAKE_GENERATOR: Ninja
CC: gcc
CXX: g++

View file

@ -109,7 +109,7 @@ job-debian10-makefile-clang-package:
- $NIGHTLY_MASTER
- $DEPLOY_LINUX
variables:
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
extends: job-debian10-makefile-clang
artifacts:
paths:

View file

@ -55,7 +55,7 @@ job-ubuntu1804-ninja-clang:
variables:
- $NIGHTLY_MASTER
variables:
CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
CMAKE_GENERATOR: Ninja
CC: clang
CXX: clang++
@ -76,7 +76,7 @@ job-ubuntu1804-makefile-gcc:
- $NIGHTLY_MASTER
- $DEPLOY_PLUGINS
variables:
CMAKE_OPTIONS: -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
CMAKE_GENERATOR: Unix Makefiles
CC: gcc
CXX: g++
@ -118,7 +118,7 @@ job-ubuntu1804-makefile-gcc-package:
- $PACKAGE_LINUX
- $DEPLOY_LINUX
variables:
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
CMAKE_GENERATOR: Unix Makefiles
CC: gcc
CXX: g++

View file

@ -92,7 +92,7 @@ job-ubuntu-rolling-ninja-clang-novideo:
# - $NIGHTLY_MASTER
# - $DEPLOY_LINUX
# variables:
# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON
# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_GPL_THIRD_PARTIES=ON
# extends: job-ubuntu-rolling-makefile-clang
# artifacts:
# paths:

View file

@ -40,13 +40,14 @@
# On each push
#################################################
#TODO: reactivate pcrypto when liboqs is fixed for 'Vortex' CPU.
job-macosx-ninja:
except:
refs:
- schedules
variables:
CMAKE_GENERATOR: Ninja
CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DENABLE_PQCRYPTO=OFF
extends: .job-macosx-desktop
#################################################
@ -60,7 +61,7 @@ job-macosx-makefile:
- $DEPLOY_PLUGINS
variables:
CMAKE_GENERATOR: Unix Makefiles
CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DENABLE_PQCRYPTO=OFF
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
extends: .job-macosx-desktop
@ -69,7 +70,7 @@ job-macosx-ninja-novideo:
variables:
- $NIGHTLY_MASTER
variables:
CMAKE_OPTIONS: -DENABLE_VIDEO=OFF -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DENABLE_VIDEO=OFF -DENABLE_PQCRYPTO=OFF
CMAKE_GENERATOR: Ninja
extends: .job-macosx-desktop

View file

@ -10,7 +10,7 @@
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
- if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
variables:
CMAKE_OPTIONS: -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
LINPHONESDK_PLATFORM: Desktop
OUTPUT_ZIP_FOLDER: win64
MINGW_TYPE: mingw64
@ -102,7 +102,7 @@
.windows-vs2019-msvc:
extends: .windows-vs2019
variables:
CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
LINPHONESDK_PLATFORM: Desktop
CMAKE_GENERATOR: "Visual Studio 16 2019"
BUILD_TARGET: install
@ -158,7 +158,7 @@ vs2019-win64-package:
- if: $PACKAGE_WINDOWS
- if: $DEPLOY_WINDOWS
variables:
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER
#################################################

View file

@ -22,6 +22,7 @@
cmake_minimum_required(VERSION 3.22)
get_cmake_property(vars CACHE_VARIABLES)
foreach(var ${vars})
get_property(currentHelpString CACHE "${var}" PROPERTY HELPSTRING)
@ -39,6 +40,8 @@ if(ENABLE_BUILD_VERBOSE)
message("User Args : ${USER_ARGS}")
endif()
if( APPLE )
set(LINPHONESDK_BUILD_TYPE "Macos")
set(ENABLE_FAT_BINARY "ON")
if( NOT CMAKE_OSX_DEPLOYMENT_TARGET)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version")
endif()
@ -55,9 +58,23 @@ endif()
project(linphoneqt)
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
include(GNUInstallDirs)
include(CheckCXXCompilerFlag)
set(CMAKE_CXX_STANDARD 17)
set(APPLICATION_OUTPUT_DIR "${CMAKE_BINARY_DIR}/OUTPUT")
set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}")
#set(LINPHONE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/linphone-sdk/desktop") # Fromp 5.3, this install output is no more usable. We have to install all into the same folder as the final folder.
#set(QTKEYCHAIN_OUTPUT_DIR "${CMAKE_BINARY_DIR}/qtkeychain")
#set(LINPHONE_OUTPUT_DIR "${APPLICATION_OUTPUT_DIR}")
#set(LINPHONE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/linphone-sdk/linphone-sdk/mac")
#set(LINPHONE__DIR "${CMAKE_BINARY_DIR}/linphone-sdk/linphone-sdk/mac")
set(QTKEYCHAIN_OUTPUT_DIR "${APPLICATION_OUTPUT_DIR}")
set(QTKEYCHAIN_TARGET_NAME "EQt5Keychain")
# Avoid cmake warning if CMP0071 is not set.
if (POLICY CMP0071)
cmake_policy(SET CMP0071 NEW)
@ -85,49 +102,63 @@ endif()
#-------------------------------------------------------------------------------
# SET OPTIONS
#-------------------------------------------------------------------------------
set(OPTION_LIST)
function(add_option OPTION DESC VALUE)
option(${OPTION} ${DESC} ${VALUE})
list(APPEND OPTION_LIST "-D${OPTION}=${VALUE}")
endfunction()
option(ENABLE_APP_LICENSE "Enable the license in packages." ON)
option(ENABLE_APP_OAUTH2 "Build with OAuth2 support for remote provisioning." OFF) # Experimental.
option(ENABLE_APP_PACKAGING "Enable packaging" OFF)
option(ENABLE_APP_PACKAGE_ROOTCA "Embed the rootca file into the package" ON)
option(ENABLE_APP_PDF_VIEWER "Enable Pdf viewer" ON)
option(ENABLE_APP_WEBVIEW "Enable webviews." OFF) # Webview is not fully supported because of deployments. Used for subscription.
option(ENABLE_BUILD_APP_PLUGINS "Enable the build of plugins" ON)
option(ENABLE_BUILD_EXAMPLES "Enable the build of examples" OFF)
option(ENABLE_BUILD_VERBOSE "Enable the build generation to be more verbose" OFF)
option(ENABLE_QT_KEYCHAIN "Build QtKeychain to manage VFS from System key stores." ON)
option(ENABLE_UPDATE_CHECK "Enable update check." ON)
option(LINPHONE_SDK_MAKE_RELEASE_FILE_URL "Make a RELEASE file that work along check_version and use this URL" "")
option(ENABLE_RELATIVE_PREFIX "Set Internal packages relative to the binary" ON)
#option(ENABLE_APP_LICENSE "Enable the license in packages." ON)
add_option(ENABLE_APP_LICENSE "Enable the license in packages." ON)
add_option(ENABLE_APP_OAUTH2 "Build with OAuth2 support for remote provisioning." OFF) # Experimental.
add_option(ENABLE_APP_PACKAGING "Enable packaging" OFF)
add_option(ENABLE_APP_PACKAGE_ROOTCA "Embed the rootca file into the package" ON)
add_option(ENABLE_APP_PDF_VIEWER "Enable Pdf viewer" ON)
add_option(ENABLE_APP_WEBVIEW "Enable webviews." OFF) # Webview is not fully supported because of deployments. Used for subscription.
add_option(ENABLE_BUILD_APP_PLUGINS "Enable the build of plugins" ON)
add_option(ENABLE_BUILD_EXAMPLES "Enable the build of examples" OFF)
add_option(ENABLE_BUILD_VERBOSE "Enable the build generation to be more verbose" OFF)
add_option(ENABLE_CONSOLE_UI "Turn on or off compilation of console interface." OFF)
add_option(ENABLE_DAEMON "Enable the linphone daemon interface." OFF)
add_option(ENABLE_DOC "Enable API documentation generation." OFF)
add_option(ENABLE_FFMPEG "Build mediastreamer2 with ffmpeg video support." OFF)# No more needed
add_option(ENABLE_LDAP "Enable LDAP support." YES)
add_option(ENABLE_NON_FREE_CODECS "Enable the use of non free codecs" YES)
add_option(ENABLE_NON_FREE_FEATURES "Enable the use of non free codecs" ${ENABLE_NON_FREE_CODECS})
add_option(ENABLE_OPENH264 "Enable the use of OpenH264 codec" YES)
add_option(ENABLE_QT_KEYCHAIN "Build QtKeychain to manage VFS from System key stores." ON)
add_option(ENABLE_QRCODE "Enable QRCode support" OFF)#Experimental
add_option(ENABLE_RELATIVE_PREFIX "Set Internal packages relative to the binary" ON)
add_option(ENABLE_SANITIZER "Enable sanitizer." OFF)
add_option(ENABLE_STRICT "Build with strict compilator flags e.g. -Wall -Werror" OFF)
add_option(ENABLE_TESTS "Build with testing binaries of SDK" OFF)
add_option(ENABLE_TESTS_COMPONENTS "Build libbctoolbox-tester" OFF)
add_option(ENABLE_TOOLS "Enable tools of SDK" OFF)
add_option(ENABLE_UNIT_TESTS "Enable unit test of SDK." OFF)
add_option(ENABLE_UPDATE_CHECK "Enable update check." ON)
add_option(ENABLE_VIDEO "Enable Video support." YES)
add_option(ENABLE_WINDOWS_TOOLS_CHECK "Enable tools checks on Windows for auto install." OFF)
add_option(LINPHONE_SDK_MAKE_RELEASE_FILE_URL "Make a RELEASE file that work along check_version and use this URL" "")
# QtKeychain
option(LIBSECRET_SUPPORT "Build with libsecret support" OFF) # Need libsecret-devel
add_option(LIBSECRET_SUPPORT "Build with libsecret support" OFF) # Need libsecret-devel
# Set some SDK variables to configure the APP build as we want it
set(ENABLE_CONSOLE_UI OFF)
set(ENABLE_CXX_WRAPPER ON CACHE BOOL "Build the C++ wrapper for Liblinphone." FORCE)
set(ENABLE_DAEMON OFF)
set(ENABLE_FFMPEG OFF)
set(ENABLE_LDAP ON)
set(ENABLE_NON_FREE_FEATURES ON)
set(ENABLE_OPENH264 ON)
set(ENABLE_QRCODE OFF) # Experimental
set(ENABLE_SANITIZER OFF)
set(ENABLE_STRICT OFF)
set(ENABLE_TESTS_COMPONENT OFF)
set(ENABLE_THEORA OFF)
set(ENABLE_TOOLS OFF)
set(ENABLE_VIDEO ON)
if(WIN32)
set(ENABLE_OPENSSL_EXPORT ON)
option(ENABLE_OPENSSL_EXPORT "Enable OpenSSL deployment" YES)
elseif(APPLE)
set(ENABLE_OPENSSL_EXPORT OFF)
option(ENABLE_OPENSSL_EXPORT "Enable OpenSSL deployment" OFF)
else()
set(ENABLE_V4L ON)
set(ENABLE_OPENSSL_EXPORT OFF)
option(ENABLE_V4L "Ability to capture and display video using libv4l2 or libv4l." YES)
option(ENABLE_OPENSSL_EXPORT "Enable OpenSSL deployment" OFF)
endif()
# Set some SDK variables to configure the APP build as we want it
set(ENABLE_CXX_WRAPPER ON CACHE BOOL "Build the C++ wrapper for Liblinphone." FORCE)
set(ENABLE_THEORA OFF)
set(ENABLE_QT_GL ${ENABLE_VIDEO})
find_package(Qt5 5.10 COMPONENTS Core REQUIRED)
@ -135,32 +166,60 @@ if(NOT Qt5_FOUND)
message(FATAL_ERROR "Minimum supported Qt5 version is 5.10!")
endif()
set(LINPHONEAPP_BUILD_TYPE "Default" CACHE STRING "Type of build")
set_property(CACHE LINPHONEAPP_BUILD_TYPE PROPERTY STRINGS "Default" "Macos" "Normal")
if(LINPHONEAPP_BUILD_TYPE STREQUAL "Default")
if(APPLE)
set(LINPHONEAPP_BUILD_TYPE "Macos")
else()
set(LINPHONEAPP_BUILD_TYPE "Normal")
endif()
endif()
if(NOT LINPHONE_QT_ONLY)
function(add_linphone_sdk)
set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}")
#set(CMAKE_BINARY_DIR ${APPLICATION_OUTPUT_DIR})
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) # Prevent project from overriding the options we just set here
add_subdirectory("linphone-sdk")
endfunction()
add_linphone_sdk()
function(add_linphone_sdk)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) # Prevent project from overriding the options we just set here
add_subdirectory("linphone-sdk")
if(ENABLE_QT_KEYCHAIN)
function(add_linphone_keychain)
set(CMAKE_INSTALL_PREFIX "${QTKEYCHAIN_OUTPUT_DIR}")
add_subdirectory("external/qtkeychain")
endfunction()
add_linphone_keychain()
endif()
get_target_property(LINPHONE_BIN_DIR sdk LOCATION)
endif()
if(NOT LINPHONE_OUTPUT_DIR AND NOT LINPHONE_BIN_DIR)
set(LINPHONE_OUTPUT_DIR ${APPLICATION_OUTPUT_DIR})
else()
set(LINPHONE_OUTPUT_DIR ${LINPHONE_BIN_DIR})
endif()
if(NOT APPLE)
function(add_linphone_app)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) # Prevent project from overriding the options we just set here
if(APPLE)
add_compile_definitions("ENABLE_FAT_BINARY=ON") # Disable XCFrameworks as it is not supported.
elseif(UNIX)
set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/lib64:$ORIGIN/../lib64:$ORIGIN/lib:$ORIGIN/../lib")
endif()
add_subdirectory("linphone-app")
endfunction()
add_linphone_sdk()
if(ENABLE_QT_KEYCHAIN)
set(QTKEYCHAIN_TARGET_NAME "EQt5Keychain")
add_subdirectory("external/qtkeychain")
add_linphone_app()
if(ENABLE_BUILD_APP_PLUGINS)
add_subdirectory("plugins" "plugins-app")
endif()
else()
include(cmake/TasksMacos.cmake)
endif()
function(add_linphone_app)
if(APPLE)
add_compile_definitions("ENABLE_FAT_BINARY=ON") # Disable XCFrameworks as it is not supported.
elseif(UNIX)
set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/lib64:$ORIGIN/../lib64:$ORIGIN/lib:$ORIGIN/../lib")
endif()
add_subdirectory("linphone-app")
endfunction()
add_linphone_app()
if(ENABLE_BUILD_APP_PLUGINS)
add_subdirectory("plugins" "plugins-app")
endif()

113
cmake/TasksMacos.cmake Normal file
View file

@ -0,0 +1,113 @@
############################################################################
# TasksMacos.cmake
# Copyright (C) 2010-2023 Belledonne Communications, Grenoble France
#
############################################################################
#
# 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 2
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
############################################################################
set(LINPHONEAPP_MACOS_ARCHS "x86_64" CACHE STRING "MacOS architectures to build: comma-separated list of values in [arm64, x86_64]")
option(ENABLE_FAT_BINARY "Enable fat binary generation using lipo." ON)
set(_MACOS_ARCHS ${LINPHONEAPP_MACOS_ARCHS})
#linphone_sdk_convert_comma_separated_list_to_cmake_list("${LINPHONESDK_MACOS_ARCHS}" _MACOS_ARCHS)
############################################################################
# Clean previously generated SDK
############################################################################
#add_custom_target(clean-sdk ALL
# COMMAND "${CMAKE_COMMAND}"
# "-DLINPHONESDK_DIR=${PROJECT_SOURCE_DIR}"
# "-DLINPHONESDK_BUILD_DIR=${PROJECT_BINARY_DIR}"
# "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
# "-P" "${PROJECT_SOURCE_DIR}/cmake/macos/CleanSDK.cmake"
# WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
# COMMENT "Cleaning SDK"
# USES_TERMINAL
#)
############################################################################
# Build each selected architecture
############################################################################
#linphone_sdk_get_inherited_cmake_args(_CMAKE_CONFIGURE_ARGS _CMAKE_BUILD_ARGS)
#linphone_sdk_get_enable_cmake_args(_MACOS_CMAKE_ARGS)
#-DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR}
set(_MACOS_TARGETS)
foreach(_MACOS_ARCH IN LISTS _MACOS_ARCHS)
set(_MACOS_ARCH_BINARY_DIR "${PROJECT_BINARY_DIR}/app_mac-${_MACOS_ARCH}")
set(_MACOS_ARCH_INSTALL_DIR "${PROJECT_BINARY_DIR}/OUTPUT/mac-${_MACOS_ARCH}")
add_custom_target(app_mac-${_MACOS_ARCH} ALL
COMMAND ${CMAKE_COMMAND} -B ${_MACOS_ARCH_BINARY_DIR} ${USER_ARGS} ${OPTION_LIST} -DCMAKE_INSTALL_PREFIX=${_MACOS_ARCH_INSTALL_DIR} -DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR} -DCMAKE_TOOLCHAIN_FILE=${PROJECT_SOURCE_DIR}/cmake/toolchains/toolchain-mac-x86_64.cmake -DLINPHONEAPP_BUILD_TYPE="Normal"
COMMAND ${CMAKE_COMMAND} --build ${_MACOS_ARCH_BINARY_DIR} --target install ${_CMAKE_BUILD_ARGS}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/linphone-app
DEPENDS sdk
COMMENT "Building Linphone APP for MacOS ${_MACOS_ARCH}"
USES_TERMINAL
COMMAND_EXPAND_LISTS
)
list(APPEND _MACOS_TARGETS mac-${_MACOS_ARCH})
endforeach()
############################################################################
# Generate the aggregated frameworks
############################################################################
#add_custom_target(gen-frameworks ALL
# COMMAND "${CMAKE_COMMAND}"
# "-DLINPHONESDK_DIR=${PROJECT_SOURCE_DIR}"
# "-DLINPHONESDK_BUILD_DIR=${PROJECT_BINARY_DIR}"
# "-DLINPHONESDK_MACOS_ARCHS=${LINPHONESDK_MACOS_ARCHS}"
# "-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/linphone-sdk/mac"
# "-DENABLE_FAT_BINARY=${ENABLE_FAT_BINARY}"
# "-P" "${PROJECT_SOURCE_DIR}/cmake/macos/GenerateFrameworks.cmake"
# DEPENDS ${_MACOS_TARGETS}
# WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
# COMMENT "Aggregating frameworks of all architectures"
# USES_TERMINAL
#)
############################################################################
# Generate the SDK
############################################################################
#list(GET _MACOS_ARCHS 0 _FIRST_ARCH)
#add_custom_target(sdk ALL
# COMMAND "${CMAKE_COMMAND}"
# "-DLINPHONESDK_PLATFORM=${LINPHONESDK_PLATFORM}"
# "-DLINPHONESDK_DIR=${PROJECT_SOURCE_DIR}"
# "-DLINPHONESDK_BUILD_DIR=${PROJECT_BINARY_DIR}"
# "-DLINPHONESDK_VERSION=${LINPHONESDK_VERSION}"
# "-DLINPHONESDK_ENABLED_FEATURES_FILENAME=${CMAKE_BINARY_DIR}/enabled_features.txt"
# "-DLINPHONESDK_MACOS_ARCHS=${LINPHONESDK_MACOS_ARCHS}"
# "-DLINPHONESDK_MACOS_BASE_URL=${LINPHONESDK_MACOS_BASE_URL}"
# "-DENABLE_FAT_BINARY=${ENABLE_FAT_BINARY}"
# "-P" "${PROJECT_SOURCE_DIR}/cmake/macos/GenerateSDK.cmake"
# DEPENDS gen-frameworks
# WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
# COMMENT "Generating the SDK (zip file and podspec)"
# USES_TERMINAL
#)

View file

@ -0,0 +1,24 @@
################################################################################
#
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
message(FATAL_ERROR A)
set(CMAKE_SYSTEM_PROCESSOR "arm64")
set(CMAKE_OSX_ARCHITECTURES "arm64")
set(CLANG_TARGET "arm64-apple-macos")
include("${CMAKE_CURRENT_LIST_DIR}/toolchain-mac-common.cmake")

View file

@ -0,0 +1,106 @@
############################################################################
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
############################################################################
# Building for Mac is only available under APPLE systems
if(NOT APPLE)
message(FATAL_ERROR "You need to build using a Mac OS X system")
endif()
execute_process(COMMAND xcode-select -print-path
RESULT_VARIABLE XCODE_SELECT_RESULT
OUTPUT_VARIABLE XCODE_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT ${XCODE_SELECT_RESULT} EQUAL 0)
message(FATAL_ERROR "xcode-select failed: ${XCODE_SELECT_RESULT}. You may need to install Xcode.")
endif()
execute_process(COMMAND xcrun --sdk macosx --show-sdk-version
RESULT_VARIABLE XCRUN_SHOW_SDK_VERSION_RESULT
OUTPUT_VARIABLE MACOS_SDK_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT ${XCRUN_SHOW_SDK_VERSION_RESULT} EQUAL 0)
message(FATAL_ERROR "xcrun failed: ${XCRUN_SHOW_SDK_VERSION_RESULT}. You may need to install Xcode.")
endif()
execute_process(COMMAND xcrun --sdk macosx --show-sdk-platform-path
RESULT_VARIABLE XCRUN_SHOW_SDK_PATH_RESULT
OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT ${XCRUN_SHOW_SDK_PATH_RESULT} EQUAL 0)
message(FATAL_ERROR "xcrun failed: ${XCRUN_SHOW_SDK_PATH_RESULT}. You may need to install Xcode.")
endif()
set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT}/Developer/SDKs/MacOSX.sdk")
execute_process(COMMAND xcrun --sdk macosx --find clang
RESULT_VARIABLE XCRUN_FIND_CLANG_RESULT
OUTPUT_VARIABLE CLANG_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT ${XCRUN_FIND_CLANG_RESULT} EQUAL 0)
message(FATAL_ERROR "xcrun failed: ${XCRUN_FIND_CLANG_RESULT}. You may need to install Xcode.")
endif()
get_filename_component(TOOLCHAIN_PATH "${CLANG_PATH}" DIRECTORY)
message(STATUS "Using sysroot path: ${CMAKE_OSX_SYSROOT}")
message(STATUS "Using sdk version: ${MACOS_SDK_VERSION}")
set(SDK_BIN_PATH "${CMAKE_OSX_SYSROOT}/../../usr/bin")
set(TOOLCHAIN_CC "${TOOLCHAIN_PATH}/clang")
set(TOOLCHAIN_CXX "${TOOLCHAIN_PATH}/clang++")
set(TOOLCHAIN_OBJC "${TOOLCHAIN_PATH}/clang")
set(TOOLCHAIN_LD "${TOOLCHAIN_PATH}/ld")
set(TOOLCHAIN_AR "${TOOLCHAIN_PATH}/ar")
set(TOOLCHAIN_RANLIB "${TOOLCHAIN_PATH}/ranlib")
set(TOOLCHAIN_STRIP "${TOOLCHAIN_PATH}/strip")
set(TOOLCHAIN_NM "${TOOLCHAIN_PATH}/nm")
execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERSION_RAW OUTPUT_STRIP_TRAILING_WHITESPACE)
STRING(REGEX REPLACE "Xcode ([^\n]*).*" "\\1" XCODE_VERSION "${XCODE_VERSION_RAW}")
include(CMakeForceCompiler)
set(CMAKE_CROSSCOMPILING FALSE)
# Define name of the target system
set(CMAKE_SYSTEM_NAME "Darwin")
set(CMAKE_SYSTEM_VERSION ${MACOS_SDK_VERSION})
# The following variables are needed to build correctly with Xcode
if(CMAKE_GENERATOR STREQUAL "Xcode")
set(CMAKE_MACOSX_BUNDLE NO)#if YES, cmake try_compile will not be able to test executable.app and then API info will fail.
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED NO)
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED NO)
set(CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE "bitcode")
endif()
# Define the compiler
set(CMAKE_C_COMPILER "${TOOLCHAIN_CC}")
set(CMAKE_C_COMPILER_TARGET "${CLANG_TARGET}")
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_CXX}")
set(CMAKE_CXX_COMPILER_TARGET "${CLANG_TARGET}")
set(CMAKE_AR "${TOOLCHAIN_AR}" CACHE FILEPATH "ar")
set(CMAKE_RANLIB "${TOOLCHAIN_RANLIB}" CACHE FILEPATH "ranlib")
set(CMAKE_LINKER "${TOOLCHAIN_LD}" CACHE FILEPATH "linker")
set(CMAKE_NM "${TOOLCHAIN_NM}" CACHE FILEPATH "nm")
set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT} ${CMAKE_INSTALL_PREFIX})
#important: the GUI identifier is required so that executables can be launched on simulators
set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.linphone.\${PRODUCT_NAME:identifier}")

View file

@ -0,0 +1,24 @@
################################################################################
#
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_OSX_ARCHITECTURES "x86_64")
set(CLANG_TARGET "x86_64-apple-darwin")
include("${CMAKE_CURRENT_LIST_DIR}/toolchain-mac-common.cmake")

View file

@ -0,0 +1,26 @@
############################################################################
# toolchain-uwp-common.cmake
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
############################################################################
set(CMAKE_CROSSCOMPILING TRUE)
set(CMAKE_SYSTEM_NAME "WindowsStore")
set(CMAKE_SYSTEM_VERSION "10.0")
set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD TRUE)
set(CMAKE_VS_WINRT_BY_DEFAULT TRUE)

View file

@ -0,0 +1,22 @@
################################################################################
# toolchain-uwp-x64.cmake
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
include("${CMAKE_CURRENT_LIST_DIR}/toolchain-uwp-common.cmake")

View file

@ -0,0 +1,22 @@
################################################################################
# toolchain-uwp-x86.cmake
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
set(CMAKE_SYSTEM_PROCESSOR "x86")
include("${CMAKE_CURRENT_LIST_DIR}/toolchain-uwp-common.cmake")

View file

@ -0,0 +1,31 @@
############################################################################
# toolchain-windows-store-common.cmake
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
############################################################################
set(CMAKE_C_STANDARD_LIBRARIES "WindowsApp.lib ${CMAKE_C_STANDARD_LIBRARIES}")
set(CMAKE_CXX_STANDARD_LIBRARIES "WindowsApp.lib ${CMAKE_CXX_STANDARD_LIBRARIES}")
set(CMAKE_EXE_LINKER_FLAGS_INIT "/APPCONTAINER")
set(CMAKE_MODULE_LINKER_FLAGS_INIT "/APPCONTAINER")
set(CMAKE_SHARED_LINKER_FLAGS_INIT "/APPCONTAINER")
add_compile_definitions("ENABLE_MICROSOFT_STORE_APP" "_WIN32_WINNT=0x0A00")
link_directories(BEFORE ${MICROSOFT_STORE_LINK_PATHS})

View file

@ -0,0 +1,23 @@
################################################################################
# toolchain-windows-store-x64.cmake
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
# set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(MICROSOFT_STORE_LINK_PATHS "\$(WindowsSDK_LibraryPath_x64);\$(NETFXKitsDir)Lib\\um\\x64;\$(VC_LibraryPath_VC_x64_store);\$(VC_ReferencesPath_ATL_x64);\$(VC_LibraryPath_VC_x64);\$(VC_LibraryPath_x64);\$(VC_VS_LibraryPath_VC_VS_x64);\$(LibraryPath);\$(VC_LibraryPath_VC_x64_store)\\references")
include("${CMAKE_CURRENT_LIST_DIR}/toolchain-windows-store-common.cmake")

View file

@ -0,0 +1,23 @@
################################################################################
# toolchain-windows-store-x86.cmake
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
# set(CMAKE_SYSTEM_PROCESSOR "x86")
set(MICROSOFT_STORE_LINK_PATHS "\$(WindowsSDK_LibraryPath_x86);\$(NETFXKitsDir)Lib\\um\\x86;\$(VC_LibraryPath_VC_x86_store);\$(VC_ReferencesPath_ATL_x86);\$(VC_LibraryPath_VC_x86);\$(VC_LibraryPath_x86);\$(VC_VS_LibraryPath_VC_VS_x86);\$(LibraryPath);\$(VC_LibraryPath_VC_x86_store)\\references")
include("${CMAKE_CURRENT_LIST_DIR}/toolchain-windows-store-common.cmake")

View file

@ -23,9 +23,9 @@
cmake_minimum_required(VERSION 3.22)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
find_package(BcToolbox)
if(NOT BCTOOLBOX_FOUND)
set(LINPHONE_TARGETS)
find_package(BCToolbox)
if(NOT BCToolbox_FOUND)
find_package(bctoolbox CONFIG)
endif()
set(FULL_VERSION )
@ -64,6 +64,10 @@ list(APPEND CMAKE_MODULE_PATH "${LINPHONE_OUTPUT_DIR}/lib/cmake")
list(APPEND CMAKE_PREFIX_PATH "${QTKEYCHAIN_OUTPUT_DIR}/lib64/cmake")
list(APPEND CMAKE_PREFIX_PATH "${QTKEYCHAIN_OUTPUT_DIR}/lib/cmake")
if(APPLE)
list(APPEND CMAKE_FRAMEWORK_PATH "${LINPHONE_OUTPUT_DIR}/Frameworks")
endif()
set(APP_LIBRARY app-library)
set(APP_PLUGIN app-plugin)
include(application_info.cmake)
@ -86,33 +90,33 @@ if(WIN32)
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${EXECUTABLE_OUTPUT_DIR} )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
endif()
if(TARGET sdk)#if not exist, this build is coming from crosscompiling (aka already dependent of sdk)
list(APPEND LINPHONE_TARGETS sdk)
set(LINPHONE_PACKAGES Belr Belcard Ortp Mediastreamer2 BelleSIP Linphone LinphoneCxx)
endif()
find_package(Ortp)
if(NOT ORTP_FOUND)
find_package(ortp CONFIG)
endif()
find_package(Mediastreamer2)
if(NOT MEDIASTREAMER2_FOUND)
find_package(Mediastreamer2 CONFIG)
endif()
find_package(Belcard)
if(NOT BELCARD_FOUND)
find_package(belcard CONFIG)
endif()
find_package(Linphone)
if(NOT LINPHONE_FOUND)
find_package(Linphone CONFIG)
endif()
find_package(LinphoneCxx)
if(NOT LINPHONECXX_FOUND)
find_package(LinphoneCxx CONFIG)
set(ENABLE_ADVANCED_IM ON CACHE BOOLEAN "Enable IM")
set(ENABLE_DB_STORAGE ON CACHE BOOLEAN "Enable Storage")
if(ENABLE_ADVANCED_IM OR ENABLE_DB_STORAGE OR ENABLE_PQCRYPTO)
list(PREPEND LINPHONE_PACKAGES Lime)
endif()
foreach(PACKAGE ${LINPHONE_PACKAGES})
message(STATUS "Trying to find ${PACKAGE}")
find_package(${PACKAGE})
if(NOT ${PACKAGE}_FOUND)
find_package(${PACKAGE} CONFIG)
endif()
endforeach()
if(ENABLE_QT_KEYCHAIN)
find_package(QtKeychain)
if(NOT QtKeychain_FOUND)
find_package(${QTKEYCHAIN_TARGET_NAME} CONFIG REQUIRED)
endif()
add_compile_definitions("ENABLE_QT_KEYCHAIN")
if(QtKeychain_USE_BUILD_INTERFACE)
add_compile_definitions("QTKEYCHAIN_USE_BUILD_INTERFACE")
@ -640,14 +644,13 @@ if(ENABLE_BUILD_VERBOSE)#useful to copy these Paths to QML previewers
message("QML_IMPORT_PATH=${QML_IMPORT_PATH}" )
message("Qt5 Paths : Qt5_DIR=$ENV{Qt5_DIR}, PATH=$ENV{PATH}")
endif()
if(APPLE)
if(MS2_PLUGINS_LOCATION)
set(MSPLUGINS_DIR ${MS2_PLUGINS_LOCATION})
else()
set(MSPLUGINS_DIR "Frameworks/mediastreamer2.framework/Versions/A/Libraries")
endif()
if(MEDIASTREAMER2_PLUGINS_LOCATION)
set(MSPLUGINS_DIR ${MEDIASTREAMER2_PLUGINS_LOCATION})
elseif(APPLE)
set(MSPLUGINS_DIR "Frameworks/mediastreamer2.framework/Versions/A/Libraries")
else()
set(MSPLUGINS_DIR "plugins/mediastreamer")
set(MSPLUGINS_DIR "${CMAKE_INSTALL_LIBDIR}/mediastreamer/plugins")
endif()
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
# ------------------------------------------------------------------------------
@ -715,14 +718,13 @@ endif()
target_compile_definitions(${APP_PLUGIN} PUBLIC "-DENABLE_APP_EXPORT_PLUGIN")
set_target_properties(${APP_PLUGIN} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
list(APPEND INCLUDED_DIRECTORIES "${LINPHONECXX_INCLUDE_DIRS}" "${MEDIASTREAMER2_INCLUDE_DIRS}")
list(APPEND INCLUDED_DIRECTORIES "${LINPHONECXX_INCLUDE_DIRS}" "${BCToolbox_INCLUDE_DIRS}" "${MEDIASTREAMER2_INCLUDE_DIRS}")
list(APPEND INCLUDED_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/include")
set(LIBRARIES_LIST ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES})
set(LIBRARIES_LIST ${BCToolbox_CORE_LIBRARIES} ${Belr_LIBRARIES} ${Belcard_LIBRARIES} ${BelleSIP_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES})
if(ENABLE_QT_KEYCHAIN)
list(APPEND INCLUDED_DIRECTORIES ${QtKeyChain_INCLUDE_DIRS})
list(APPEND LIBRARIES_LIST ${QtKeyChain_LIBRARIES})
list(APPEND LIBRARIES_LIST ${QtKeychain_LIBRARIES})
endif()
list(APPEND LIBRARIES ${LIBRARIES_LIST})
@ -751,8 +753,20 @@ if(ENABLE_QT_KEYCHAIN)
endif()
function(add_framework_library FW_NAME)
find_library(FRAMEWORK_${FW_NAME} NAMES ${FW_NAME} PATHS ${LINPHONE_OUTPUT_DIR} PATH_SUFFIXES Frameworks NO_DEFAULT_PATH)
message(STATUS "Found: ${FRAMEWORK_${FW_NAME}}/${FW_NAME} / ${FW_NAME}")
set(LIBRARIES ${LIBRARIES} "${FRAMEWORK_${FW_NAME}}/${FW_NAME}" PARENT_SCOPE)
endfunction()
if (APPLE)
list(APPEND LIBRARIES "-framework Cocoa -framework IOKit -framework AVFoundation")
list(APPEND LIBRARIES "-framework Cocoa" "-framework IOKit" "-framework AVFoundation")
add_framework_library(linphone++)
add_framework_library(belcard)
add_framework_library(bctoolbox)
add_framework_library(linphone)
add_framework_library(mediastreamer2)
# -framework linphone") #This doesn't work yet
endif ()
@ -760,6 +774,16 @@ target_include_directories(${APP_LIBRARY} SYSTEM PUBLIC ${INCLUDED_DIRECTORIES})
target_include_directories(${APP_PLUGIN} SYSTEM PUBLIC ${INCLUDED_DIRECTORIES})
target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${INCLUDED_DIRECTORIES})
if(ENABLE_QT_KEYCHAIN)
target_include_directories(${APP_LIBRARY} SYSTEM PUBLIC $<TARGET_PROPERTY:${QTKEYCHAIN_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
target_include_directories(${APP_PLUGIN} SYSTEM PUBLIC $<TARGET_PROPERTY:${QTKEYCHAIN_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
target_include_directories(${TARGET_NAME} SYSTEM PUBLIC $<TARGET_PROPERTY:${QTKEYCHAIN_TARGET_NAME},INTERFACE_INCLUDE_DIRECTORIES>)
endif()
link_directories(BEFORE "${LINPHONE_OUTPUT_DIR}/lib")
target_link_directories(${APP_LIBRARY} PUBLIC "${LINPHONE_OUTPUT_DIR}/lib")
target_link_directories(${APP_PLUGIN} PUBLIC "${LINPHONE_OUTPUT_DIR}/lib")
target_link_libraries(${APP_LIBRARY} ${LIBRARIES})
target_link_libraries(${APP_PLUGIN} ${LIBRARIES})
target_link_libraries(${APP_LIBRARY} ${APP_PLUGIN})
@ -771,6 +795,9 @@ if(WIN32 AND ENABLE_LDAP)
target_link_libraries(${TARGET_NAME} wsock32 ws2_32 ${OPENLDAP_LIBRARIES})
endif()
add_dependencies(${APP_LIBRARY} ${LINPHONE_TARGETS})
add_dependencies(${APP_PLUGIN} ${LINPHONE_TARGETS})
add_dependencies(${APP_LIBRARY} update_translations ${TARGET_NAME}-git-version ${APP_PLUGIN})
add_dependencies(${TARGET_NAME} ${APP_LIBRARY} ${APP_PLUGIN})
@ -798,9 +825,9 @@ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include" DESTINATION ".")
add_subdirectory(build)
# GMA: TODO add_subdirectory(cmake_builder/linphone_package)
add_subdirectory(cmake_builder/linphone_package)
# GMA: TODO deployqt_hack(${TARGET_NAME} ${LINPHONE_QML_DIR})
deployqt_hack(${TARGET_NAME} ${LINPHONE_QML_DIR})
# ------------------------------------------------------------------------------

View file

@ -0,0 +1,76 @@
############################################################################
# FindBctoolbox.cmake
# Copyright (C) 2023 Belledonne Communications, Grenoble France
#
############################################################################
#
# 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 2
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
############################################################################
#
# - Find the bctoolbox include files and library
# LINPHONE_TARGETS - Add usable targets into this list.
# BCToolbox_FOUND - System has lib bctoolbox
# BCToolbox_INCLUDE_DIRS - The bctoolbox include directories
# BCToolbox_LIBRARIES - The libraries needed to use bctoolbox
# BCToolbox_CMAKE_DIR - The bctoolbox cmake directory
# BCToolbox_CORE_FOUND - System has core bctoolbox
# BCToolbox_CORE_INCLUDE_DIRS - The core bctoolbox include directories
# BCToolbox_CORE_LIBRARIES - The core bctoolbox libraries
# BCToolbox_TESTER_FOUND - System has bctoolbox tester
# BCToolbox_TESTER_INCLUDE_DIRS - The bctoolbox tester include directories
# BCToolbox_TESTER_LIBRARIES - The bctoolbox tester libraries
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)
else()
get_target_property(BCToolbox_SOURCE_DIR bctoolbox SOURCE_DIR)
set(BCToolbox_CMAKE_DIR "${BCToolbox_SOURCE_DIR}/../cmake")
endif()
if(TARGET bctoolbox)
list(APPEND LINPHONE_TARGETS bctoolbox)
include(${BCToolbox_CMAKE_DIR}/BCToolboxCMakeUtils.cmake)
set(BCToolbox_CORE_LIBRARIES bctoolbox)
get_target_property(BCToolbox_CORE_INCLUDE_DIRS bctoolbox INTERFACE_INCLUDE_DIRECTORIES)
set(BCToolbox_CORE_FOUND TRUE)
if(TARGET bctoolbox-tester)
set(BCToolbox_TESTER_LIBRARIES bctoolbox-tester)
get_target_property(BCToolbox_TESTER_INCLUDE_DIRS bctoolbox-tester INTERFACE_INCLUDE_DIRECTORIES)
set(BCToolbox_TESTER_FOUND TRUE)
set(BCToolbox_TESTER_COMPONENT_VARIABLES BCToolbox_TESTER_FOUND BCToolbox_TESTER_INCLUDE_DIRS BCToolbox_TESTER_LIBRARIES)
endif()
set(BCToolbox_LIBRARIES ${BCToolbox_CORE_LIBRARIES} ${BCToolbox_TESTER_LIBRARIES})
set(BCToolbox_INCLUDE_DIRS ${BCToolbox_CORE_INCLUDE_DIRS} ${BCToolbox_TESTER_INCLUDE_DIRS})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(BCToolbox
DEFAULT_MSG
BCToolbox_INCLUDE_DIRS BCToolbox_LIBRARIES BCToolbox_CMAKE_DIR
BCToolbox_CORE_FOUND BCToolbox_CORE_INCLUDE_DIRS BCToolbox_CORE_LIBRARIES
${BCToolbox_TESTER_COMPONENT_VARIABLES}
)
mark_as_advanced(
BCToolbox_INCLUDE_DIRS BCToolbox_LIBRARIES BCToolbox_CMAKE_DIR
BCToolbox_CORE_FOUND BCToolbox_CORE_INCLUDE_DIRS BCToolbox_CORE_LIBRARIES
${BCToolbox_TESTER_COMPONENT_VARIABLES}
)
endif()

View file

@ -1,67 +0,0 @@
############################################################################
# FindBctoolbox.cmake
# Copyright (C) 2023 Belledonne Communications, Grenoble France
#
############################################################################
#
# 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 2
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
############################################################################
#
# - Find the bctoolbox include files and library
#
# BCTOOLBOX_FOUND - System has lib bctoolbox
# BCTOOLBOX_INCLUDE_DIRS - The bctoolbox include directories
# BCTOOLBOX_LIBRARIES - The libraries needed to use bctoolbox
# BCTOOLBOX_CMAKE_DIR - The bctoolbox cmake directory
# BCTOOLBOX_CORE_FOUND - System has core bctoolbox
# BCTOOLBOX_CORE_INCLUDE_DIRS - The core bctoolbox include directories
# BCTOOLBOX_CORE_LIBRARIES - The core bctoolbox libraries
# BCTOOLBOX_TESTER_FOUND - System has bctoolbox tester
# BCTOOLBOX_TESTER_INCLUDE_DIRS - The bctoolbox tester include directories
# BCTOOLBOX_TESTER_LIBRARIES - The bctoolbox tester libraries
if(TARGET bctoolbox)
set(BCTOOLBOX_CORE_LIBRARIES bctoolbox)
get_target_property(BCTOOLBOX_CORE_INCLUDE_DIRS bctoolbox INTERFACE_INCLUDE_DIRECTORIES)
set(BCTOOLBOX_CORE_FOUND TRUE)
get_target_property(BCTOOLBOX_SOURCE_DIR bctoolbox SOURCE_DIR)
set(BCTOOLBOX_CMAKE_DIR "${BCTOOLBOX_SOURCE_DIR}/../cmake")
if(TARGET bctoolbox-tester)
set(BCTOOLBOX_TESTER_LIBRARIES bctoolbox-tester)
get_target_property(BCTOOLBOX_TESTER_INCLUDE_DIRS bctoolbox-tester INTERFACE_INCLUDE_DIRECTORIES)
set(BCTOOLBOX_TESTER_FOUND TRUE)
set(BCTOOLBOX_TESTER_COMPONENT_VARIABLES BCTOOLBOX_TESTER_FOUND BCTOOLBOX_TESTER_INCLUDE_DIRS BCTOOLBOX_TESTER_LIBRARIES)
endif()
set(BCTOOLBOX_LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BCTOOLBOX_TESTER_LIBRARIES})
set(BCTOOLBOX_INCLUDE_DIRS ${BCTOOLBOX_CORE_INCLUDE_DIRS} ${BCTOOLBOX_TESTER_INCLUDE_DIRS})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(BcToolbox
DEFAULT_MSG
BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR
BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES
${BCTOOLBOX_TESTER_COMPONENT_VARIABLES}
)
mark_as_advanced(
BCTOOLBOX_INCLUDE_DIRS BCTOOLBOX_LIBRARIES BCTOOLBOX_CMAKE_DIR
BCTOOLBOX_CORE_FOUND BCTOOLBOX_CORE_INCLUDE_DIRS BCTOOLBOX_CORE_LIBRARIES
${BCTOOLBOX_TESTER_COMPONENT_VARIABLES}
)
endif()

View file

@ -22,22 +22,29 @@
#
# - Find the belcard include files and library
#
# BELCARD_FOUND - system has lib belcard
# BELCARD_INCLUDE_DIRS - the belcard include directory
# BELCARD_LIBRARIES - The library needed to use belcard
# LINPHONE_TARGETS - Add usable targets into this list.
# Belcard_FOUND - system has lib belcard
# Belcard_INCLUDE_DIRS - the belcard include directory
# Belcard_LIBRARIES - The library needed to use belcard
if(NOT TARGET belcard)
set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
include(GNUInstallDirs)
include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/belcard/cmake/belcardTargets.cmake)
endif()
if(TARGET belcard)
set(BELCARD_LIBRARIES belcard)
get_target_property(BELCARD_INCLUDE_DIRS belcard INTERFACE_INCLUDE_DIRECTORIES)
list(APPEND LINPHONE_TARGETS belcard)
set(Belcard_LIBRARIES belcard)
get_target_property(Belcard_INCLUDE_DIRS belcard INTERFACE_INCLUDE_DIRECTORIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Belcard
DEFAULT_MSG
BELCARD_INCLUDE_DIRS BELCARD_LIBRARIES
Belcard_INCLUDE_DIRS Belcard_LIBRARIES
)
mark_as_advanced(BELCARD_INCLUDE_DIRS BELCARD_LIBRARIES)
mark_as_advanced(Belcard_INCLUDE_DIRS Belcard_LIBRARIES)
endif()

View file

@ -0,0 +1,51 @@
############################################################################
# FindBelr.cmake
# Copyright (C) 2023 Belledonne Communications, Grenoble France
#
############################################################################
#
# 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 2
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
############################################################################
#
# - Find the belcard include files and library
#
# LINPHONE_TARGETS - Add usable targets into this list.
# BelleSIP_FOUND - system has lib belcard
# BelleSIP_INCLUDE_DIRS - the belcard include directory
# BelleSIP_LIBRARIES - The library needed to use belcard
if(NOT TARGET belle-sip)
set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
include(GNUInstallDirs)
include(${EXPORT_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake/BelleSIP/BelleSIPTargets.cmake)
endif()
if(TARGET belle-sip)
list(APPEND LINPHONE_TARGETS belle-sip)
set(BelleSIP_LIBRARIES belle-sip)
get_target_property(BelleSIP_INCLUDE_DIRS belle-sip INTERFACE_INCLUDE_DIRECTORIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(BelleSIP
DEFAULT_MSG
BelleSIP_INCLUDE_DIRS BelleSIP_LIBRARIES
)
mark_as_advanced(BelleSIP_INCLUDE_DIRS BelleSIP_LIBRARIES)
endif()

View file

@ -0,0 +1,51 @@
############################################################################
# FindBelr.cmake
# Copyright (C) 2023 Belledonne Communications, Grenoble France
#
############################################################################
#
# 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 2
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
############################################################################
#
# - Find the belcard include files and library
#
# LINPHONE_TARGETS - Add usable targets into this list.
# Belr_FOUND - system has lib belcard
# Belr_INCLUDE_DIRS - the belcard include directory
# Belr_LIBRARIES - The library needed to use belcard
if(NOT TARGET belr)
set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
include(GNUInstallDirs)
include(${EXPORT_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake/belr/belrTargets.cmake)
endif()
if(TARGET belr)
list(APPEND LINPHONE_TARGETS belr)
set(Belr_LIBRARIES belr)
get_target_property(Belr_INCLUDE_DIRS belr INTERFACE_INCLUDE_DIRECTORIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Belr
DEFAULT_MSG
Belr_INCLUDE_DIRS Belr_LIBRARIES
)
mark_as_advanced(Belr_INCLUDE_DIRS Belr_LIBRARIES)
endif()

View file

@ -0,0 +1,48 @@
############################################################################
# FindLime.cmake
# Copyright (C) 2023 Belledonne Communications, Grenoble France
#
############################################################################
#
# 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 2
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
############################################################################
#
# - Find the belcard include files and library
#
# LINPHONE_TARGETS - Add usable targets into this list.
# Lime_FOUND - system has lib belcard
# Lime_INCLUDE_DIRS - the belcard include directory
# Lime_LIBRARIES - The library needed to use belcard
if(NOT TARGET lime)
set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
include(GNUInstallDirs)
include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/lime/cmake/limeTargets.cmake)
endif()
if(TARGET lime)
list(APPEND LINPHONE_TARGETS lime)
set(Lime_LIBRARIES lime)
get_target_property(Lime_INCLUDE_DIRS lime INTERFACE_INCLUDE_DIRECTORIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Lime
DEFAULT_MSG
Lime_INCLUDE_DIRS Lime_LIBRARIES
)
mark_as_advanced(Lime_INCLUDE_DIRS Lime_LIBRARIES)
endif()

View file

@ -22,15 +22,23 @@
#
# - Find the linphone include files and library
#
# LINPHONE_TARGETS - Add usable targets into this list.
# LINPHONE_FOUND - system has lib linphone
# LINPHONE_INCLUDE_DIRS - the linphone include directory
# LINPHONE_LIBRARIES - The library needed to use linphone
# LINPHONE_LIBRARY_OUTPUT_DIRECTORY - Output directory for likbraries
if(NOT TARGET liblinphone)
set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
include(GNUInstallDirs)
include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/linphone/cmake/linphoneTargets.cmake)
endif()
if(TARGET liblinphone)
list(APPEND LINPHONE_TARGETS liblinphone)
set(LINPHONE_LIBRARIES liblinphone)
get_target_property(LINPHONE_INCLUDE_DIRS liblinphone INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(LINPHONE_INCLUDE_DIRS liblinphone INTERFACE_INCLUDE_DIRECTORIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Linphone

View file

@ -22,12 +22,19 @@
#
# - Find the linphonecxx include files and library
#
# LINPHONE_TARGETS - Add usable targets into this list.
# LINPHONECXX_FOUND - system has lib linphonecxx
# LINPHONECXX_INCLUDE_DIRS - the linphonecxx include directory
# LINPHONECXX_LIBRARIES - The library needed to use linphonecxx
if(TARGET liblinphone++)
if(NOT TARGET liblinphone++)
set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
include(GNUInstallDirs)
include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/LinphoneCxx/cmake/LinphoneCxxTargets.cmake)
endif()
if(TARGET liblinphone++)
list(APPEND LINPHONE_TARGETS liblinphone++)
set(LINPHONECXX_LIBRARIES liblinphone++)
get_target_property(LINPHONECXX_INCLUDE_DIRS liblinphone++ INTERFACE_INCLUDE_DIRECTORIES)

View file

@ -22,19 +22,25 @@
#
# - Find the mediastreamer2 include files and library
#
# LINPHONE_TARGETS - Add usable targets into this list.
# MEDIASTREAMER2_FOUND - system has lib mediastreamer2
# MEDIASTREAMER2_INCLUDE_DIRS - the mediasteamer2 include directory
# MEDIASTREAMER2_LIBRARIES - The library needed to use mediasteamer2
# MEDIASTREAMER2_PLUGINS_LOCATION - The location of the mediastreamer2 plugins
if(TARGET mediastreamer2)
if(NOT TARGET mediastreamer2)
set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
include(GNUInstallDirs)
include(${EXPORT_PATH}/${CMAKE_INSTALL_DATADIR}/Mediastreamer2/cmake/Mediastreamer2Targets.cmake)
endif()
if(TARGET mediastreamer2)
list(APPEND LINPHONE_TARGETS mediastreamer2)
set(MEDIASTREAMER2_LIBRARIES mediastreamer2)
get_target_property(MEDIASTREAMER2_INCLUDE_DIRS mediastreamer2 INTERFACE_INCLUDE_DIRECTORIES)
define_property(TARGET PROPERTY "MS2_PLUGINS" BRIEF_DOCS "Stores the location of mediastreamer2 plugins" FULL_DOCS "Stores the location of mediastreamer2 plugins")
get_target_property(MEDIASTREAMER2_PLUGINS_LOCATION mediastreamer2 MS2_PLUGINS)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Mediastreamer2
DEFAULT_MSG

View file

@ -20,12 +20,13 @@
#
# - Find the OpenLDAP include file and library
#
# LINPHONE_TARGETS - Add usable targets into this list.
# OPENLDAP_FOUND - system has OpenLDAP
# OPENLDAP_INCLUDE_DIRS - the OpenLDAP include directory
# OPENLDAP_LIBRARIES - The libraries needed to use OpenLDAP
if(TARGET ldap)
list(APPEND LINPHONE_TARGETS ldap)
set(OPENLDAP_LIBRARIES ldap)
get_target_property(OPENLDAP_INCLUDE_DIRS ldap INTERFACE_INCLUDE_DIRECTORIES)

View file

@ -22,22 +22,27 @@
#
# - Find the ortp include files and library
#
# LINPHONE_TARGETS - Add usable targets into this list.
# ORTP_FOUND - system has lib ortp
# ORTP_INCLUDE_DIRS - the ortp include directory
# ORTP_LIBRARIES - The library needed to use ortp
if(NOT TARGET ortp)
set(EXPORT_PATH ${LINPHONE_OUTPUT_DIR})
include(GNUInstallDirs)
include(${EXPORT_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake/ortp/ortpTargets.cmake)
endif()
if(TARGET ortp)
list(APPEND LINPHONE_TARGETS ortp)
set(ORTP_LIBRARIES ortp)
get_target_property(ORTP_INCLUDE_DIRS ortp INTERFACE_INCLUDE_DIRECTORIES)
set(ORTP_LIBRARIES ortp)
get_target_property(ORTP_INCLUDE_DIRS ortp INTERFACE_INCLUDE_DIRECTORIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Ortp
DEFAULT_MSG
ORTP_INCLUDE_DIRS ORTP_LIBRARIES
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Ortp
DEFAULT_MSG
ORTP_INCLUDE_DIRS ORTP_LIBRARIES
)
mark_as_advanced(ORTP_INCLUDE_DIRS ORTP_LIBRARIES)
mark_as_advanced(ORTP_INCLUDE_DIRS ORTP_LIBRARIES)
endif()

View file

@ -27,18 +27,15 @@
# QtKeychain_LIBRARIES - The library needed to use linphonecxx
if(TARGET ${QTKEYCHAIN_TARGET_NAME})
list(APPEND LINPHONE_TARGETS ${QTKEYCHAIN_TARGET_NAME})
set(QtKeychain_LIBRARIES ${QTKEYCHAIN_TARGET_NAME})
get_target_property(QtKeychain_INCLUDE_DIRS ${QTKEYCHAIN_TARGET_NAME} INTERFACE_INCLUDE_DIRECTORIES)
set(QtKeychain_USE_BUILD_INTERFACE TRUE)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(QtKeychain
DEFAULT_MSG
QtKeychain_INCLUDE_DIRS QtKeychain_LIBRARIES
)
mark_as_advanced(QtKeychain_INCLUDE_DIRS QtKeychain_LIBRARIES)
endif()

View file

@ -108,8 +108,18 @@ endif ()
# Specific deployment.
# ==============================================================================
set(APP_QT_CONF_DPI "1")
if (WIN32)
if(ENABLE_QT_KEYCHAIN)
if (WIN32)
file(GLOB LIB_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}/*.dll")
if( ENABLE_OPENH264)# Remove openH264 lib from the installation. this codec will be download by user
foreach(item ${LIB_FILES})
get_filename_component(LIBRARY_FILENAME ${item} NAME)
if("${LIBRARY_FILENAME}" MATCHES "^openh264.*.dll$")
list(REMOVE_ITEM LIB_FILES ${item})
endif()
endforeach(item)
endif()
#[[ if(ENABLE_QT_KEYCHAIN)
file(GLOB LIB_FILES "${QTKEYCHAIN_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}/*.dll")
install(FILES ${LIB_FILES} DESTINATION "${CMAKE_INSTALL_BINDIR}/")
endif()
@ -143,6 +153,7 @@ if (WIN32)
if(ENABLE_APP_PACKAGE_ROOTCA)
install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/Linphone/rootca.pem" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}/")
endif()
]]
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphonerc-factory" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}")
set(APP_QT_CONF_DPI "0")
set(APP_QT_CONF_PATH "")
@ -243,6 +254,7 @@ elseif (APPLE)
endif ()
# install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME}.app" DESTINATION "." USE_SOURCE_PERMISSIONS)
else()# Not Windows and Apple
#[[ file(GLOB SHARED_LIBRARIES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/lib*.so")
foreach (LIBRARY ${SHARED_LIBRARIES})
get_filename_component(LIBRARY_FILENAME ${LIBRARY} NAME)
message("Changing RPATH of ${LIBRARY_FILENAME} from '${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}' to '$ORIGIN/../${CMAKE_INSTALL_LIBDIR}'")
@ -297,6 +309,7 @@ else()# Not Windows and Apple
endif()
file(GLOB PLUGINS_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer/plugins/*")
install(FILES ${PLUGINS_FILES} DESTINATION "plugins/mediastreamer/" )
]]
# Install desktop/icon files.
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphone.desktop.cmake" "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.desktop" @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.desktop" DESTINATION "${CMAKE_INSTALL_DATADIR}/applications" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
@ -361,6 +374,7 @@ endif ()
# ==============================================================================
# CPack.
# ==============================================================================
if(${ENABLE_APP_PACKAGING})
set(CPACK_BINARY_STGZ OFF)
set(CPACK_BINARY_TGZ OFF)
@ -496,7 +510,7 @@ function(deployqt_hack target qml_dir)
#Note: CMAKE_CURRENT_SOURCE_DIR point to linphone-app because deployqt_hack is called there.
add_custom_command(TARGET ${target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" "-E" "copy_directory" "${CMAKE_CURRENT_SOURCE_DIR}/ui" "${qml_dir}"
WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}/..")
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
if(NOT ENABLE_APP_WEBVIEW)
set(RM_COMMAND "rm")
if(CMAKE_VERSION VERSION_LESS 3.17)
@ -504,7 +518,7 @@ function(deployqt_hack target qml_dir)
endif()
add_custom_command(TARGET ${target} POST_BUILD
COMMAND "${CMAKE_COMMAND}" "-E" "${RM_COMMAND}" "-f" "${qml_dir}/views/App/Main/Assistant/CreateAppSipAccountWithWebView.qml"
WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}/..")
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
endif()
if(WIN32)

View file

@ -53,7 +53,7 @@ if (NOT "${CMAKE_INSTALL_PREFIX}" MATCHES .*/_CPack_Packages/.*)
endif()
endif()
if(DO_GENERATOR)
execute_process( COMMAND ${CMAKE_CPACK_COMMAND} -G @CPACK_GENERATOR@ RESULT_VARIABLE CPACK_COMMAND_RESULT)
execute_process( COMMAND ${CMAKE_CPACK_COMMAND} -G @CPACK_GENERATOR@ -C @CMAKE_BUILD_TYPE@ RESULT_VARIABLE CPACK_COMMAND_RESULT)
if(CPACK_COMMAND_RESULT)
message(FATAL_ERROR "Failed to create @CPACK_GENERATOR@ package!")
endif()

View file

@ -65,7 +65,7 @@ SearchSipAddressesModel::~SearchSipAddressesModel(){
void SearchSipAddressesModel::setFilter(const QString& filter){
if(!filter.isEmpty()){
mMagicSearch->setSearchLimit((int)CoreManager::getInstance()->getSettingsModel()->getMagicSearchMaxResults());
mMagicSearch->getContactsListAsync(filter.toStdString(),"", (int)linphone::MagicSearchSource::All, linphone::MagicSearchAggregation::None);
mMagicSearch->getContactsListAsync(filter.toStdString(),"", (int)linphone::MagicSearch::Source::All, linphone::MagicSearch::Aggregation::None);
}else{
beginResetModel();
mList.clear();

View file

@ -38,13 +38,31 @@ export APPIMAGE_EXTRACT_AND_RUN=1
rm -rf ${WORK_DIR}/AppDir
mkdir -p "${WORK_DIR}/AppDir/usr/"
copyFolder()
{
mkdir -p "${WORK_DIR}/AppDir/usr/$1"
cp -rf "${BIN_SOURCE_DIR}/$1"/* "${WORK_DIR}/AppDir/usr/$1"
}
#Copy all files from the output project
cp -rf "${BIN_SOURCE_DIR}"/* "${WORK_DIR}/AppDir/usr/"
#cp -rf "${BIN_SOURCE_DIR}"/* "${WORK_DIR}/AppDir/usr/"
copyFolder bin
#cp -rf "${BIN_SOURCE_DIR}/bin"/* "${WORK_DIR}/AppDir/usr/bin"
# Copy share
copyFolder share/applications
copyFolder share/belr
copyFolder share/icons
copyFolder share/images
copyFolder share/linphone
copyFolder share/sounds
#remove Packages folder : it is not part of the project
rm -rf "${WORK_DIR}/AppDir/usr/Packages"
#rm -rf "${WORK_DIR}/AppDir/usr/Packages"
#remove libraries : there are automatically found by linuxdeploy
rm -rf "${WORK_DIR}/AppDir/usr/lib"
rm -rf "${WORK_DIR}/AppDir/usr/lib64"
#rm -rf "${WORK_DIR}/AppDir/usr/lib"
#rm -rf "${WORK_DIR}/AppDir/usr/lib64"
#Copy soci sqlite3 backend
mkdir -p "${WORK_DIR}/AppDir/usr/lib"
cp -f "${BIN_SOURCE_DIR}/lib"/libsoci_sqlite3* "${WORK_DIR}/AppDir/usr/lib/"
@ -57,13 +75,13 @@ cp -f "${BIN_SOURCE_DIR}/lib64"/libEQt* "${WORK_DIR}/AppDir/usr/lib/"
if [ -d "${BIN_SOURCE_DIR}/lib64/mediastreamer" ]; then
mkdir -p "${WORK_DIR}/AppDir/usr/plugins/"
cp -rf "${BIN_SOURCE_DIR}"/lib64/mediastreamer "${WORK_DIR}/AppDir/usr/plugins/"
mkdir -p "${WORK_DIR}/AppDir/usr/lib64/"
cp -rf "${BIN_SOURCE_DIR}"/lib64/mediastreamer "${WORK_DIR}/AppDir/usr/lib64/"
fi
if [ -d "${BIN_SOURCE_DIR}/lib/mediastreamer" ]; then
mkdir -p "${WORK_DIR}/AppDir/usr/plugins/"
cp -rf "${BIN_SOURCE_DIR}"/lib/mediastreamer "${WORK_DIR}/AppDir/usr/plugins/"
mkdir -p "${WORK_DIR}/AppDir/usr/lib/"
cp -rf "${BIN_SOURCE_DIR}"/lib/mediastreamer "${WORK_DIR}/AppDir/usr/lib/"
fi
if [ -f "${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage" ]; then
@ -83,7 +101,7 @@ fi
###########################################################################################
export QML_SOURCES_PATHS=${QML_SOURCES_PATHS}:${WORK_DIR}/..
export LD_LIBRARY_PATH=${QT_PATH}/lib
export LD_LIBRARY_PATH=${QT_PATH}/lib:${BIN_SOURCE_DIR}/lib:${BIN_SOURCE_DIR}/lib64
#export EXTRA_QT_PLUGINS=webenginecore;webview;webengine
echo "-- Generating AppDir for AppImage"

@ -1 +1 @@
Subproject commit b1d9eba1c96efc4f33edea6acc89d68815f11d97
Subproject commit 88c727d0c8cd2d93d8ddcca1a4bff4a2e2fd7e89