From e4ec35b3d2c68be26beb18151502a2acb9b6eaa7 Mon Sep 17 00:00:00 2001 From: Ghislain MARY <ghislain.mary@belledonne-communications.com> Date: Thu, 18 May 2023 12:35:01 +0200 Subject: [PATCH] Apply CMake refactor to the new example plugin. --- CMakeLists.txt | 3 - plugins/example/CMakeLists.txt | 102 ++++++++++++++------------------- plugins/example/Info.plist.in | 45 +++++++++++++++ src/CMakeLists.txt | 3 +- 4 files changed, 91 insertions(+), 62 deletions(-) create mode 100644 plugins/example/Info.plist.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 21fd2fde81..06b2f7641f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -529,9 +529,6 @@ if (ENABLE_PACKAGE_SOURCE) endif() if(ENABLE_EXAMPLE_PLUGIN) - if(ENABLE_XML2) - list(APPEND EP_exampleplugin_DEPENDENCIES "EP_xml2") - endif() add_subdirectory(plugins/example) endif() diff --git a/plugins/example/CMakeLists.txt b/plugins/example/CMakeLists.txt index 95f1681352..ff12e0c15a 100644 --- a/plugins/example/CMakeLists.txt +++ b/plugins/example/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################ # CMakeLists.txt -# Copyright (c) 2010-2022 Belledonne Communications SARL. +# Copyright (c) 2010-2023 Belledonne Communications SARL. # ############################################################################ # @@ -21,7 +21,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. ############################################################################ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.22) project(exampleplugin VERSION 1.1.1 LANGUAGES C CXX) set(PACKAGE "${PROJECT_NAME}") @@ -33,9 +33,6 @@ set(PACKAGE_TARNAME "exampleplugin") set(PACKAGE_URL "") set(VERSION "${PACKAGE_VERSION}") -option(ENABLE_SHARED "Build shared library." YES) -option(ENABLE_STATIC "Build static library." YES) - option(ENABLE_XML2 "Build with libxml2 support - for presence feature mainly" YES) set(CMAKE_CXX_STANDARD 17) @@ -71,65 +68,54 @@ endif() set(PLUGINS_DIR "${LINPHONE_PACKAGE_PLUGINS_DIR}") -if(ENABLE_STATIC) - add_library(exampleplugin-static STATIC ${SOURCE_FILES}) - target_include_directories(exampleplugin-static PUBLIC - PRIVATE ${INCLUDE_DIRS} - ) - set_target_properties(exampleplugin-static PROPERTIES OUTPUT_NAME exampleplugin) - set_target_properties(exampleplugin-static PROPERTIES LINKER_LANGUAGE CXX) - target_link_libraries(exampleplugin-static ${LIBS}) - install(TARGETS exampleplugin-static - ARCHIVE DESTINATION "${PLUGINS_DIR}" - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - ) -endif() -if(ENABLE_SHARED) +if(BUILD_SHARED_LIBS) if(NOT IOS) add_library(exampleplugin MODULE ${SOURCE_FILES}) else() add_library(exampleplugin SHARED ${SOURCE_FILES}) endif() +else() + add_library(exampleplugin STATIC ${SOURCE_FILES}) +endif() - target_include_directories(exampleplugin PUBLIC - $<INSTALL_INTERFACE:include/> - $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/coreapi/> - $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/> - $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/> - PRIVATE ${INCLUDE_DIRS} - ) - - target_link_libraries(exampleplugin PRIVATE linphone mediastreamer2 ${LIBS}) - set_target_properties(exampleplugin PROPERTIES LINKER_LANGUAGE CXX) - if(APPLE) - if(IOS) - set(MIN_OS ${LINPHONE_IOS_DEPLOYMENT_TARGET}) - set_target_properties(exampleplugin PROPERTIES - FRAMEWORK TRUE - MACOSX_FRAMEWORK_IDENTIFIER org.linphone.exampleplugin - MACOSX_FRAMEWORK_INFO_PLIST Info.plist.in - ) - else() - set(MIN_OS ${CMAKE_OSX_DEPLOYMENT_TARGET}) - endif() - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/build/osx/") - endif() - if(MSVC) - if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") - install(FILES $<TARGET_PDB_FILE:exampleplugin> - DESTINATION ${CMAKE_INSTALL_BINDIR} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - ) - endif() - if(NOT IOS) - set_target_properties(exampleplugin PROPERTIES PREFIX "lib") - endif() +target_include_directories(exampleplugin PUBLIC + $<INSTALL_INTERFACE:include/> + $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/coreapi/> + $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/> + $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/> + PRIVATE ${INCLUDE_DIRS} +) + +target_link_libraries(exampleplugin PRIVATE liblinphone ${LIBS}) +set_target_properties(exampleplugin PROPERTIES LINKER_LANGUAGE CXX) +if(APPLE) + if(IOS) + set(MIN_OS ${LINPHONE_IOS_DEPLOYMENT_TARGET}) + set_target_properties(exampleplugin PROPERTIES + FRAMEWORK TRUE + MACOSX_FRAMEWORK_IDENTIFIER org.linphone.exampleplugin + MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in" + ) + else() + set(MIN_OS ${CMAKE_OSX_DEPLOYMENT_TARGET}) endif() - install(TARGETS exampleplugin - RUNTIME DESTINATION ${PLUGINS_DIR} - LIBRARY DESTINATION ${PLUGINS_DIR} - ARCHIVE DESTINATION ${PLUGINS_DIR} - FRAMEWORK DESTINATION Frameworks +endif() +if(MSVC) + if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + install(FILES $<TARGET_PDB_FILE:exampleplugin> + DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - ) + ) + endif() + if(NOT IOS) + set_target_properties(exampleplugin PROPERTIES PREFIX "lib") + endif() endif() + +install(TARGETS exampleplugin + RUNTIME DESTINATION ${PLUGINS_DIR} + LIBRARY DESTINATION ${PLUGINS_DIR} + ARCHIVE DESTINATION ${PLUGINS_DIR} + FRAMEWORK DESTINATION Frameworks + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +) diff --git a/plugins/example/Info.plist.in b/plugins/example/Info.plist.in new file mode 100644 index 0000000000..7bd2d43774 --- /dev/null +++ b/plugins/example/Info.plist.in @@ -0,0 +1,45 @@ + +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>${MACOSX_FRAMEWORK_NAME}</string> + <key>CFBundleGetInfoString</key> + <string>${MACOSX_BUNDLE_INFO_STRING}</string> + <key>CFBundleIconFile</key> + <string>${MACOSX_BUNDLE_ICON_FILE}</string> + <key>CFBundleIdentifier</key> + <string>${MACOSX_FRAMEWORK_IDENTIFIER}</string> + <key>LSMinimumSystemVersion</key> + <string>${MIN_OS}</string> + <key>MinimumOSVersion</key> + <string>${MIN_OS}</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleLongVersionString</key> + <string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string> + <key>CFBundleName</key> + <string>${MACOSX_BUNDLE_BUNDLE_NAME}</string> + <key>CFBundlePackageType</key> + <string>FMWK</string> + <key>CFBundleShortVersionString</key> + <string>${LINPHONE_VERSION}</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>${LINPHONE_VERSION}</string> + <key>CSResourcesFileMapped</key> + <true/> + <key>NSHumanReadableCopyright</key> + <string>${MACOSX_BUNDLE_COPYRIGHT}</string> + <key>NSPrincipalClass</key> + <string>NSApplication</string> + <key>NSHighResolutionCapable</key> + <string>True</string> + <key>NSCameraUsageDescription</key> + <string>Allow camera for video sessions</string> +</dict> +</plist> diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5e6d0f2f44..18ca8bed38 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,6 +29,7 @@ set(LINK_LIBS set(PUBLIC_LINK_LIBS ortp mediastreamer2 + belle-sip ) #APPLE_LIBS is mandatory for apple compilation @@ -89,7 +90,7 @@ if (ENABLE_DB_STORAGE) endif() if(SQLITE3_FOUND) list(APPEND INTERFACE_LIBS sqlite3) - list(APPEND LINK_LIBS ${SQLITE3_LIBRARIES}) + list(APPEND PUBLIC_LINK_LIBS ${SQLITE3_LIBRARIES}) endif() if(ICONV_FOUND) list(APPEND INTERFACE_LIBS iconv) -- GitLab