From 3c3473112d1ded6f886e439688fed2fea8de35d2 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Wed, 11 Oct 2023 16:42:56 +0200 Subject: [PATCH] Revert RUNTIME_OUTPUT_DIRECTORY to binary dir because of conflict with CMAKE_PREFIX_PATH. Install rootca file if enabled. Embed assistant files in qrc. Fix mac build to respect target OSX. --- CMakeLists.txt | 5 ++--- Linphone/CMakeLists.txt | 24 +++++++++++++++-------- Linphone/core/path/Paths.cpp | 2 +- Linphone/data/CMakeLists.txt | 6 ++++++ Linphone/model/account/AccountManager.cpp | 7 +++++-- cmake/TasksMacos.cmake | 4 ++-- 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f0c6a60d4..05a87f359 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,7 +44,7 @@ project(linphoneqt) include(GNUInstallDirs) include(CheckCXXCompilerFlag) -#include(linphone-app/application_info.cmake) +include(Linphone/application_info.cmake) set(CMAKE_CXX_STANDARD 17) if(LINPHONEAPP_INSTALL_PREFIX) @@ -66,7 +66,7 @@ if( APPLE ) set(CMAKE_INSTALL_DATAROOTDIR "${APPLICATION_NAME}.app/Contents/Resources/share") if( NOT CMAKE_OSX_DEPLOYMENT_TARGET) - set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version") + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15")#Qt: 'path' is unavailable: introduced in macOS 10.15 endif() if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm64")# TODO: add universal build set(LINPHONESDK_MACOS_ARCHS "x86_64" CACHE STRING "MacOS architectures to build for: comma-separated list of values in [x86_64]") @@ -80,7 +80,6 @@ elseif(WIN32) else() endif() - if(NOT LINPHONE_OUTPUT_DIR)# set this variable only if you don't build the module set(LINPHONE_OUTPUT_DIR "${CMAKE_INSTALL_PREFIX}")# Cannot be different from the current CMAKE_INSTALL_PREFIX endif() diff --git a/Linphone/CMakeLists.txt b/Linphone/CMakeLists.txt index 04e8ee610..6e0cbe123 100644 --- a/Linphone/CMakeLists.txt +++ b/Linphone/CMakeLists.txt @@ -67,6 +67,7 @@ endif() set(_LINPHONEAPP_SOURCES main.cpp) set(_LINPHONEAPP_QML_FILES) +set(_LINPHONEAPP_RC_FILES) add_subdirectory(data) add_subdirectory(tool) @@ -85,6 +86,10 @@ qt6_add_qml_module(Linphone QML_FILES ${_LINPHONEAPP_QML_FILES} ) +qt_add_resources(Linphone + PREFIX "/" + FILES ${_LINPHONEAPP_RC_FILES} +) ################################################################ # TARGETS LINKS ################################################################ @@ -96,10 +101,10 @@ set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUNDLE TRUE WIN32_EXECUTABLE TRUE OUTPUT_NAME "${EXECUTABLE_NAME}" -# Added for Qt to set the correct path on run configurations. - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}" + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR} + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} + ) if(MSVC) set_target_properties(${TARGET_NAME} PROPERTIES PDB_NAME "${EXECUTABLE_NAME}_app") @@ -121,8 +126,11 @@ endforeach() install(TARGETS ${TARGET_NAME} BUNDLE DESTINATION . - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/data/assistant" - DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}" - USE_SOURCE_PERMISSIONS) +if(ENABLE_APP_PACKAGE_ROOTCA) + install(FILES "${LINPHONE_OUTPUT_DIR}/share/linphone/rootca.pem" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}") +endif() diff --git a/Linphone/core/path/Paths.cpp b/Linphone/core/path/Paths.cpp index 3365d296f..f63293097 100644 --- a/Linphone/core/path/Paths.cpp +++ b/Linphone/core/path/Paths.cpp @@ -190,7 +190,7 @@ QString Paths::getAppLocalDirPath() { } QString Paths::getAssistantConfigDirPath() { - return getReadableDirPath(getAppAssistantConfigDirPath()); + return "://data/assistant/"; } QString Paths::getAvatarsDirPath() { diff --git a/Linphone/data/CMakeLists.txt b/Linphone/data/CMakeLists.txt index e69de29bb..1c8b72138 100644 --- a/Linphone/data/CMakeLists.txt +++ b/Linphone/data/CMakeLists.txt @@ -0,0 +1,6 @@ +list(APPEND _LINPHONEAPP_RC_FILES data/assistant/use-app-sip-account.rc + data/assistant/create-app-sip-account.rc + data/assistant/use-other-sip-account.rc +) + +set(_LINPHONEAPP_RC_FILES ${_LINPHONEAPP_RC_FILES} PARENT_SCOPE) diff --git a/Linphone/model/account/AccountManager.cpp b/Linphone/model/account/AccountManager.cpp index 8a56d1c73..448a4714b 100644 --- a/Linphone/model/account/AccountManager.cpp +++ b/Linphone/model/account/AccountManager.cpp @@ -21,6 +21,7 @@ #include "AccountManager.hpp" #include +#include #include "core/path/Paths.hpp" #include "model/core/CoreModel.hpp" @@ -31,9 +32,11 @@ AccountManager::AccountManager(QObject *parent) : QObject(parent) { std::shared_ptr AccountManager::createAccount(const QString &assistantFile) { auto core = CoreModel::getInstance()->getCore(); - QString assistantPath = Paths::getAssistantConfigDirPath() + assistantFile; + QString assistantPath = "://data/assistant/" + assistantFile; qInfo() << QStringLiteral("[AccountManager] Set config on assistant: `%1`.").arg(assistantPath); - core->getConfig()->loadFromXmlFile(Utils::appStringToCoreString(assistantPath)); + QFile resource(assistantPath); + auto file = QTemporaryFile::createNativeFile(resource); + core->getConfig()->loadFromXmlFile(Utils::appStringToCoreString(file->fileName())); return core->createAccount(core->createAccountParams()); } diff --git a/cmake/TasksMacos.cmake b/cmake/TasksMacos.cmake index ef967aedb..00b7d75f5 100644 --- a/cmake/TasksMacos.cmake +++ b/cmake/TasksMacos.cmake @@ -40,7 +40,7 @@ set(_MACOS_INSTALL_DIR "${APPLICATION_OUTPUT_DIR}/${_MACOS_INSTALL_RELATIVE_DIR} #linphone_sdk_get_inherited_cmake_args(_CMAKE_CONFIGURE_ARGS _CMAKE_BUILD_ARGS) #linphone_sdk_get_enable_cmake_args(_MACOS_CMAKE_ARGS) - +set(_MACOS_CMAKE_ARGS -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}) set(_MACOS_TARGETS) foreach(_MACOS_ARCH IN LISTS _MACOS_ARCHS) set(_TARGET_NAME ${SUB_TARGET}-${_MACOS_ARCH}) # app_macos-x86_64 @@ -48,7 +48,7 @@ foreach(_MACOS_ARCH IN LISTS _MACOS_ARCHS) set(_MACOS_ARCH_INSTALL_DIR "${_MACOS_INSTALL_DIR}-${_MACOS_ARCH}") # build/OUTPUT/Linphone/macos-x86_64 add_custom_target(${_TARGET_NAME} ALL - COMMAND ${CMAKE_COMMAND} -B ${_MACOS_ARCH_BINARY_DIR} -DMONO_ARCH=${_MACOS_ARCH} ${USER_ARGS} ${OPTION_LIST} ${_MACOS_CMAKE_ARGS} -DLINPHONEAPP_INSTALL_PREFIX=${_MACOS_ARCH_INSTALL_DIR} -DCMAKE_TOOLCHAIN_FILE=${PROJECT_SOURCE_DIR}/cmake/toolchains/toolchain-mac-x86_64.cmake -DLINPHONEAPP_BUILD_TYPE="Normal" + COMMAND ${CMAKE_COMMAND} -B ${_MACOS_ARCH_BINARY_DIR} -DMONO_ARCH=${_MACOS_ARCH} ${USER_ARGS} ${OPTION_LIST} ${_MACOS_CMAKE_ARGS} -DLINPHONEAPP_INSTALL_PREFIX=${_MACOS_ARCH_INSTALL_DIR} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} -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} COMMENT "Building Linphone APP for MacOS ${_MACOS_ARCH}"