Commit 2066e4d4 authored by Julien Wadel's avatar Julien Wadel Committed by François Grisez
Browse files

Prepare the CMakeLists.txt for new Flexisp build and packaging scripts

* Require CMake 3.13 or later
* Adding DISABLE_BC_PACKAGE_SEARCH hidden variable
* Export linphone and linphone++ targets on configure stage only when LINPHONE_BUILDER_GROUP feature is on.

(cherry picked from commit a8436949)
Showing with 71 additions and 43 deletions
############################################################################ ############################################################################
# CMakeLists.txt # CMakeLists.txt
# Copyright (C) 2010-2019 Belledonne Communications, Grenoble France # Copyright (C) 2010-2021 Belledonne Communications, Grenoble France
# #
############################################################################ ############################################################################
# #
...@@ -20,9 +20,14 @@ ...@@ -20,9 +20,14 @@
# #
############################################################################ ############################################################################
cmake_minimum_required(VERSION 3.1)
# CMake 3.13 required for new Flexisip build process.
# See [CMP077](https://cmake.org/cmake/help/v3.13/policy/CMP0077.html).
cmake_minimum_required(VERSION 3.13)
project(linphone VERSION 5.0.0 LANGUAGES C CXX) project(linphone VERSION 5.0.0 LANGUAGES C CXX)
set(LINPHONE_MAJOR_VERSION ${PROJECT_VERSION_MAJOR}) set(LINPHONE_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
set(LINPHONE_MINOR_VERSION ${PROJECT_VERSION_MINOR}) set(LINPHONE_MINOR_VERSION ${PROJECT_VERSION_MINOR})
set(LINPHONE_MICRO_VERSION ${PROJECT_VERSION_PATCH}) set(LINPHONE_MICRO_VERSION ${PROJECT_VERSION_PATCH})
...@@ -73,6 +78,10 @@ option(ENABLE_PACKAGE_SOURCE "Create 'package_source' target for source archive ...@@ -73,6 +78,10 @@ option(ENABLE_PACKAGE_SOURCE "Create 'package_source' target for source archive
cmake_dependent_option(ENABLE_NOTIFY "Enable libnotify support." YES "ENABLE_GTK_UI;NOT APPLE" NO) cmake_dependent_option(ENABLE_NOTIFY "Enable libnotify support." YES "ENABLE_GTK_UI;NOT APPLE" NO)
cmake_dependent_option(ENABLE_ASSISTANT "Turn on assistant compiling." YES "ENABLE_GTK_UI" NO) cmake_dependent_option(ENABLE_ASSISTANT "Turn on assistant compiling." YES "ENABLE_GTK_UI" NO)
# Hidden non-cache options:
# * DISABLE_BC_PACKAGE_SEARCH: skip find_package() for every BC package (bctoolbox, ortp, etc.)
# * DISABLE_SOCI_PACKAGE_SEARCH: skip find_package() for Soci.
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS NO) set(CMAKE_CXX_EXTENSIONS NO)
...@@ -123,11 +132,13 @@ if (ENABLE_VCARD) ...@@ -123,11 +132,13 @@ if (ENABLE_VCARD)
endif() endif()
endif() endif()
find_package(BelleSIP CONFIG REQUIRED) if(NOT DISABLE_BC_PACKAGE_SEARCH)
find_package(Mediastreamer2 CONFIG REQUIRED) find_package(BelleSIP CONFIG REQUIRED)
find_package(ortp CONFIG REQUIRED) find_package(Mediastreamer2 CONFIG REQUIRED)
find_package(bctoolbox 0.0.3 CONFIG REQUIRED OPTIONAL_COMPONENTS tester) find_package(ortp CONFIG REQUIRED)
find_package(belr CONFIG REQUIRED) find_package(bctoolbox 0.0.3 CONFIG REQUIRED OPTIONAL_COMPONENTS tester)
find_package(belr CONFIG REQUIRED)
endif()
if(ENABLE_ADVANCED_IM) if(ENABLE_ADVANCED_IM)
find_package(XercesC REQUIRED) find_package(XercesC REQUIRED)
...@@ -140,21 +151,21 @@ find_package(Sqlite3 REQUIRED) ...@@ -140,21 +151,21 @@ find_package(Sqlite3 REQUIRED)
find_package(XML2 REQUIRED) find_package(XML2 REQUIRED)
if (ENABLE_DB_STORAGE) if (ENABLE_DB_STORAGE)
if(NOT DISABLE_SOCI_PACKAGE_SEARCH) if(NOT DISABLE_SOCI_PACKAGE_SEARCH)
#APPLE platform does not use dlopen for soci backend #APPLE platform does not use dlopen for soci backend
if (APPLE OR ANDROID) if (APPLE OR ANDROID)
find_package(Soci REQUIRED COMPONENTS sqlite3) find_package(Soci REQUIRED COMPONENTS sqlite3)
else() else()
find_package(Soci REQUIRED) find_package(Soci REQUIRED)
endif() endif()
else() else()
set(SOCI_FOUND YES) set(SOCI_FOUND YES)
set(SOCI_LIBRARIES soci_core) set(SOCI_LIBRARIES soci_core)
if (APPLE OR ANDROID) if (APPLE OR ANDROID)
set(SOCI_sqlite3_PLUGIN soci_sqlite3) set(SOCI_sqlite3_PLUGIN soci_sqlite3)
endif() endif()
endif() endif()
set(HAVE_DB_STORAGE 1) set(HAVE_DB_STORAGE 1)
endif() endif()
find_package(ZLIB) find_package(ZLIB)
...@@ -420,9 +431,11 @@ write_basic_package_version_file( ...@@ -420,9 +431,11 @@ write_basic_package_version_file(
VERSION ${LINPHONE_VERSION} VERSION ${LINPHONE_VERSION}
COMPATIBILITY AnyNewerVersion COMPATIBILITY AnyNewerVersion
) )
export(EXPORT ${EXPORT_TARGETS_NAME}Targets if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS)
FILE "${CMAKE_CURRENT_BINARY_DIR}/LinphoneTargets.cmake" export(EXPORT ${EXPORT_TARGETS_NAME}Targets
) FILE "${CMAKE_CURRENT_BINARY_DIR}/LinphoneTargets.cmake"
)
endif()
configure_package_config_file(cmake/LinphoneConfig.cmake.in configure_package_config_file(cmake/LinphoneConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/LinphoneConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/LinphoneConfig.cmake"
INSTALL_DESTINATION ${CONFIG_PACKAGE_LOCATION} INSTALL_DESTINATION ${CONFIG_PACKAGE_LOCATION}
......
############################################################################ ############################################################################
# CMakeLists.txt # CMakeLists.txt
# Copyright (C) 2014 Belledonne Communications, Grenoble France # Copyright (C) 2010-2021 Belledonne Communications, Grenoble France
# #
############################################################################ ############################################################################
# #
...@@ -152,6 +152,7 @@ if (ENABLE_SHARED) ...@@ -152,6 +152,7 @@ if (ENABLE_SHARED)
${LINPHONE_PRIVATE_HEADER_FILES} ${LINPHONE_SOURCE_FILES_C} ${LINPHONE_SOURCE_FILES_CXX} ${LINPHONE_SOURCE_FILES_OBJC} ${LINPHONE_PRIVATE_HEADER_FILES} ${LINPHONE_SOURCE_FILES_C} ${LINPHONE_SOURCE_FILES_CXX} ${LINPHONE_SOURCE_FILES_OBJC}
) )
target_include_directories(linphone-coreapi PRIVATE ${LINPHONE_INCLUDE_DIRS}) target_include_directories(linphone-coreapi PRIVATE ${LINPHONE_INCLUDE_DIRS})
target_link_libraries(linphone-coreapi PRIVATE ortp mediastreamer bellesip belr)
target_compile_options(linphone-coreapi PRIVATE "-fPIC") target_compile_options(linphone-coreapi PRIVATE "-fPIC")
add_dependencies(linphone-coreapi liblinphone-git-version) add_dependencies(linphone-coreapi liblinphone-git-version)
if (ENABLE_JAVA_WRAPPER) if (ENABLE_JAVA_WRAPPER)
......
############################################################################ ############################################################################
# CMakeLists.txt # CMakeLists.txt
# Copyright (C) 2016 Belledonne Communications, Grenoble France # Copyright (C) 2010-2021 Belledonne Communications, Grenoble France
# #
############################################################################ ############################################################################
# #
...@@ -123,7 +123,7 @@ bc_apply_compile_flags(DAEMON_PIPETEST_SOURCE_FILES STRICT_OPTIONS_CPP STRICT_OP ...@@ -123,7 +123,7 @@ bc_apply_compile_flags(DAEMON_PIPETEST_SOURCE_FILES STRICT_OPTIONS_CPP STRICT_OP
bc_apply_compile_flags(DAEMON_SOURCE_FILES_OBJC STRICT_OPTIONS_CPP STRICT_OPTIONS_OBJC) bc_apply_compile_flags(DAEMON_SOURCE_FILES_OBJC STRICT_OPTIONS_CPP STRICT_OPTIONS_OBJC)
add_executable(linphone-daemon ${DAEMON_SOURCE_FILES} ${DAEMON_SOURCE_FILES_OBJC}) add_executable(linphone-daemon ${DAEMON_SOURCE_FILES} ${DAEMON_SOURCE_FILES_OBJC})
target_include_directories(linphone-daemon PRIVATE ${CMAKE_CURRENT_LIST_DIR} ${LINPHONE_INCLUDE_DIRS}) target_include_directories(linphone-daemon PRIVATE ${CMAKE_CURRENT_LIST_DIR} ${LINPHONE_INCLUDE_DIRS})
target_link_libraries(linphone-daemon ${LINPHONE_LIBS_FOR_TOOLS} mediastreamer ortp bctoolbox ${XSD_LIBRARIES}) target_link_libraries(linphone-daemon ${LINPHONE_LIBS_FOR_TOOLS} mediastreamer ortp bctoolbox bellesip ${XSD_LIBRARIES})
set_target_properties(linphone-daemon PROPERTIES LINK_FLAGS "${LINPHONE_LDFLAGS}") set_target_properties(linphone-daemon PROPERTIES LINK_FLAGS "${LINPHONE_LDFLAGS}")
set_target_properties(linphone-daemon PROPERTIES LINKER_LANGUAGE CXX) set_target_properties(linphone-daemon PROPERTIES LINKER_LANGUAGE CXX)
......
############################################################################ ############################################################################
# CMakeLists.txt # CMakeLists.txt
# Copyright (C) 2017 Belledonne Communications, Grenoble France # Copyright (C) 2010-2021 Belledonne Communications, Grenoble France
# #
############################################################################ ############################################################################
# #
...@@ -24,8 +24,10 @@ set(LINK_LIBS ...@@ -24,8 +24,10 @@ set(LINK_LIBS
bctoolbox bctoolbox
${BELLESIP_TARGETNAME} ${BELLESIP_TARGETNAME}
belr belr
mediastreamer )
set(PUBLIC_LINK_LIBS
ortp ortp
mediastreamer
) )
if (ENABLE_FLEXIAPI) if (ENABLE_FLEXIAPI)
...@@ -608,7 +610,10 @@ if(ENABLE_STATIC) ...@@ -608,7 +610,10 @@ if(ENABLE_STATIC)
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/> $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/>
PRIVATE ${LINPHONE_INCLUDE_DIRS} ${LINPHONE_CXX_OBJECTS_INCLUDE_DIRS} PRIVATE ${LINPHONE_INCLUDE_DIRS} ${LINPHONE_CXX_OBJECTS_INCLUDE_DIRS}
) )
target_link_libraries(linphone-static PRIVATE ${LINK_LIBS}) target_link_libraries(linphone-static
PUBLIC ${PUBLIC_LINK_LIBS}
PRIVATE ${LINK_LIBS}
)
if(APPLE) if(APPLE)
target_link_libraries(linphone-static PUBLIC ${APPLE_LIBS}) target_link_libraries(linphone-static PUBLIC ${APPLE_LIBS})
...@@ -688,7 +693,10 @@ if(ENABLE_SHARED) ...@@ -688,7 +693,10 @@ if(ENABLE_SHARED)
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/> $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/>
PRIVATE ${LINPHONE_INCLUDE_DIRS} ${LINPHONE_CXX_OBJECTS_INCLUDE_DIRS} PRIVATE ${LINPHONE_INCLUDE_DIRS} ${LINPHONE_CXX_OBJECTS_INCLUDE_DIRS}
) )
target_link_libraries(linphone PRIVATE ${LINK_LIBS}) target_link_libraries(linphone
PUBLIC ${PUBLIC_LINK_LIBS}
PRIVATE ${LINK_LIBS}
)
if(APPLE) if(APPLE)
target_link_libraries(linphone PUBLIC ${APPLE_LIBS}) target_link_libraries(linphone PUBLIC ${APPLE_LIBS})
......
...@@ -23,7 +23,10 @@ ...@@ -23,7 +23,10 @@
#include "c-wrapper/c-wrapper.h" #include "c-wrapper/c-wrapper.h"
#include "dial-plan/dial-plan.h" #include "dial-plan/dial-plan.h"
#ifdef HAVE_FLEXIAPI
#include "FlexiAPIClient.hh" #include "FlexiAPIClient.hh"
#endif
#include "bctoolbox/crypto.h" #include "bctoolbox/crypto.h"
#include "bctoolbox/regex.h" #include "bctoolbox/regex.h"
......
############################################################################ ############################################################################
# CMakeLists.txt # CMakeLists.txt
# Copyright (C) 2017 Belledonne Communications, Grenoble France # Copyright (C) 2010-2021 Belledonne Communications, Grenoble France
# #
############################################################################ ############################################################################
# #
...@@ -56,7 +56,7 @@ if(MSVC) ...@@ -56,7 +56,7 @@ if(MSVC)
endif() endif()
target_compile_definitions(linphone++ PRIVATE "-DLINPHONECXX_EXPORTS") target_compile_definitions(linphone++ PRIVATE "-DLINPHONECXX_EXPORTS")
target_link_libraries(linphone++ target_link_libraries(linphone++
PRIVATE ${BCTOOLBOX_CORE_LIBRARIES} ${BELLESIP_LIBRARIES} linphone PRIVATE bctoolbox bellesip linphone
) )
set_target_properties(linphone++ PROPERTIES set_target_properties(linphone++ PROPERTIES
...@@ -66,12 +66,13 @@ set_target_properties(linphone++ PROPERTIES ...@@ -66,12 +66,13 @@ set_target_properties(linphone++ PROPERTIES
) )
target_include_directories(linphone++ target_include_directories(linphone++
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/include PUBLIC
PRIVATE ${PROJECT_BINARY_DIR}/include $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
PRIVATE ${PROJECT_SOURCE_DIR}/include $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} $<INSTALL_INTERFACE:include>
PRIVATE ${BCTOOLBOX_INCLUDE_DIRS} PRIVATE
PRIVATE ${BELLESIP_INCLUDE_DIRS} ${PROJECT_BINARY_DIR}/include
${PROJECT_SOURCE_DIR}/include
) )
set_target_properties(linphone++ PROPERTIES SOVERSION ${LINPHONE_SO_VERSION}) set_target_properties(linphone++ PROPERTIES SOVERSION ${LINPHONE_SO_VERSION})
...@@ -94,9 +95,11 @@ write_basic_package_version_file( ...@@ -94,9 +95,11 @@ write_basic_package_version_file(
VERSION ${PROJECT_VERSION} VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion COMPATIBILITY AnyNewerVersion
) )
export(EXPORT LinphoneCxxTargets if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS)
FILE "${CMAKE_CURRENT_BINARY_DIR}/LinphoneCxxTargets.cmake" export(EXPORT LinphoneCxxTargets
) FILE "${CMAKE_CURRENT_BINARY_DIR}/LinphoneCxxTargets.cmake"
)
endif()
configure_file(LinphoneCxxConfig.cmake.in LinphoneCxxConfig.cmake @ONLY) configure_file(LinphoneCxxConfig.cmake.in LinphoneCxxConfig.cmake @ONLY)
install(EXPORT LinphoneCxxTargets install(EXPORT LinphoneCxxTargets
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment