Mac fixes:

-Application/Executable names for Mac.
-Codesigning on the correct bundle.
-Configure Ino.plist before setting bundle properties in cmake.

Fix crash on reading empty address on MWI.
This commit is contained in:
Julien Wadel 2025-01-03 04:51:41 -05:00
parent 0648c3bb61
commit d425a3dfe8
7 changed files with 21 additions and 17 deletions

View file

@ -72,15 +72,18 @@ endif()
set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}")
set(LINPHONEAPP_APPLICATION_NAME "Linphone6" CACHE STRING "Application name" )
set(LINPHONEAPP_EXECUTABLE_NAME "linphone6" CACHE STRING "Executable name" )
if( APPLE )
set(LINPHONEAPP_MACOS_ARCHS "arm64" CACHE STRING "MacOS architectures to build: comma-separated list of values in [arm64, x86_64]")
set(LINPHONESDK_BUILD_TYPE "Default")#Using Mac will remove all SDK targets.
set(ENABLE_FAT_BINARY "ON") # Disable XCFrameworks as it is not supported.
set(CMAKE_INSTALL_BINDIR "${APPLICATION_NAME}.app/Contents/MacOS")
set(CMAKE_INSTALL_LIBDIR "${APPLICATION_NAME}.app/Contents/Frameworks")
set(CMAKE_INSTALL_INCLUDEDIR "${APPLICATION_NAME}.app/Contents/Resources/include")
set(CMAKE_INSTALL_DATAROOTDIR "${APPLICATION_NAME}.app/Contents/Resources/share")
set(CMAKE_INSTALL_BINDIR "${LINPHONEAPP_APPLICATION_NAME}.app/Contents/MacOS")
set(CMAKE_INSTALL_LIBDIR "${LINPHONEAPP_APPLICATION_NAME}.app/Contents/Frameworks")
set(CMAKE_INSTALL_INCLUDEDIR "${LINPHONEAPP_APPLICATION_NAME}.app/Contents/Resources/include")
set(CMAKE_INSTALL_DATAROOTDIR "${LINPHONEAPP_APPLICATION_NAME}.app/Contents/Resources/share")
if( NOT CMAKE_OSX_DEPLOYMENT_TARGET)
#set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15")#Qt: 'path' is unavailable: introduced in macOS 10.15
@ -144,9 +147,6 @@ function(add_cache _OPTION_LIST OPTION DESC VALUE)
set(${${_OPTION_LIST}} ${_OPTION_LIST} PARENT_SCOPE)
endfunction()
set(LINPHONEAPP_APPLICATION_NAME "Linphone6" CACHE STRING "Application name" )
set(LINPHONEAPP_EXECUTABLE_NAME "linphone6" CACHE STRING "Executable name" )
add_option(OPTION_LIST ENABLE_APP_LICENSE "Enable the license in packages." ON)
add_option(OPTION_LIST ENABLE_APP_OAUTH2 "Build with OAuth2 support for remote provisioning." OFF) # Experimental.
add_option(OPTION_LIST ENABLE_APP_PACKAGING "Enable packaging" OFF)

View file

@ -160,7 +160,9 @@ qt6_add_resources(Linphone "resources" PREFIX "/" FILES ${_LINPHONEAPP_RC_FILES}
################################################################
# TARGETS LINKS
################################################################
if(APPLE)
configure_file("${CMAKE_SOURCE_DIR}/cmake/install/macos/Info.plist.in" "${CMAKE_BINARY_DIR}/cmake/install/macos/Info.plist" @ONLY)
endif()
set_target_properties(${TARGET_NAME} PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER org.linphone
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}

View file

@ -188,7 +188,8 @@ void AccountModel::setNotificationsAllowed(bool value) {
QString AccountModel::getMwiServerAddress() const {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
return Utils::coreStringToAppString(mMonitor->getParams()->getMwiServerAddress()->asString());
auto mwiAddress = mMonitor->getParams()->getMwiServerAddress();
return mwiAddress ? Utils::coreStringToAppString(mwiAddress->asString()): "";
}
void AccountModel::setMwiServerAddress(QString value) {

View file

@ -26,6 +26,7 @@ Thread::Thread(QObject *parent) : QThread(parent) {
}
void Thread::run() {
qInfo () << "Thread is running";
mThreadId = new QObject();
setlocale(LC_CTYPE, ".UTF8");
int toExit = false;

View file

@ -25,7 +25,7 @@ include("${LINPHONESDK_DIR}/cmake/LinphoneSdkUtils.cmake")
linphone_sdk_convert_comma_separated_list_to_cmake_list("${LINPHONEAPP_MACOS_ARCHS}" _MACOS_ARCHS)
list(GET _MACOS_ARCHS 0 _FIRST_ARCH)
set(MAIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/${LINPHONEAPP_NAME}) #OUTPUT/linphone-app/macos
set(MAIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/${LINPHONEAPP_FOLDER}) #OUTPUT/macos
################################
# Create the desktop directory that will contain the merged content of all architectures
@ -113,7 +113,7 @@ foreach(_FILE IN LISTS ${_BINARIES})
endif()
endif()
endforeach()
execute_process(COMMAND codesign --force --deep --sign - "${MAIN_INSTALL_DIR}/${LINPHONEAPP_EXENAME}.app")#If not code signed, app can crash because of APPLE on "Code Signature Invalid".
execute_process(COMMAND codesign --force --deep --sign - "${MAIN_INSTALL_DIR}/${LINPHONEAPP_APPLICATION_NAME}.app")#If not code signed, app can crash because of APPLE on "Code Signature Invalid".
#[[

View file

@ -34,12 +34,12 @@ linphone_app_convert_comma_separated_list_to_cmake_list("${LINPHONEAPP_MACOS_ARC
#linphone_sdk_convert_comma_separated_list_to_cmake_list("${LINPHONESDK_MACOS_ARCHS}" _MACOS_ARCHS)
set(LINPHONEAPP_NAME ${APPLICATION_NAME})
set(LINPHONEAPP_EXENAME ${EXECUTABLE_NAME})
set(LINPHONEAPP_NAME ${LINPHONEAPP_APPLICATION_NAME})
set(LINPHONEAPP_EXENAME ${LINPHONEAPP_EXECUTABLE_NAME})
set(LINPHONEAPP_PLATFORM "macos")
set(SUB_TARGET app_macos)
string(TOLOWER "${LINPHONEAPP_PLATFORM}" LINPHONEAPP_PLATFORM_LOWER)
set(_MACOS_INSTALL_RELATIVE_DIR "${LINPHONEAPP_NAME}/${LINPHONEAPP_PLATFORM_LOWER}") # Linphone/macos
set(_MACOS_INSTALL_RELATIVE_DIR "${LINPHONEAPP_PLATFORM_LOWER}") # macos
set(_MACOS_INSTALL_DIR "${APPLICATION_OUTPUT_DIR}/${_MACOS_INSTALL_RELATIVE_DIR}") # build/OUTPUT/Linphone/macos
# Use APPLICATION_OUTPUT_DIR. CMAKE_INSTALL_PREFIX can be in Linphone.app/Contents
@ -76,8 +76,9 @@ add_custom_target(gen-apps ALL
"-DLINPHONESDK_DIR=${PROJECT_SOURCE_DIR}/external/linphone-sdk"
"-DLINPHONEAPP_BUILD_DIR=${CMAKE_BINARY_DIR}"
"-DLINPHONEAPP_MACOS_ARCHS=${LINPHONEAPP_MACOS_ARCHS}"
"-DLINPHONEAPP_NAME=${_MACOS_INSTALL_RELATIVE_DIR}"
"-DLINPHONEAPP_EXENAME=${LINPHONEAPP_EXENAME}"
"-DLINPHONEAPP_FOLDER=${_MACOS_INSTALL_RELATIVE_DIR}"
"-DLINPHONEAPP_APPLICATION_NAME=${LINPHONEAPP_APPLICATION_NAME}"
"-DLINPHONEAPP_EXECUTABLE_NAME=${LINPHONEAPP_EXECUTABLE_NAME}"
"-DLINPHONEAPP_PLATFORM=${LINPHONEAPP_PLATFORM_LOWER}"
"-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
"-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}"

View file

@ -62,7 +62,6 @@ set(LINPHONE_QML_DIR "${CMAKE_SOURCE_DIR}/Linphone/view")
set(QT_PATH "${Qt6Core_DIR}/../../..")
if(APPLE)
configure_file("${CMAKE_SOURCE_DIR}/cmake/install/macos/Info.plist.in" "${CMAKE_BINARY_DIR}/cmake/install/macos/Info.plist" @ONLY)
configure_file("${CMAKE_SOURCE_DIR}/cmake/install/macos/entitlements.xml.in" "${CMAKE_BINARY_DIR}/cmake/install/macos/entitlements.xml" @ONLY)
configure_file("${CMAKE_SOURCE_DIR}/cmake/install/macos/linphone.icns" "${CMAKE_BINARY_DIR}/cmake/install/macos/${EXECUTABLE_NAME}.icns" COPYONLY)
set(APP_QT_CONF_PATH "[Paths]\nPlugins = PlugIns\nImports = Resources/qml\nQml2Imports = Resources/qml")