From a84369490945186fcdf0825fee9937039cb7defb Mon Sep 17 00:00:00 2001 From: Julien Wadel <julien.wadel@belledonne-communications.com> Date: Tue, 20 Apr 2021 19:37:50 +0200 Subject: [PATCH] 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. --- CMakeLists.txt | 42 +++++++++++++++++++++++++------------ coreapi/CMakeLists.txt | 1 + daemon/CMakeLists.txt | 2 +- src/CMakeLists.txt | 14 ++++++++++--- wrappers/cpp/CMakeLists.txt | 23 +++++++++++--------- 5 files changed, 55 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 322432e3b4..316c05b082 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,11 @@ # ############################################################################ -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 4.5.0 LANGUAGES C CXX) @@ -72,6 +76,9 @@ 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_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.) + set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_EXTENSIONS NO) @@ -122,11 +129,13 @@ if (ENABLE_VCARD) endif() endif() -find_package(BelleSIP CONFIG REQUIRED) -find_package(Mediastreamer2 CONFIG REQUIRED) -find_package(ortp CONFIG REQUIRED) -find_package(bctoolbox 0.0.3 CONFIG REQUIRED OPTIONAL_COMPONENTS tester) -find_package(belr CONFIG REQUIRED) +if(NOT DISABLE_BC_PACKAGE_SEARCH) + find_package(BelleSIP CONFIG REQUIRED) + find_package(Mediastreamer2 CONFIG REQUIRED) + find_package(ortp CONFIG REQUIRED) + find_package(bctoolbox 0.0.3 CONFIG REQUIRED OPTIONAL_COMPONENTS tester) + find_package(belr CONFIG REQUIRED) +endif() if(ENABLE_ADVANCED_IM) find_package(XercesC REQUIRED) @@ -139,11 +148,16 @@ find_package(Sqlite3 REQUIRED) find_package(XML2 REQUIRED) if (ENABLE_DB_STORAGE) - #APPLE platform does not use dlopen for soci backend - if (APPLE OR ANDROID) - find_package(Soci REQUIRED COMPONENTS sqlite3) + if(NOT DISABLE_SOCI_PACKAGE_SEARCH) + #APPLE platform does not use dlopen for soci backend + if (APPLE OR ANDROID) + find_package(Soci REQUIRED COMPONENTS sqlite3) + else() + find_package(Soci REQUIRED) + endif() else() - find_package(Soci REQUIRED) + set(SOCI_FOUND YES) + set(SOCI_LIBRARIES "soci_core") endif() set(HAVE_DB_STORAGE 1) endif() @@ -402,9 +416,11 @@ write_basic_package_version_file( VERSION ${LINPHONE_VERSION} COMPATIBILITY AnyNewerVersion ) -export(EXPORT ${EXPORT_TARGETS_NAME}Targets - FILE "${CMAKE_CURRENT_BINARY_DIR}/LinphoneTargets.cmake" -) +if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS) + export(EXPORT ${EXPORT_TARGETS_NAME}Targets + FILE "${CMAKE_CURRENT_BINARY_DIR}/LinphoneTargets.cmake" + ) +endif() configure_package_config_file(cmake/LinphoneConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/LinphoneConfig.cmake" INSTALL_DESTINATION ${CONFIG_PACKAGE_LOCATION} diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index b665e0c12d..f21fb54933 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -161,6 +161,7 @@ if (ENABLE_SHARED) ${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_link_libraries(linphone-coreapi PRIVATE ortp mediastreamer bellesip belr) target_compile_options(linphone-coreapi PRIVATE "-fPIC") add_dependencies(linphone-coreapi liblinphone-git-version) if (ENABLE_JAVA_WRAPPER) diff --git a/daemon/CMakeLists.txt b/daemon/CMakeLists.txt index dba1788e7d..c1cd710193 100644 --- a/daemon/CMakeLists.txt +++ b/daemon/CMakeLists.txt @@ -118,7 +118,7 @@ bc_apply_compile_flags(DAEMON_SOURCE_FILES STRICT_OPTIONS_CPP STRICT_OPTIONS_CXX bc_apply_compile_flags(DAEMON_PIPETEST_SOURCE_FILES STRICT_OPTIONS_CPP STRICT_OPTIONS_C) add_executable(linphone-daemon ${DAEMON_SOURCE_FILES}) 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 LINKER_LANGUAGE CXX) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1ca6605ccb..d76c8ff871 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -24,8 +24,10 @@ set(LINK_LIBS bctoolbox ${BELLESIP_TARGETNAME} belr - mediastreamer +) +set(PUBLIC_LINK_LIBS ortp + mediastreamer ) #APPLE_LIBS is mandatory for apple compilation @@ -528,7 +530,10 @@ if(ENABLE_STATIC) $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/> 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) target_link_libraries(linphone-static PUBLIC ${APPLE_LIBS}) @@ -599,7 +604,10 @@ if(ENABLE_SHARED) $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/> 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) target_link_libraries(linphone PUBLIC ${APPLE_LIBS}) diff --git a/wrappers/cpp/CMakeLists.txt b/wrappers/cpp/CMakeLists.txt index 23ee6e53f6..48fbf3ebd1 100644 --- a/wrappers/cpp/CMakeLists.txt +++ b/wrappers/cpp/CMakeLists.txt @@ -56,7 +56,7 @@ if(MSVC) endif() target_compile_definitions(linphone++ PRIVATE "-DLINPHONECXX_EXPORTS") target_link_libraries(linphone++ - PRIVATE ${BCTOOLBOX_CORE_LIBRARIES} ${BELLESIP_LIBRARIES} linphone + PRIVATE bctoolbox bellesip linphone ) set_target_properties(linphone++ PROPERTIES @@ -66,12 +66,13 @@ set_target_properties(linphone++ PROPERTIES ) target_include_directories(linphone++ - PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/include - PRIVATE ${PROJECT_BINARY_DIR}/include - PRIVATE ${PROJECT_SOURCE_DIR}/include - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} - PRIVATE ${BCTOOLBOX_INCLUDE_DIRS} - PRIVATE ${BELLESIP_INCLUDE_DIRS} + PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + $<INSTALL_INTERFACE:include> + PRIVATE + ${PROJECT_BINARY_DIR}/include + ${PROJECT_SOURCE_DIR}/include ) set_target_properties(linphone++ PROPERTIES SOVERSION ${LINPHONE_SO_VERSION}) @@ -94,9 +95,11 @@ write_basic_package_version_file( VERSION ${PROJECT_VERSION} COMPATIBILITY AnyNewerVersion ) -export(EXPORT LinphoneCxxTargets - FILE "${CMAKE_CURRENT_BINARY_DIR}/LinphoneCxxTargets.cmake" -) +if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS) + export(EXPORT LinphoneCxxTargets + FILE "${CMAKE_CURRENT_BINARY_DIR}/LinphoneCxxTargets.cmake" + ) +endif() configure_file(LinphoneCxxConfig.cmake.in LinphoneCxxConfig.cmake @ONLY) install(EXPORT LinphoneCxxTargets -- GitLab