An error occurred while loading the file. Please try again.
-
1ae76d95
This GitLab CI configuration is valid.
Learn more
############################################################################
# CMakeLists.txt
# Copyright (c) 2010-2023 Belledonne Communications SARL.
#
############################################################################
#
# This file is part of Linphone SDK
# (see https://gitlab.linphone.org/BC/public/linphone-sdk).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
############################################################################
cmake_minimum_required(VERSION 3.22)
include("bctoolbox/cmake/BCToolboxCMakeUtils.cmake")
include("cmake/LinphoneSdkUtils.cmake")
if(POLICY CMP0149)
# VS generator looks for most recent Windows SDK, ignoring
# CMAKE_SYSTEM_VERSION and allowing override by WindowsSDKVersion
# environment variable. New in 3.27. This is to allow override
# in the Windows CI builds.
# This MUST be set before any project() or or enable_language() command.
cmake_policy(SET CMP0149 NEW)
endif()
if(POLICY CMP0141)
# Changes the way debug info on Windows are stored (forces /Z7)
# This is a requirement to use build cache on Windows, since /Zi is another Microsoft cache, incompatible with any third party cache known to date
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
cmake_policy(SET CMP0141 NEW)
endif()
# Unset PROJECT_VERSION for the case linphone-sdk is included from an other project
unset(PROJECT_VERSION)
if(NOT LINPHONESDK_VERSION) # If LINPHONESDK_VERSION exists (ie: is in cache), then the variable has been overriden by user
bc_compute_full_version(LINPHONESDK_VERSION)
endif()
if(NOT LINPHONESDK_STATE)
bc_compute_snapshots_or_releases_state(LINPHONESDK_STATE)
endif()
if(NOT LINPHONESDK_BRANCH)
linphone_sdk_compute_git_branch(LINPHONESDK_BRANCH)
endif()
set(LINPHONESDK_VERSION_CACHED ${LINPHONESDK_VERSION} CACHE STRING "" FORCE) # Put in cache the current version : it is used to read version in cache
bc_parse_full_version("${LINPHONESDK_VERSION}" MAJOR MINOR PATCH)
project(linphone-sdk VERSION "${MAJOR}.${MINOR}.${PATCH}" LANGUAGES C CXX)
unset(MAJOR)
unset(MINOR)
unset(PATCH)
if(APPLE)
if(LINPHONESDK_PLATFORM MATCHES "Desktop") # On Apple, Desktop == Macos
set(LINPHONESDK_PLATFORM "Macos" CACHE STRING "Platform to build" FORCE)
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
else()
set(LINPHONESDK_PLATFORM "Macos" CACHE STRING "Platform to build")
endif()
else()
set(LINPHONESDK_PLATFORM "Desktop" CACHE STRING "Platform to build")
endif()
set_property(CACHE LINPHONESDK_PLATFORM PROPERTY STRINGS "Android" "Desktop" "IOS" "Macos" "UWP" "Yocto")
set(LINPHONESDK_BUILD_TYPE "Default" CACHE STRING "Type of build")
set_property(CACHE LINPHONESDK_BUILD_TYPE PROPERTY STRINGS "Default" "Android" "Flexisip" "IOS" "Macos" "Packager" "UWP" "Windows")
set(LINPHONESDK_PACKAGER "" CACHE STRING "Packager name")
set_property(CACHE LINPHONESDK_PACKAGER PROPERTY STRINGS "Nuget" "")
if(LINPHONESDK_PLATFORM MATCHES "Android")
set(ANDROID TRUE)
elseif(LINPHONESDK_PLATFORM STREQUAL "IOS")
set(IOS TRUE)
elseif(LINPHONESDK_PLATFORM STREQUAL "UWP")
set(UWP TRUE)
endif()
include("cmake/Options.cmake")
include("cmake/CheckBuildTools${LINPHONESDK_PLATFORM}.cmake")
if(ENABLE_SANITIZER)
include("cmake/Sanitizer.cmake")
endif()
if(ENABLE_HW_SANITIZER)
include("cmake/HWSanitizer.cmake")
endif()
include("cmake/Platform${LINPHONESDK_PLATFORM}.cmake")
if(LINPHONESDK_BUILD_TYPE STREQUAL "Default" OR LINPHONESDK_BUILD_TYPE STREQUAL "Flexisip")
add_custom_target(sdk)
if(ENABLE_EKT_SERVER_PLUGIN)
include("cmake/EktServerClone.cmake")
endif()
if(ENABLE_TUNNEL)
include("cmake/TunnelClone.cmake")
endif()
if(ENABLE_PQCRYPTO AND IOS AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64"))
set(ENABLE_PQCRYPTO OFF)
message (WARNING "PQCRYPTO disabled for x86_64 ios simultator due to compatibility issue with xcode 15")
endif()
# Need to activate ASM and ASM_NASM at the top level and in this order to workaround a bug of CMake
enable_language(ASM)
enable_language(ASM_NASM)
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules")
if(MSVC)
# Prevent crash in std::mutex::lock() for builds made with latest VS 2022 version
# running on a machine where the redistributables are older.
# See https://stackoverflow.com/questions/78598141/first-stdmutexlock-crashes-in-application-built-with-latest-visual-studio
add_compile_definitions("_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR")
endif()
include("cmake/ExternalDependencies.cmake")
include("cmake/BCProjects.cmake")
elseif(LINPHONESDK_BUILD_TYPE STREQUAL "Packager")
include("cmake/LinphoneSdkPackager.cmake")
else()
include("cmake/Tasks${LINPHONESDK_BUILD_TYPE}.cmake")
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
endif()
# Give a feature summary
include(FeatureSummary)
feature_summary(FILENAME "${CMAKE_BINARY_DIR}/enabled_features.txt" WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
feature_summary(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
feature_summary(FILENAME "${CMAKE_BINARY_DIR}/disabled_features.txt" WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
feature_summary(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
if(ENABLE_GPL_THIRD_PARTIES)
message(WARNING "
***************************************************************************
***************************************************************************
***** CAUTION, this Linphone SDK is built using third party GPL code *****
***** Even if you acquired a proprietary license from Belledonne *****
***** Communications, this SDK is GPL and GPL only. *****
***** To disable third party GPL code, set the *****
***** ENABLE_GPL_THIRD_PARTIES option to OFF *****
***************************************************************************
***************************************************************************
")
elseif(ENABLE_G729 OR ENABLE_G729B_CNG)
message(WARNING "
***************************************************************************
***************************************************************************
***** CAUTION, this Linphone SDK is built with G729 codec (thanks to *****
***** the bcg729 library). *****
***** You must in addition acquire a bcg729 licence extension to use *****
***** this SDK to create a proprietary application. *****
***************************************************************************
***************************************************************************
")
else()
message("
***************************************************************************
***************************************************************************
***** Linphone SDK without third party GPL software *****
***** If you acquired a proprietary license from Belledonne *****
***** Communications, this SDK can be used to create *****
***** a proprietary Linphone-based application. *****
***************************************************************************
***************************************************************************
")
endif()
if(ENABLE_PYTHON_WRAPPER)
include("cmake/python/GenerateWheel.cmake")
endif()