From b463180d28945a939f34133585996696a7f2ff70 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Fri, 13 Oct 2023 16:19:36 +0200 Subject: [PATCH] Feature : AppImage generation. Centralize install process into cmake folder. Prepare macos stuff for dmg and code signing process. --- .../job-linux-desktop-ubuntu-2004.yml | 4 + CMakeLists.txt | 2 +- Linphone/CMakeLists.txt | 14 -- Linphone/data/icon.ico | Bin 0 -> 343932 bytes Linphone/data/icon/genicons.sh | 8 +- Linphone/data/icon/genicons_1.0.sh | 8 +- Linphone/data/icon/genicons_1.1.sh | 8 +- cmake/install/create_appimage.sh | 130 ++++++++++++++++++ cmake/install/install.cmake | 98 +++++++++++++ cmake/install/linux/linphone.desktop.cmake | 11 ++ cmake/install/macos/Info.plist.in | 87 ++++++++++++ cmake/install/macos/background_dmg.jpg | Bin 0 -> 19654 bytes cmake/install/macos/entitlements.xml.in | 20 +++ cmake/install/macos/linphone.icns | Bin 0 -> 35564 bytes cmake/install/macos/linphone_dmg.scpt.in | 42 ++++++ cmake/install/packaging.cmake.in | 91 ++++++++++++ cmake/install/sign_package.bat | 10 ++ cmake/install/sign_package.sh | 8 ++ 18 files changed, 514 insertions(+), 27 deletions(-) create mode 100644 Linphone/data/icon.ico create mode 100755 cmake/install/create_appimage.sh create mode 100644 cmake/install/install.cmake create mode 100644 cmake/install/linux/linphone.desktop.cmake create mode 100644 cmake/install/macos/Info.plist.in create mode 100644 cmake/install/macos/background_dmg.jpg create mode 100644 cmake/install/macos/entitlements.xml.in create mode 100644 cmake/install/macos/linphone.icns create mode 100755 cmake/install/macos/linphone_dmg.scpt.in create mode 100644 cmake/install/packaging.cmake.in create mode 100644 cmake/install/sign_package.bat create mode 100644 cmake/install/sign_package.sh diff --git a/.gitlab-ci-files/job-linux-desktop-ubuntu-2004.yml b/.gitlab-ci-files/job-linux-desktop-ubuntu-2004.yml index 5eac89fbd..5c329ed89 100644 --- a/.gitlab-ci-files/job-linux-desktop-ubuntu-2004.yml +++ b/.gitlab-ci-files/job-linux-desktop-ubuntu-2004.yml @@ -81,6 +81,8 @@ job-ubuntu2004-makefile-gcc: - echo $CMAKE_GENERATOR - echo $DEFAULT_LINUX_CMAKE_OPTIONS - echo $CMAKE_SANITIZER_OPTIONS + - eval "$(qtchooser -qt=$QT_LINUX_VER -print-env)" + - export PATH=${QTTOOLDIR}:$PATH - cd build - cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_VERBOSE_MAKEFILE=ON -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_BUILD_TYPE=$CI_BUILD_TYPE $DEFAULT_LINUX_CMAKE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $CMAKE_SANITIZER_OPTIONS - cmake --build . --target install --config $CI_BUILD_TYPE $LBC_NODEBUG_OPTIONS @@ -123,6 +125,8 @@ job-ubuntu2004-makefile-gcc-package: - echo $CMAKE_GENERATOR - echo $DEFAULT_LINUX_CMAKE_OPTIONS - echo $CMAKE_SANITIZER_OPTIONS + - eval "$(qtchooser -qt=$QT_LINUX_VER -print-env)" + - export PATH=${QTTOOLDIR}:$PATH - cd build - cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_VERBOSE_MAKEFILE=ON -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_BUILD_TYPE=$CI_BUILD_TYPE $DEFAULT_LINUX_CMAKE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $CMAKE_SANITIZER_OPTIONS - cmake --build . --target install --config $CI_BUILD_TYPE $LBC_NODEBUG_OPTIONS diff --git a/CMakeLists.txt b/CMakeLists.txt index 05a87f359..af6683ba8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -246,7 +246,7 @@ if(NOT APPLE OR MONO_ARCH) #install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory \"${CMAKE_INSTALL_PREFIX}/share/\" \"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/\")") #install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory \"${CMAKE_INSTALL_PREFIX}/mkspecs/\" \"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/\")") endif() - + include (cmake/install/install.cmake) else() include(cmake/TasksMacos.cmake) endif() diff --git a/Linphone/CMakeLists.txt b/Linphone/CMakeLists.txt index 6e0cbe123..6029f257c 100644 --- a/Linphone/CMakeLists.txt +++ b/Linphone/CMakeLists.txt @@ -119,18 +119,4 @@ foreach(T ${QT_PACKAGES}) target_link_libraries(${TARGET_NAME} PRIVATE Qt6::${T}) endforeach() -################################################################ -# INSTALL -################################################################ - -install(TARGETS ${TARGET_NAME} - BUNDLE DESTINATION . - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} -) - -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/data/icon.ico b/Linphone/data/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9be645bdd77f7d54781a0aa0da464cf5d228ec28 GIT binary patch literal 343932 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≪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%0Ao(RfX%>k@IzARqUs)i3>Fec#~B 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

3a^UsSH{HYn+fyF{{M_o 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 MgM~L*gd_d_5vO6v6#xJL literal 0 HcmV?d00001 diff --git a/Linphone/data/icon/genicons.sh b/Linphone/data/icon/genicons.sh index d1bbce381..38b59437b 100755 --- a/Linphone/data/icon/genicons.sh +++ b/Linphone/data/icon/genicons.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ## -## Copyright (c) 2010-2020 Belledonne Communications SARL. +## Copyright (c) 2010-2024 Belledonne Communications SARL. ## ## This file is part of linphone-desktop ## (see https://www.linphone.org). @@ -22,7 +22,7 @@ for i in 16 22 24 32 64 128 256 do mkdir -p hicolor/${i}x${i}/apps - inkscape -z -e hicolor/${i}x${i}/apps/icon.png -w $i -h $i ../images/linphone_logo.svg + inkscape -z -e hicolor/${i}x${i}/apps/icon.png -w $i -h $i ../image/logo.svg done -convert -density 256x256 -background transparent ../images/linphone_logo.svg -define icon:auto-resize -colors 256 ../icon.ico -png2icns ../../cmake_builder/linphone_package/macos/linphone.icns hicolor/16x16/apps/icon.png hicolor/32x32/apps/icon.png hicolor/128x128/apps/icon.png hicolor/256x256/apps/icon.png +convert -density 256x256 -background transparent ../image/logo.svg -define icon:auto-resize -colors 256 ../icon.ico +png2icns ../../../cmake/install/macos/linphone.icns hicolor/16x16/apps/icon.png hicolor/32x32/apps/icon.png hicolor/128x128/apps/icon.png hicolor/256x256/apps/icon.png diff --git a/Linphone/data/icon/genicons_1.0.sh b/Linphone/data/icon/genicons_1.0.sh index af8b76a00..b142a0d36 100755 --- a/Linphone/data/icon/genicons_1.0.sh +++ b/Linphone/data/icon/genicons_1.0.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ## -## Copyright (c) 2010-2020 Belledonne Communications SARL. +## Copyright (c) 2010-2024 Belledonne Communications SARL. ## ## This file is part of linphone-desktop ## (see https://www.linphone.org). @@ -22,7 +22,7 @@ for i in 16 22 24 32 64 128 256 do mkdir -p hicolor/${i}x${i}/apps - inkscape -z --export-type=png --export-file=hicolor/${i}x${i}/apps/icon.png -w $i -h $i ../images/linphone_logo.svg + inkscape -z --export-type=png --export-file=hicolor/${i}x${i}/apps/icon.png -w $i -h $i ../image/logo.svg done -convert -density 256x256 -background transparent ../images/linphone_logo.svg -define icon:auto-resize -colors 256 ../icon.ico -png2icns ../../cmake_builder/linphone_package/macos/linphone.icns hicolor/16x16/apps/icon.png hicolor/32x32/apps/icon.png hicolor/128x128/apps/icon.png hicolor/256x256/apps/icon.png +convert -density 256x256 -background transparent ../image/logo.svg -define icon:auto-resize -colors 256 ../icon.ico +png2icns ../../../cmake/install/macos/linphone.icns hicolor/16x16/apps/icon.png hicolor/32x32/apps/icon.png hicolor/128x128/apps/icon.png hicolor/256x256/apps/icon.png diff --git a/Linphone/data/icon/genicons_1.1.sh b/Linphone/data/icon/genicons_1.1.sh index b23d528b4..cd24fc211 100755 --- a/Linphone/data/icon/genicons_1.1.sh +++ b/Linphone/data/icon/genicons_1.1.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ## -## Copyright (c) 2010-2020 Belledonne Communications SARL. +## Copyright (c) 2010-2024 Belledonne Communications SARL. ## ## This file is part of linphone-desktop ## (see https://www.linphone.org). @@ -22,7 +22,7 @@ for i in 16 22 24 32 64 128 256 do mkdir -p hicolor/${i}x${i}/apps - inkscape -z --export-type=png --export-filename=hicolor/${i}x${i}/apps/icon.png -w $i -h $i ../images/linphone_logo.svg + inkscape -z --export-type=png --export-filename=hicolor/${i}x${i}/apps/icon.png -w $i -h $i ../image/logo.svg done -convert -density 256x256 -background transparent ../images/linphone_logo.svg -define icon:auto-resize -colors 256 ../icon.ico -png2icns ../../cmake_builder/linphone_package/macos/linphone.icns hicolor/16x16/apps/icon.png hicolor/32x32/apps/icon.png hicolor/128x128/apps/icon.png hicolor/256x256/apps/icon.png +convert -density 256x256 -background transparent ../image/logo.svg -define icon:auto-resize -colors 256 ../icon.ico +png2icns ../../../cmake/install/macos/linphone.icns hicolor/16x16/apps/icon.png hicolor/32x32/apps/icon.png hicolor/128x128/apps/icon.png hicolor/256x256/apps/icon.png diff --git a/cmake/install/create_appimage.sh b/cmake/install/create_appimage.sh new file mode 100755 index 000000000..479d5fab7 --- /dev/null +++ b/cmake/install/create_appimage.sh @@ -0,0 +1,130 @@ +#!/bin/bash +## +## Copyright (c) 2010-2024 Belledonne Communications SARL. +## +## This file is part of linphone-desktop +## (see https://www.linphone.org). +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## + +# Arguments : +# $1 = Executable Name +# $2 = Output Filename +# $3 = Qt root path (eg. "~/Qt/5.15.2/gcc_64") +# $4 = Key of the code sign (optional but mendatory if code signing) + +APP_NAME="$1" +QT_PATH="$3" + +BIN_SOURCE_DIR="OUTPUT/" + +WORK_DIR="WORK/Packages/AppImageDir" + +# Goal : avoid fuse on CI. --appimage-extract-and-run is not enough because of not propagate to plugins. +export APPIMAGE_EXTRACT_AND_RUN=1 + +rm -rf ${WORK_DIR}/AppDir +mkdir -p "${WORK_DIR}/AppDir/usr/" + +copyFolder() +{ + mkdir -p "${WORK_DIR}/AppDir/usr/$1" + cp -rf "${BIN_SOURCE_DIR}/$1"/* "${WORK_DIR}/AppDir/usr/$1" +} + + +#Copy all files from the output project +#cp -rf "${BIN_SOURCE_DIR}"/* "${WORK_DIR}/AppDir/usr/" +copyFolder bin +#cp -rf "${BIN_SOURCE_DIR}/bin"/* "${WORK_DIR}/AppDir/usr/bin" + +# Copy share +copyFolder share/applications +copyFolder share/belr +copyFolder share/icons +copyFolder share/images +copyFolder share/linphone +copyFolder share/sounds + +#remove Packages folder : it is not part of the project +#rm -rf "${WORK_DIR}/AppDir/usr/Packages" +#remove libraries : there are automatically found by linuxdeploy +#rm -rf "${WORK_DIR}/AppDir/usr/lib" +#rm -rf "${WORK_DIR}/AppDir/usr/lib64" +#Copy soci sqlite3 backend +mkdir -p "${WORK_DIR}/AppDir/usr/lib" +cp -f "${BIN_SOURCE_DIR}/lib"/libsoci_sqlite3* "${WORK_DIR}/AppDir/usr/lib/" +cp -f "${BIN_SOURCE_DIR}/lib"/libapp-plugin* "${WORK_DIR}/AppDir/usr/lib/" +cp -f "${BIN_SOURCE_DIR}/lib64"/libsoci_sqlite3* "${WORK_DIR}/AppDir/usr/lib/" +cp -f "${BIN_SOURCE_DIR}/lib64"/libapp-plugin* "${WORK_DIR}/AppDir/usr/lib/" + +cp -f "${BIN_SOURCE_DIR}/lib"/libEQt* "${WORK_DIR}/AppDir/usr/lib/" +cp -f "${BIN_SOURCE_DIR}/lib64"/libEQt* "${WORK_DIR}/AppDir/usr/lib/" + + +if [ -d "${BIN_SOURCE_DIR}/lib64/mediastreamer" ]; then + mkdir -p "${WORK_DIR}/AppDir/usr/lib64/" + cp -rf "${BIN_SOURCE_DIR}"/lib64/mediastreamer "${WORK_DIR}/AppDir/usr/lib64/" +fi + +if [ -d "${BIN_SOURCE_DIR}/lib/mediastreamer" ]; then + mkdir -p "${WORK_DIR}/AppDir/usr/lib/" + cp -rf "${BIN_SOURCE_DIR}"/lib/mediastreamer "${WORK_DIR}/AppDir/usr/lib/" +fi + +if [ -f "${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage" ]; then + echo "linuxdeploy-x86_64.AppImage exists" +else + wget -P "${WORK_DIR}/AppBin" https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage + #wget -P "${WORK_DIR}/AppBin" https://artifacts.assassinate-you.net/linuxdeploy/travis-456/linuxdeploy-x86_64.AppImage + chmod +x "${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage" +fi +if [ -f "${WORK_DIR}/AppBin/linuxdeploy-plugin-qt-x86_64.AppImage" ]; then + echo "linuxdeploy-plugin-qt-x86_64.AppImage exists" +else + wget -P "${WORK_DIR}/AppBin" https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage + chmod +x "${WORK_DIR}/AppBin/linuxdeploy-plugin-qt-x86_64.AppImage" +fi + +########################################################################################### +export QMAKE=qmake +export QML_SOURCES_PATHS=${QML_SOURCES_PATHS}:${WORK_DIR}/.. +export LD_LIBRARY_PATH=${QT_PATH}/lib:${BIN_SOURCE_DIR}/lib:${BIN_SOURCE_DIR}/lib64 +#export EXTRA_QT_PLUGINS=webenginecore;webview;webengine + +echo "QML_SOURCES_PATHS=${QML_SOURCES_PATHS}" +echo "QML_MODULES_PATHS=${QML_MODULES_PATHS}" +echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" + +echo "-- Generating AppDir for AppImage" +if [ -z "$4" ]; then + echo "./${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage --appimage-extract-and-run --appdir=${WORK_DIR}/AppDir -e ${WORK_DIR}/AppDir/usr/bin/${APP_NAME} --output appimage --desktop-file=${WORK_DIR}/AppDir/usr/share/applications/${APP_NAME}.desktop -i ${WORK_DIR}/AppDir/usr/share/icons/hicolor/scalable/apps/${APP_NAME}.svg --plugin qt" + ./${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage --appimage-extract-and-run --appdir=${WORK_DIR}/AppDir -e ${WORK_DIR}/AppDir/usr/bin/${APP_NAME} --output appimage --desktop-file=${WORK_DIR}/AppDir/usr/share/applications/${APP_NAME}.desktop -i ${WORK_DIR}/AppDir/usr/share/icons/hicolor/scalable/apps/${APP_NAME}.svg --plugin qt +else + if [ -f "${WORK_DIR}/AppBin/appimagetool-x86_64.AppImage" ]; then + echo "appimagetool-x86_64.AppImage exists" + else + wget -P "${WORK_DIR}/AppBin" https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage + chmod +x "${WORK_DIR}/AppBin/appimagetool-x86_64.AppImage" + fi + ./${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage --appimage-extract-and-run --appdir=${WORK_DIR}/AppDir -e ${WORK_DIR}/AppDir/usr/bin/${APP_NAME} --desktop-file=${WORK_DIR}/AppDir/usr/share/applications/${APP_NAME}.desktop -i ${WORK_DIR}/AppDir/usr/share/icons/hicolor/scalable/apps/${APP_NAME}.svg --plugin qt + #./linuxdeploy-x86_64.AppImage --appdir=${WORK_DIR}/ -e ${WORK_DIR}/app/bin/${APP_NAME} --output appimage --desktop-file=${WORK_DIR}/app/share/applications/${APP_NAME}.desktop -i ${WORK_DIR}/app/share/icons/hicolor/scalable/apps/${APP_NAME}.svg + echo "-- Code Signing of AppImage" + # APPIMAGETOOL_SIGN_PASSPHRASE has to the parent environment (not here). Do not use export. + ./${WORK_DIR}/AppBin/appimagetool-x86_64.AppImage --appimage-extract-and-run ${WORK_DIR}/AppDir --sign --sign-key $4 +fi + +#mkdir -p "${BIN_SOURCE_DIR}/Packages" +#mv *.AppImage "${BIN_SOURCE_DIR}/Packages/$2.AppImage" diff --git a/cmake/install/install.cmake b/cmake/install/install.cmake new file mode 100644 index 000000000..ac4ba3d6d --- /dev/null +++ b/cmake/install/install.cmake @@ -0,0 +1,98 @@ +################################################################################ +# +# Copyright (c) 2017-2024 Belledonne Communications SARL. +# +# This file is part of linphone-desktop +# (see https://www.linphone.org). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +################################################################################ + +cmake_minimum_required(VERSION 3.1) + +set(TARGET_NAME Linphone) + +if (GIT_EXECUTABLE AND NOT(LINPHONEAPP_VERSION)) + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --always + OUTPUT_VARIABLE LINPHONEAPP_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../.." + ) +elseif (NOT(LINPHONEAPP_VERSION)) + set(LINPHONEAPP_VERSION "0.0.0") +endif () + +set(LINPHONE_VERSION ${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}.${LINPHONE_MICRO_VERSION}) +set(PACKAGE_VERSION "${LINPHONEAPP_VERSION}") + +install(TARGETS ${TARGET_NAME} + BUNDLE DESTINATION . + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) + +if(ENABLE_APP_PACKAGE_ROOTCA) + install(FILES "${LINPHONE_OUTPUT_DIR}/share/linphone/rootca.pem" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}") +endif() + +# ============================================================================== +# CPack. +# ============================================================================== +set(LINPHONE_QML_DIR "${CMAKE_SOURCE_DIR}/Linphone/view") +set(QT_PATH "${Qt6Core_DIR}/../../..") + +if(${ENABLE_APP_PACKAGING}) + set(CPACK_BINARY_STGZ OFF) + set(CPACK_BINARY_TGZ OFF) + set(CPACK_BINARY_TZ OFF) + set(CPACK_PACKAGE_NAME "${APPLICATION_NAME}") + set(CPACK_PACKAGE_VENDOR "${APPLICATION_VENDOR}") + set(CPACK_PACKAGE_VERSION_MAJOR ${LINPHONE_MAJOR_VERSION}) + set(CPACK_PACKAGE_VERSION_MINOR ${LINPHONE_MINOR_VERSION}) + if (LINPHONE_MICRO_VERSION) + set(CPACK_PACKAGE_VERSION_PATCH ${LINPHONE_MICRO_VERSION}) + endif () + set(CPACK_PACKAGE_EXECUTABLES "${EXECUTABLE_NAME};${APPLICATION_NAME}") + + if(ENABLE_APP_LICENSE) + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt") + else() + unset(CPACK_RESOURCE_FILE_LICENSE) + endif() + set(CPACK_RESOURCE_FILE_LICENSE_PROVIDED ${ENABLE_APP_LICENSE}) + set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") + set(PERFORM_SIGNING 0) +############################################## +# LINUX +############################################## + set(DO_APPIMAGE YES) + set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}") + set(PACKAGE_EXT "AppImage") + configure_file("${CMAKE_SOURCE_DIR}/cmake/install/linux/linphone.desktop.cmake" "${CMAKE_BINARY_DIR}/cmake/install/linux/${EXECUTABLE_NAME}.desktop" @ONLY) + install(FILES "${CMAKE_BINARY_DIR}/cmake/install/linux/${EXECUTABLE_NAME}.desktop" DESTINATION "${CMAKE_INSTALL_DATADIR}/applications" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + install(FILES "${CMAKE_SOURCE_DIR}/Linphone/data/image/logo.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps/" RENAME "${EXECUTABLE_NAME}.svg") + set(ICON_DIRS 16x16 22x22 24x24 32x32 64x64 128x128 256x256) + foreach (DIR ${ICON_DIRS}) + install(FILES "${CMAKE_SOURCE_DIR}/Linphone/data/icon/hicolor/${DIR}/apps/icon.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${DIR}/apps/" RENAME "${EXECUTABLE_NAME}.png") + endforeach () + message(STATUS "Set AppImage CPack generator in OUTPUT/Packages") +############################################## + configure_file("${CMAKE_SOURCE_DIR}/cmake/install/packaging.cmake.in" "${CMAKE_BINARY_DIR}/cmake/install/packaging.cmake" @ONLY) + install(SCRIPT "${CMAKE_BINARY_DIR}/cmake/install/packaging.cmake") + include(CPack) +endif() + diff --git a/cmake/install/linux/linphone.desktop.cmake b/cmake/install/linux/linphone.desktop.cmake new file mode 100644 index 000000000..2889e7b26 --- /dev/null +++ b/cmake/install/linux/linphone.desktop.cmake @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=@APPLICATION_NAME@ +GenericName=SIP Phone +Comment=@APPLICATION_DESCRIPTION@ +Type=Application +Exec=@EXECUTABLE_NAME@ %u +Icon=@EXECUTABLE_NAME@ +Terminal=false +Categories=Network;Telephony; +MimeType=x-scheme-handler/sip-@EXECUTABLE_NAME@;x-scheme-handler/sip;x-scheme-handler/sips-@EXECUTABLE_NAME@;x-scheme-handler/sips;x-scheme-handler/tel;x-scheme-handler/callto;x-scheme-handler/@EXECUTABLE_NAME@-config; +X-PulseAudio-Properties=media.role=phone diff --git a/cmake/install/macos/Info.plist.in b/cmake/install/macos/Info.plist.in new file mode 100644 index 000000000..e36a72d02 --- /dev/null +++ b/cmake/install/macos/Info.plist.in @@ -0,0 +1,87 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleAllowMixedLocalizations + + CFBundleName + @APPLICATION_NAME@ + CFBundleDisplayName + @APPLICATION_NAME@ + CFBundleExecutable + @EXECUTABLE_NAME@ + CFBundleGetInfoString + @PACKAGE_VERSION@, (C) @COPYRIGHT_RANGE_DATE@ @APPLICATION_NAME@ @APPLICATION_URL@ + CFBundleIconFile + @EXECUTABLE_NAME@.icns + CFBundleIdentifier + @APPLICATION_ID@ + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleShortVersionString + @PACKAGE_VERSION@ + CFBundleSignature + ???? + CFBundleVersion + @PACKAGE_VERSION@ + NSHumanReadableCopyright + Copyright @COPYRIGHT_RANGE_DATE@ @APPLICATION_VENDOR@ + LSMinimumSystemVersion + @CMAKE_OSX_DEPLOYMENT_TARGET@ + NSAppSleepDisabled + YES + CFBundleURLTypes + + + CFBundleURLName + @APPLICATION_ID@ + CFBundleURLSchemes + + sip + sip-@EXECUTABLE_NAME@ + sips + sips-@EXECUTABLE_NAME@ + tel + callto + @EXECUTABLE_NAME@-config + + + + NSPrincipalClass + NSApplication + NSHighResolutionCapable + True + NSCameraUsageDescription + Streaming Video between devices + NSMicrophoneUsageDescription + Streaming Audio between devices + NSPhotoLibraryUsageDescription + Store attachment and allow camera record when selected + NSPhotoLibraryAddUsageDescription + Store attachment and allow camera record when selected + NSDesktopFolderUsageDescription + Storing configuration files + NSDocumentsFolderUsageDescription + Can use Documents folder to put logs + NSDownloadsFolderUsageDescription + Getting files from Download folder for sending attachment + NSAppleEventsUsageDescription + Used for sending notifications and working with Appnap + NSBluetoothPeripheralUsageDescription + Use for wireless headsets + kTCCServiceMediaLibrary + Used media library as attachement or for the ringer + com.apple.security.device.camera + + com.apple.security.device.microphone + + com.apple.security.device.audio-input + + com.apple.security.personal-information.photos-library + + + diff --git a/cmake/install/macos/background_dmg.jpg b/cmake/install/macos/background_dmg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8fe42444e3516cc663cbd45ce987e57326305c1f GIT binary patch literal 19654 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 literal 0 HcmV?d00001 diff --git a/cmake/install/macos/entitlements.xml.in b/cmake/install/macos/entitlements.xml.in new file mode 100644 index 000000000..2ef7410cd --- /dev/null +++ b/cmake/install/macos/entitlements.xml.in @@ -0,0 +1,20 @@ + + + + + com.apple.security.assets.music.read-write + + com.apple.security.device.microphone + + com.apple.security.device.camera + + com.apple.security.device.audio-input + + com.apple.security.network.client + + com.apple.security.personal-information.photos-library + + com.apple.security.files.user-selected.read-write + + + diff --git a/cmake/install/macos/linphone.icns b/cmake/install/macos/linphone.icns new file mode 100644 index 0000000000000000000000000000000000000000..d35186a5e9c7e1c45098ca1a4d5b9504dea402b1 GIT binary patch literal 35564 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%0A-bKjfnziwlNbsrgEVVW2t?_edr65bsPcC z=-Em*C(4+;H$Pf^+b;^q^N_)DU$X(d(D>EO~vDpZTSREC3Y!G8u$Q!B2V Yx+`kP>yT$)qhQ^7j{{2|CCq>S*@{oN3;+NC literal 0 HcmV?d00001 diff --git a/cmake/install/macos/linphone_dmg.scpt.in b/cmake/install/macos/linphone_dmg.scpt.in new file mode 100755 index 000000000..866c6fcb0 --- /dev/null +++ b/cmake/install/macos/linphone_dmg.scpt.in @@ -0,0 +1,42 @@ +on run argv + set image_name to item 1 of argv + + tell application "Finder" + tell disk image_name + + -- open the image the first time and save a DS_Store with just + -- background and icon setup + open + set current view of container window to icon view + set theViewOptions to the icon view options of container window + set background picture of theViewOptions to file ".background:background.jpg" + set arrangement of theViewOptions to not arranged + set icon size of theViewOptions to 100 + delay 1 + close + + -- next setup the position of the app and Applications symlink + -- plus hide all the window decoration + open + update without registering applications + tell container window + set sidebar width to 0 + set statusbar visible to false + set toolbar visible to false + set the bounds to { 300, 100, 1000, 520 } + set position of item "@APPLICATION_NAME@.app" to { 200, 280 } + set position of item "Applications" to { 500, 280 } + end tell + update without registering applications + delay 1 + close + + -- one last open and close so you can see everything looks correct + open + delay 5 + close + + end tell + delay 1 + end tell +end run diff --git a/cmake/install/packaging.cmake.in b/cmake/install/packaging.cmake.in new file mode 100644 index 000000000..1a8e19fb7 --- /dev/null +++ b/cmake/install/packaging.cmake.in @@ -0,0 +1,91 @@ +############################################################################ +# packaging.cmake +# Copyright (C) 2017-2024 Belledonne Communications, Grenoble France +# +############################################################################ +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +############################################################################ +set(DO_TGZ @CPACK_BINARY_TGZ@) +set(DO_TZ @CPACK_BINARY_TZ@) +set(DO_STGZ @CPACK_BINARY_STGZ@) +set(DO_DRAGNDROP @CPACK_BINARY_DRAGNDROP@) +set(DO_GENERATOR @DO_GENERATOR@) +set(DO_APPIMAGE @DO_APPIMAGE@) + + +if (NOT "${CMAKE_INSTALL_PREFIX}" MATCHES .*/_CPack_Packages/.*) + if(DO_TGZ) + execute_process( COMMAND ${CMAKE_CPACK_COMMAND} -G TGZ RESULT_VARIABLE CPACK_COMMAND_RESULT) + if(CPACK_COMMAND_RESULT) + message(FATAL_ERROR "Failed to create TGZ package!") + endif() + endif() + if(DO_TZ) + execute_process( COMMAND ${CMAKE_CPACK_COMMAND} -G TZ RESULT_VARIABLE CPACK_COMMAND_RESULT) + if(CPACK_COMMAND_RESULT) + message(FATAL_ERROR "Failed to create TZ package!") + endif() + endif() + if(DO_STGZ) + execute_process( COMMAND ${CMAKE_CPACK_COMMAND} -G STGZ RESULT_VARIABLE CPACK_COMMAND_RESULT) + if(CPACK_COMMAND_RESULT) + message(FATAL_ERROR "Failed to create STGZ package!") + endif() + endif() + if(DO_DRAGNDROP) + execute_process( COMMAND ${CMAKE_CPACK_COMMAND} -G DragNDrop RESULT_VARIABLE CPACK_COMMAND_RESULT) + if(CPACK_COMMAND_RESULT) + message(FATAL_ERROR "Failed to create DragAndDrop package!") + endif() + endif() + if(DO_GENERATOR) + execute_process( COMMAND ${CMAKE_CPACK_COMMAND} -G @CPACK_GENERATOR@ -C @CMAKE_BUILD_TYPE@ RESULT_VARIABLE CPACK_COMMAND_RESULT) + if(CPACK_COMMAND_RESULT) + message(FATAL_ERROR "Failed to create @CPACK_GENERATOR@ package!") + endif() + endif() + if(DO_APPIMAGE) + set(ENV{QML_SOURCES_PATHS} "@LINPHONE_QML_DIR@") + set(ENV{QML_MODULES_PATHS} "@LINPHONE_QML_DIR@") + execute_process( COMMAND mkdir -p "WORK/Packages/AppImageDir/" WORKING_DIRECTORY "@CMAKE_INSTALL_PREFIX@/..") + execute_process( COMMAND cp -rf "@LINPHONE_QML_DIR@" "WORK/Packages/AppImageDir/" WORKING_DIRECTORY "@CMAKE_INSTALL_PREFIX@/..") + execute_process( COMMAND "@CMAKE_SOURCE_DIR@/cmake/install/create_appimage.sh" @EXECUTABLE_NAME@ @CPACK_PACKAGE_FILE_NAME@ @QT_PATH@ @LINPHONE_BUILDER_SIGNING_IDENTITY@ RESULT_VARIABLE CPACK_COMMAND_RESULT WORKING_DIRECTORY "@CMAKE_INSTALL_PREFIX@/.." ) + if(CPACK_COMMAND_RESULT) + message(FATAL_ERROR "Failed to create AppImage package with this command : '@CMAKE_CURRENT_SOURCE_DIR@/../../tools/create_appimage.sh @EXECUTABLE_NAME@ @QT_PATH@ @LINPHONEAPP_VERSION@' at @CMAKE_INSTALL_PREFIX@/..\nMaybe the .appimage already exists and is running. Please remove the file before packaging if it is the case.") + endif() + endif() + if (@PERFORM_SIGNING@) + if(@PASSPHRASE_FILE@) + execute_process( + COMMAND "@CMAKE_CURRENT_SOURCE_DIR@/../../tools/sign_package.bat" 1 "@PASSPHRASE_FILE@" "@SIGNTOOL_COMMAND@" "@PFX_FILE@" "@TIMESTAMP_URL@" @CPACK_PACKAGE_FILE_NAME@.@PACKAGE_EXT@ + RESULT_VARIABLE SIGNING_RESULT WORKING_DIRECTORY "@CPACK_PACKAGE_DIRECTORY@" + ) + else() + execute_process( + COMMAND "@CMAKE_CURRENT_SOURCE_DIR@/../../tools/sign_package.bat" 2 "@SIGNTOOL_COMMAND@" "@TIMESTAMP_URL@" @SIGN_HASH@ @CPACK_PACKAGE_FILE_NAME@.@PACKAGE_EXT@ + RESULT_VARIABLE SIGNING_RESULT WORKING_DIRECTORY "@CPACK_PACKAGE_DIRECTORY@" + ) + endif() + if(SIGNING_RESULT) + message(FATAL_ERROR "Failed to sign the package! ${SIGNING_RESULT} ${RESULT_VARIABLE}") + endif() + endif () + execute_process( COMMAND mkdir -p "@CMAKE_INSTALL_PREFIX@/Packages/" WORKING_DIRECTORY "@CMAKE_BINARY_DIR@") + execute_process( COMMAND bash -c "cp -rf @CMAKE_BINARY_DIR@/*.@PACKAGE_EXT@ @CMAKE_INSTALL_PREFIX@/Packages" WORKING_DIRECTORY "@CMAKE_BINARY_DIR@") +endif () + + diff --git a/cmake/install/sign_package.bat b/cmake/install/sign_package.bat new file mode 100644 index 000000000..c1ddbb626 --- /dev/null +++ b/cmake/install/sign_package.bat @@ -0,0 +1,10 @@ +@echo off +if [%1]==[2] goto simple +set /p passphrase=<%2 +%3 sign /f %4 /fd SHA256 /p %passphrase% /t %5 %6 +goto :eof + +:simple +%2 sign /fd SHA256 /t %3 /sha1 %4 %5 + +:eof diff --git a/cmake/install/sign_package.sh b/cmake/install/sign_package.sh new file mode 100644 index 000000000..7f5b1e2aa --- /dev/null +++ b/cmake/install/sign_package.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Arguments : +# $1 = Executable Name +# $2 = Identity +# $3 = Path to recursivly search + +find $3 -name "*" -exec $1 --force --deep --timestamp --options runtime,library -s "$2" {} \; +