diff --git a/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml b/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml index 32983798e..92dfb82c7 100644 --- a/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml +++ b/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml @@ -1,6 +1,20 @@ - +job-archlinux-latest-ninja-clang: + tags: [ "docker-archlinux-latest" ] + image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-archlinux:latest + except: + refs: + - schedules + variables: + CMAKE_GENERATOR: Ninja + CC: clang + CXX: clang++ + extends: .job-linux-desktop + +################################################# +# Nightly +################################################# + job-archlinux-latest-makefile-gcc: - tags: [ "docker-archlinux-latest" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-archlinux:latest only: @@ -14,7 +28,6 @@ job-archlinux-latest-makefile-gcc: job-archlinux-latest-makefile-clang: - tags: [ "docker-archlinux-latest" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-archlinux:latest only: @@ -27,13 +40,7 @@ job-archlinux-latest-makefile-clang: extends: .job-linux-desktop -################################################# -# Ninja -################################################# - - job-archlinux-latest-ninja-gcc: - tags: [ "docker-archlinux-latest" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-archlinux:latest only: @@ -45,9 +52,7 @@ job-archlinux-latest-ninja-gcc: CXX: g++ extends: .job-linux-desktop - job-archlinux-latest-ninja-gcc-novideo: - tags: [ "docker-archlinux-latest" ] only: variables: @@ -56,25 +61,51 @@ job-archlinux-latest-ninja-gcc-novideo: CMAKE_OPTIONS: -DENABLE_VIDEO=NO extends: job-archlinux-latest-ninja-gcc - -job-archlinux-latest-ninja-clang: - +job-archlinux-latest-ninja-clang-novideo: tags: [ "docker-archlinux-latest" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-archlinux:latest - variables: - CMAKE_GENERATOR: Ninja - CC: clang - CXX: clang++ - extends: .job-linux-desktop - - -job-archlinux-latest-ninja-clang-novideo: - only: variables: - $NIGHTLY_MASTER variables: CMAKE_OPTIONS: -DENABLE_VIDEO=NO - extends: job-archlinux-latest-ninja-clang + CMAKE_GENERATOR: Ninja + CC: clang + CXX: clang++ + extends: .job-linux-desktop +################################################# +# Package - Nightly +################################################# + +#job-archlinux-latest-makefile-clang-package: +# stage: package +# tags: [ "docker-archlinux-latest" ] +# only: +# variables: +# - $NIGHTLY_MASTER +# - $DEPLOY_LINUX +# variables: +# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES +# extends: job-archlinux-latest-makefile-clang +# artifacts: +# paths: +# - build/OUTPUT/Packages/Linphone*.AppImage +# expire_in: 1 week +# +################################################# +# Deploy - Nightly +################################################# + +#job-archlinux-latest-makefile-clang-deploy: +# stage: deploy +# tags: [ "docker-archlinux-latest" ] +# dependencies: +# - job-archlinux-latest-makefile-clang-package +# only: +# variables: +# - $NIGHTLY_MASTER +# - $DEPLOY_LINUX +# script: +# - scp build/OUTPUT/Packages/Linphone*.AppImage $DEPLOY_SERVER:$APPIMAGE_UPLOAD_DIRECTORY/ diff --git a/.gitlab-ci-files/job-linux-desktop-centos7.yml b/.gitlab-ci-files/job-linux-desktop-centos7.yml index ba37c9c89..ee5249052 100644 --- a/.gitlab-ci-files/job-linux-desktop-centos7.yml +++ b/.gitlab-ci-files/job-linux-desktop-centos7.yml @@ -29,18 +29,18 @@ ################################################# # Ninja ################################################# - - job-centos7-ninja-gcc: - tags: [ "docker" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-centos:7 + except: + refs: + - schedules variables: CMAKE_GENERATOR: Ninja CC: gcc CXX: g++ extends: .job-linux-desktop - + #job-centos7-ninja-clang: @@ -56,3 +56,41 @@ job-centos7-ninja-gcc: # CMAKE_OPTIONS: -DENABLE_LIME=ON # extends: .job-linux-desktop +################################################# +# Package - Nightly +################################################# + +job-centos7-ninja-gcc-package: + stage: package + tags: [ "docker" ] + image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-centos:7 + only: + variables: + - $NIGHTLY_MASTER + - $DEPLOY_LINUX + variables: + CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES + CMAKE_GENERATOR: Ninja + CC: gcc + CXX: g++ + extends: .job-linux-desktop + artifacts: + paths: + - build/OUTPUT/Packages/Linphone*.AppImage + expire_in: 1 week + +################################################# +# Deploy - Nightly +################################################# + +job-centos7-ninja-gcc-deploy: + stage: deploy + tags: [ "docker" ] + dependencies: + - job-centos7-ninja-gcc-package + only: + variables: + - $NIGHTLY_MASTER + - $DEPLOY_LINUX + script: + - scp build/OUTPUT/Packages/Linphone*.AppImage $DEPLOY_SERVER:$APPIMAGE_UPLOAD_DIRECTORY/ diff --git a/.gitlab-ci-files/job-linux-desktop-debian10.yml b/.gitlab-ci-files/job-linux-desktop-debian10.yml index c5a6dad4d..23c8d093d 100644 --- a/.gitlab-ci-files/job-linux-desktop-debian10.yml +++ b/.gitlab-ci-files/job-linux-desktop-debian10.yml @@ -1,84 +1,69 @@ -################################################# -# Makefile -################################################# - - -job-debian10-makefile-gcc: - - tags: [ "docker-debian10" ] - image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:10 - only: - variables: - - $NIGHTLY_MASTER - variables: - CMAKE_GENERATOR: Unix Makefiles - CC: gcc - CXX: g++ - ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS - extends: .job-linux-desktop - - -job-debian10-makefile-clang: - - tags: [ "docker-debian10" ] - image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:10 - only: - variables: - - $NIGHTLY_MASTER - variables: - CMAKE_GENERATOR: Unix Makefiles - CC: clang - CXX: clang++ - ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS - extends: .job-linux-desktop - - -################################################# -# Ninja -################################################# - job-debian10-ninja-gcc: - tags: [ "docker-debian10" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:10 + except: + refs: + - schedules variables: CMAKE_GENERATOR: Ninja CC: gcc CXX: g++ extends: .job-linux-desktop +################################################# +# Nightly +################################################# + +job-debian10-makefile-gcc: + tags: [ "docker-debian10" ] + image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:10 + only: + variables: + - $NIGHTLY_MASTER + variables: + CMAKE_GENERATOR: Unix Makefiles + CC: gcc + CXX: g++ + ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS + extends: .job-linux-desktop + job-debian10-ninja-gcc-novideo: - + tags: [ "docker-debian10" ] + image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:10 only: variables: - $NIGHTLY_MASTER variables: CMAKE_OPTIONS: -DENABLE_VIDEO=NO - extends: job-debian10-ninja-gcc + CMAKE_GENERATOR: Ninja + CC: gcc + CXX: g++ + extends: .job-linux-desktop job-debian10-ninja-gcc-smallsdk: - + tags: [ "docker-debian10" ] + image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:10 only: variables: - $NIGHTLY_MASTER - variables: CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO - extends: job-debian10-ninja-gcc + CMAKE_GENERATOR: Ninja + CC: gcc + CXX: g++ + extends: .job-linux-desktop job-debian10-ninja-clang: - tags: [ "docker-debian10" ] only: variables: - $NIGHTLY_MASTER image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:10 variables: - CMAKE_OPTIONS: -DENABLE_DOC=ON CMAKE_GENERATOR: Ninja CC: clang CXX: clang++ @@ -91,10 +76,55 @@ job-debian10-ninja-clang-novideo: - $NIGHTLY_MASTER variables: CMAKE_OPTIONS: -DENABLE_VIDEO=NO - extends: job-debian10-ninja-clang + extends: job-debian10-ninja-clang + +job-debian10-makefile-clang: + tags: [ "docker-debian10" ] + image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:10 + only: + variables: + - $NIGHTLY_MASTER + - $DEPLOY_LINUX + variables: + CMAKE_GENERATOR: Unix Makefiles + CC: clang + CXX: clang++ + ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS + extends: .job-linux-desktop ################################################# -# TESTS +# Package - Nightly ################################################# +job-debian10-makefile-clang-package: + stage: package + tags: [ "docker-debian10" ] + dependencies: + - job-debian10-makefile-clang + only: + variables: + - $NIGHTLY_MASTER + - $DEPLOY_LINUX + variables: + CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES + extends: job-debian10-makefile-clang + artifacts: + paths: + - build/OUTPUT/Packages/Linphone*.AppImage + expire_in: 1 week +################################################# +# Deploy - Nightly +################################################# + +job-debian10-makefile-clang-deploy: + stage: deploy + tags: [ "docker-debian10" ] + dependencies: + - job-debian10-makefile-clang-package + only: + variables: + - $NIGHTLY_MASTER + - $DEPLOY_LINUX + script: + - scp build/OUTPUT/Packages/Linphone*.AppImage $DEPLOY_SERVER:$APPIMAGE_UPLOAD_DIRECTORY/ diff --git a/.gitlab-ci-files/job-linux-desktop-debian8.yml b/.gitlab-ci-files/job-linux-desktop-debian8.yml index b4419a0f3..fe288bce2 100644 --- a/.gitlab-ci-files/job-linux-desktop-debian8.yml +++ b/.gitlab-ci-files/job-linux-desktop-debian8.yml @@ -2,11 +2,12 @@ # Makefile ################################################# - job-debian8-makefile-gcc: - tags: [ "docker-debian8" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:8 + except: + refs: + - schedules variables: CMAKE_GENERATOR: Unix Makefiles CC: gcc @@ -17,7 +18,6 @@ job-debian8-makefile-gcc: job-debian8-makefile-clang: - tags: [ "docker-debian8" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:8 only: @@ -32,26 +32,36 @@ job-debian8-makefile-clang: extends: .job-linux-desktop ################################################# -# Ninja +# Package - Nightly ################################################# -#job-debian8-ninja-gcc: -# +#job-debian8-makefile-clang-package: +# stage: package # tags: [ "docker-debian8" ] -# image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:8 +# only: +# variables: +# - $NIGHTLY_MASTER +# - $DEPLOY_LINUX # variables: -# CMAKE_GENERATOR: Ninja -# CC: gcc -# CXX: g++ -# extends: .job-linux-desktop +# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES +# extends: job-debian8-makefile-clang +# artifacts: +# paths: +# - build/OUTPUT/Packages/Linphone*.AppImage +# expire_in: 1 week +################################################# +# Deploy - Nightly +################################################# -#job-debian8-ninja-clang: -# +#job-debian8-makefile-clang-deploy: +# stage: deploy # tags: [ "docker-debian8" ] -# image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:8 -# variables: -# CMAKE_GENERATOR: Ninja -# CC: clang -# CXX: clang++ -# extends: .job-linux-desktop +# dependencies: +# - job-debian8-makefile-clang-package +# only: +# variables: +# - $NIGHTLY_MASTER +# - $DEPLOY_LINUX +# script: +# - scp build/OUTPUT/Packages/Linphone*.AppImage $DEPLOY_SERVER:$APPIMAGE_UPLOAD_DIRECTORY/ diff --git a/.gitlab-ci-files/job-linux-desktop-debian9.yml b/.gitlab-ci-files/job-linux-desktop-debian9.yml index d31676749..be8cdd105 100644 --- a/.gitlab-ci-files/job-linux-desktop-debian9.yml +++ b/.gitlab-ci-files/job-linux-desktop-debian9.yml @@ -1,52 +1,45 @@ -job-debian9-makefile-gcc: - - tags: [ "docker-debian9" ] - image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:9 - only: - variables: - - $NIGHTLY_MASTER - variables: - CMAKE_GENERATOR: Unix Makefiles - CC: gcc - CXX: g++ - ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS - extends: .job-linux-desktop - - -job-debian9-makefile-clang: - - tags: [ "docker-debian9" ] - image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:9 - only: - variables: - - $NIGHTLY_MASTER - variables: - CMAKE_GENERATOR: Unix Makefiles - CC: clang - CXX: clang++ - ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS - extends: .job-linux-desktop - - -################################################# -# Ninja -################################################# - job-debian9-ninja-gcc: - tags: [ "docker-debian9" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:9 + except: + refs: + - schedules variables: CMAKE_GENERATOR: Ninja CC: gcc CXX: g++ extends: .job-linux-desktop + +job-debian9-ninja-gcc-smallsdk: + except: + refs: + - schedules + variables: + CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO + extends: job-debian9-ninja-gcc + + +################################################# +# Nightly +################################################# + +job-debian9-makefile-gcc: + tags: [ "docker-debian9" ] + image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:9 + only: + variables: + - $NIGHTLY_MASTER + variables: + CMAKE_GENERATOR: Unix Makefiles + CC: gcc + CXX: g++ + ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS + extends: .job-linux-desktop job-debian9-ninja-gcc-novideo: - only: variables: - $NIGHTLY_MASTER @@ -55,15 +48,7 @@ job-debian9-ninja-gcc-novideo: extends: job-debian9-ninja-gcc -job-debian9-ninja-gcc-smallsdk: - - variables: - CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO - extends: job-debian9-ninja-gcc - - job-debian9-ninja-clang: - tags: [ "docker-debian9" ] only: variables: @@ -76,7 +61,6 @@ job-debian9-ninja-clang: CXX: clang++ extends: .job-linux-desktop - job-debian9-ninja-clang-novideo: only: variables: @@ -84,4 +68,51 @@ job-debian9-ninja-clang-novideo: variables: CMAKE_OPTIONS: -DENABLE_VIDEO=NO extends: job-debian9-ninja-clang + +job-debian9-makefile-clang: + tags: [ "docker-debian9" ] + image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:9 + only: + variables: + - $NIGHTLY_MASTER + variables: + CMAKE_GENERATOR: Unix Makefiles + CC: clang + CXX: clang++ + ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS + extends: .job-linux-desktop +################################################# +# Package - Nightly +################################################# + +#job-debian9-makefile-clang-package: +# stage: package +# tags: [ "docker-debian9" ] +# only: +# variables: +# - $NIGHTLY_MASTER +# - $DEPLOY_LINUX +# variables: +# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES +# extends: job-debian9-makefile-clang +# artifacts: +# paths: +# - build/OUTPUT/Packages/Linphone*.AppImage +# expire_in: 1 week +# +################################################# +# Deploy - Nightly +################################################# + +#job-debian9-makefile-clang-deploy: +# stage: deploy +# tags: [ "docker-debian9" ] +# dependencies: +# - job-debian9-makefile-clang-package +# only: +# variables: +# - $NIGHTLY_MASTER +# - $DEPLOY_LINUX +# script: +# - scp build/OUTPUT/Packages/Linphone*.AppImage $DEPLOY_SERVER:$APPIMAGE_UPLOAD_DIRECTORY/ diff --git a/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml b/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml index 3af96dae4..b90039917 100644 --- a/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml +++ b/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml @@ -1,10 +1,24 @@ -################################################# -# Makefile -################################################# +job-ubuntu-rolling-ninja-clang: + tags: [ "docker-ubuntu-rolling" ] + image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:rolling + except: + refs: + - schedules + variables: + CMAKE_GENERATOR: Ninja + CC: clang + CXX: clang++ + extends: .job-linux-desktop + + + + +################################################# +# Nightly +################################################# job-ubuntu-rolling-makefile-gcc: - tags: [ "docker-ubuntu-rolling" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:rolling only: @@ -19,7 +33,6 @@ job-ubuntu-rolling-makefile-gcc: job-ubuntu-rolling-makefile-clang: - tags: [ "docker-ubuntu-rolling" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:rolling only: @@ -33,13 +46,7 @@ job-ubuntu-rolling-makefile-clang: extends: .job-linux-desktop -################################################# -# Ninja -################################################# - - job-ubuntu-rolling-ninja-gcc: - tags: [ "docker-ubuntu-rolling" ] image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:rolling only: @@ -61,18 +68,7 @@ job-ubuntu-rolling-ninja-gcc-novideo: extends: job-ubuntu-rolling-ninja-gcc -job-ubuntu-rolling-ninja-clang: - tags: [ "docker-ubuntu-rolling" ] - image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:rolling - variables: - CMAKE_GENERATOR: Ninja - CC: clang - CXX: clang++ - extends: .job-linux-desktop - - job-ubuntu-rolling-ninja-clang-novideo: - only: variables: - $NIGHTLY_MASTER @@ -80,3 +76,37 @@ job-ubuntu-rolling-ninja-clang-novideo: CMAKE_OPTIONS: -DENABLE_VIDEO=NO extends: job-ubuntu-rolling-ninja-clang +################################################# +# Package - Nightly +################################################# + +#job-ubuntu-rolling-makefile-clang-package: +# stage: package +# tags: [ "docker-ubuntu-rolling" ] +# only: +# variables: +# - $NIGHTLY_MASTER +# - $DEPLOY_LINUX +# variables: +# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES +# extends: job-ubuntu-rolling-makefile-clang +# artifacts: +# paths: +# - build/OUTPUT/Packages/Linphone*.AppImage +# expire_in: 1 week + +################################################# +# Deploy - Nightly +################################################# + +#job-ubuntu-rolling-makefile-clang-deploy: +# stage: deploy +# tags: [ "docker-ubuntu-rolling" ] +# dependencies: +# - job-ubuntu-rolling-makefile-clang-package +# only: +# variables: +# - $NIGHTLY_MASTER +# - $DEPLOY_LINUX +# script: +# - scp build/OUTPUT/Packages/Linphone*.AppImage $DEPLOY_SERVER:$APPIMAGE_UPLOAD_DIRECTORY/ diff --git a/.gitlab-ci-files/job-linux-desktop.yml b/.gitlab-ci-files/job-linux-desktop.yml index 31705d7dd..978b600e9 100644 --- a/.gitlab-ci-files/job-linux-desktop.yml +++ b/.gitlab-ci-files/job-linux-desktop.yml @@ -3,10 +3,8 @@ ################################################# .job-linux-desktop: - stage: build extends: .linux-prepare - script: - cmake --version - export CC=$CC @@ -20,9 +18,7 @@ - cd build - cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_VERBOSE_MAKEFILE=ON -DLINPHONESDK_PLATFORM=Desktop $DEFAULT_LINUX_CMAKE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $CMAKE_SANITIZER_OPTIONS - cmake --build . --target all $LBC_NODEBUG_OPTIONS - artifacts: paths: - build/OUTPUT expire_in: 1 week - diff --git a/.gitlab-ci-files/job-macosx-desktop.yml b/.gitlab-ci-files/job-macosx-desktop.yml index 0a5a4fa32..cc62bc541 100644 --- a/.gitlab-ci-files/job-macosx-desktop.yml +++ b/.gitlab-ci-files/job-macosx-desktop.yml @@ -21,7 +21,7 @@ .job-macosx-desktop: stage: build - tags: [ "macosx" ] + tags: [ "macosx-xcode11" ] script: - *build_all_script artifacts: @@ -34,6 +34,9 @@ ################################################# job-macosx-ninja: + except: + refs: + - schedules variables: CMAKE_GENERATOR: Ninja extends: .job-macosx-desktop @@ -57,7 +60,8 @@ job-macosx-ninja-novideo: - $NIGHTLY_MASTER variables: CMAKE_OPTIONS: -DENABLE_VIDEO=NO - extends: job-macosx-ninja + CMAKE_GENERATOR: Ninja + extends: .job-macosx-desktop #job-macosx-xcode: # extends: .job-macosx-desktop @@ -77,12 +81,11 @@ job-macosx-ninja-novideo: job-macosx-makefile-package: stage: package - tags: [ "deploy" ] - dependencies: - - job-macosx-makefile + tags: [ "macosx-xcode11" ] only: variables: - $NIGHTLY_MASTER + - $DEPLOY_MACOSX variables: CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES extends: job-macosx-makefile @@ -100,11 +103,12 @@ job-macosx-makefile-package: job-macosx-makefile-deploy: stage: deploy - tags: [ "deploy" ] + tags: [ "macosx-xcode11" ] dependencies: - job-macosx-makefile-package only: variables: - $NIGHTLY_MASTER + - $DEPLOY_MACOSX script: - scp build/OUTPUT/Packages/Linphone*.dmg $DEPLOY_SERVER:$MACOSX_UPLOAD_DIRECTORY/app/ diff --git a/.gitlab-ci-files/job-windows-desktop.yml b/.gitlab-ci-files/job-windows-desktop.yml index ce0c411c9..c4a626207 100644 --- a/.gitlab-ci-files/job-windows-desktop.yml +++ b/.gitlab-ci-files/job-windows-desktop.yml @@ -47,10 +47,8 @@ extends: .job-prepare stage: build tags: [ "windows" ] - variables: CMAKE_OPTIONS: -DENABLE_LIME_X3DH=NO -DENABLE_UNIT_TESTS=ON - script: - SET Qt5_DIR=C:\Qt\5.12.6\msvc2017\lib\cmake - SET PATH=%PATH%;C:\Qt\5.12.6\msvc2017\bin @@ -66,30 +64,31 @@ - cmake .. -G "Visual Studio 15 2017" -DLINPHONESDK_PLATFORM=Desktop -DENABLE_CSHARP_WRAPPER=YES -DCMAKE_BUILD_TYPE=Release %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS% - cmake --build . --target ALL_BUILD --config Release %LBC_NODEBUG_OPTIONS% -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false - C:\PROGRA~1\Python37\Scripts\cl -s - artifacts: paths: - build\OUTPUT expire_in: 2 days - -.job-windows-vs2017-scheduled: + +job-windows-vs2017: + except: + refs: + - schedules extends: .job-windows-vs2017 - + + +################################################# +# NIGHTLY +################################################# + +.job-windows-vs2017-scheduled: only: variables: - $NIGHTLY_MASTER - $NIGHTLY_RELEASE - - $PACKAGE_RUN_WINDOWS before_script: #cache disabled on scheduled builds since we dot not need the fastest build - set "CLCACHE_DISABLE=1" - - -job-windows-vs2017: extends: .job-windows-vs2017 - except: - refs: - - schedules job-windows-vs2017-scheduled: extends: .job-windows-vs2017-scheduled @@ -100,19 +99,19 @@ job-windows-vs2017-novideo: CMAKE_OPTIONS: -DENABLE_LIME_X3DH=NO -DENABLE_VIDEO=NO ################################################# -# PACKAGE +# PACKAGE ################################################# #Remove . when packaging process is ready to use job-windows-vs2017-package: stage: package tags: [ "windows" ] - dependencies: - - job-windows-vs2017-scheduled only: variables: - $NIGHTLY_MASTER - - $PACKAGE_RUN_WINDOWS + - $DEPLOY_WINDOWS + variables: + CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES script: - SET Qt5_DIR=C:\Qt\5.12.6\msvc2017\lib\cmake - SET PATH=%PATH%;C:\Qt\5.12.6\msvc2017\bin @@ -138,14 +137,18 @@ job-windows-vs2017-package: - results\* expire_in: 1 weeks + +################################################# +# DEPLOY +################################################# job-windows-vs2017-win32-upload: stage: deploy tags: [ "windows"] only: variables: - - $DEPLOY_RUN_WINDOWS - $NIGHTLY_MASTER + - $DEPLOY_WINDOWS dependencies: - job-windows-vs2017-package script: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bc845df14..ffa820b2e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,10 @@ variables: MAKEFILE_JOBS: 5 CCACHE_SIZE: 2G #this option is used to speedup submodule building times, when we don't need to trace debug (like SDK where it is already tested in its project) - LBC_NODEBUG_OPTIONS : --parallel $MAKEFILE_JOBS + LBC_NODEBUG_OPTIONS : --parallel $MAKEFILE_JOBS + DEFAULT_LINUX_CMAKE_OPTIONS: -DCMAKE_BUILD_PARALLEL_LEVEL=$MAKEFILE_JOBS + DEFAULT_MACOS_CMAKE_OPTIONS: -DCMAKE_BUILD_PARALLEL_LEVEL=$MAKEFILE_JOBS + DEFAULT_WINDOWS_CMAKE_OPTIONS: -DCMAKE_BUILD_PARALLEL_LEVEL=$MAKEFILE_JOBS # DEFAULT_LINUX_CMAKE_OPTIONS: -DENABLE_NON_FREE_CODECS=YES -DENABLE_OPENH264=YES # DEFAULT_MACOS_CMAKE_OPTIONS: -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 -DENABLE_UPDATE_CHECK=YES diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c3b9ac27..4520578f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,16 +24,20 @@ cmake_minimum_required(VERSION 3.1) get_cmake_property(vars CACHE_VARIABLES) foreach(var ${vars}) - get_property(currentHelpString CACHE "${var}" PROPERTY HELPSTRING) - if("${currentHelpString}" MATCHES "No help, variable specified on the command line." OR "${currentHelpString}" STREQUAL "") - #message("${var} = [${${var}}] -- ${currentHelpString}") # uncomment to see the variables being processed - list(APPEND USER_ARGS "-D${var}=${${var}}") - if( "${var}" STREQUAL "CMAKE_PREFIX_PATH") - set(PREFIX_PATH ";${${var}}") + get_property(currentHelpString CACHE "${var}" PROPERTY HELPSTRING) + if("${currentHelpString}" MATCHES "No help, variable specified on the command line." OR "${currentHelpString}" STREQUAL "") + #message("${var} = [${${var}}] -- ${currentHelpString}") # uncomment to see the variables being processed + list(APPEND USER_ARGS "-D${var}=${${var}}") + if( "${var}" STREQUAL "CMAKE_PREFIX_PATH") + set(PREFIX_PATH ";${${var}}") + endif() + elseif("${var}" STREQUAL "CMAKE_GENERATOR_PLATFORM") + message(STATUS "User-Setting Platform to ${${var}}") endif() - endif() endforeach() - +if(ENABLE_BUILD_VERBOSE) + message("User Args : ${USER_ARGS}") +endif() project(linphoneqt VERSION 4.1.1) include(GNUInstallDirs) @@ -80,12 +84,12 @@ option(ENABLE_TESTS "Build with testing binaries of SDK" NO ) option(ENABLE_TESTS_COMPONENTS "Build libbctoolbox-tester" NO ) option(ENABLE_TOOLS "Enable tools of SDK" NO) option(ENABLE_STRICT "Build with strict compilator flags e.g. -Wall -Werror" NO) - option(ENABLE_FFMPEG "Build mediastreamer2 with ffmpeg video support." YES) +option(ENABLE_BUILD_VERBOSE "Enable the build generation to be more verbose" NO) if(WIN32 OR APPLE) else() - option(ENABLE_V4L "Ability to capture and display video using libv4l2 or libv4l." YES) + option(ENABLE_V4L "Ability to capture and display video using libv4l2 or libv4l." YES) endif() option(ENABLE_RELATIVE_PREFIX "Set Internal packages relative to the binary" YES) @@ -98,12 +102,18 @@ list(APPEND APP_OPTIONS "-DENABLE_TESTS_COMPONENTS=${ENABLE_TESTS_COMPONENTS}") list(APPEND APP_OPTIONS "-DENABLE_TOOLS=${ENABLE_TOOLS}") list(APPEND APP_OPTIONS "-DENABLE_STRICT=${ENABLE_STRICT}") list(APPEND APP_OPTIONS "-DENABLE_FFMPEG=${ENABLE_FFMPEG}") +list(APPEND APP_OPTIONS "-DENABLE_BUILD_VERBOSE=${ENABLE_BUILD_VERBOSE}") + if(ENABLE_V4L) list(APPEND APP_OPTIONS "-DENABLE_V4L=${ENABLE_V4L}") endif() list(APPEND APP_OPTIONS "-DENABLE_RELATIVE_PREFIX=${ENABLE_RELATIVE_PREFIX}") list(APPEND APP_OPTIONS "-DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR}") +if(NOT CMAKE_GENERATOR_PLATFORM AND WIN32) + set(CMAKE_GENERATOR_PLATFORM "Win32") + message(STATUS "Setting Platform to ${${var}}") +endif() include(ExternalProject) set(PROJECT_BUILD_COMMAND "") @@ -119,7 +129,6 @@ if(CMAKE_VERBOSE_MAKEFILE) list(APPEND PROJECT_BUILD_COMMAND "--verbose") endif() endif() -message("User Args : ${USER_ARGS}") ExternalProject_Add(sdk PREFIX "${CMAKE_BINARY_DIR}/sdk" SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-sdk" @@ -128,7 +137,7 @@ ExternalProject_Add(sdk PREFIX "${CMAKE_BINARY_DIR}/sdk" BINARY_DIR "${SDK_BUILD_DIR}" STEP_TARGETS build BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} - INSTALL_COMMAND cmake -E echo "Skipping install step." + INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time." LIST_SEPARATOR | # Use the alternate list separator CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} #BUILD_ALWAYS NO #${DO_BUILD} @@ -143,21 +152,23 @@ ExternalProject_Add_Step(sdk force_build ExternalProject_Add(miniziplib PREFIX "${CMAKE_BINARY_DIR}/minizip" SOURCE_DIR "${CMAKE_SOURCE_DIR}/submodules/externals/minizip" INSTALL_DIR "${MINIZIP_OUTPUT_DIR}" - BUILD_ALWAYS ON DEPENDS sdk BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} LIST_SEPARATOR | # Use the alternate list separator CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ) include(FindPkgConfig) -find_package(LinphoneCxx CONFIG) -find_package(Linphone CONFIG) -find_package(bctoolbox CONFIG) -find_package(belcard CONFIG) -find_package(Mediastreamer2 CONFIG) -find_package(ortp CONFIG) -pkg_search_module(MINIZIP minizip) +find_package(LinphoneCxx CONFIG QUIET) +find_package(Linphone CONFIG QUIET) +find_package(bctoolbox CONFIG QUIET) +find_package(belcard CONFIG QUIET) +find_package(Mediastreamer2 CONFIG QUIET) +find_package(ortp CONFIG QUIET) +find_package(minizip QUIET) +if(ENABLE_BUILD_VERBOSE) + message("MINIZIP from superbuild :${MINIZIP_PREFIX}, ${MINIZIP_INCLUDE_DIRS} => ${MINIZIP_LIBRARIES}") +endif() if(NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR NOT (belcard_FOUND) OR NOT (Mediastreamer2_FOUND) OR NOT (ortp_FOUND) OR NOT(MINIZIP_FOUND) ) message("Projects are set as External projects. You can start building them by using for example : cmake --build . --target all") ExternalProject_Add(linphone-qt PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" @@ -165,6 +176,7 @@ if(NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR N INSTALL_DIR "${APPLICATION_OUTPUT_DIR}" DEPENDS miniziplib sdk BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} +# INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time." LIST_SEPARATOR | # Use the alternate list separator CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} # ${APP_OPTIONS} @@ -183,6 +195,7 @@ ExternalProject_Add(linphone-qt-only PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-app" INSTALL_DIR "${APPLICATION_OUTPUT_DIR}" BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} +# INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Install step is already done at build time." LIST_SEPARATOR | # Use the alternate list separator CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} EXCLUDE_FROM_ALL ON diff --git a/README.md b/README.md index c574127ca..e5d141d9d 100644 --- a/README.md +++ b/README.md @@ -61,18 +61,19 @@ Note: If you have `qtchooser` set in your `PATH`, the best use is : ### Building -The build is done by building the SDK, the submodule Minizip and the application. Their targets are `sdk`, `minizip` and `linphone-qt`. +The build is done by building the SDK, the submodule Minizip and the application. Their targets are `sdk`, `miniziplib` and `linphone-qt`. -1. Create your build folder at the root of the project : `mkdir build-desktop` -Go to this new folder and begin the build process : `cd build-desktop` +1. Create your build folder at the root of the project : `mkdir build` +Go to this new folder and begin the build process : `cd build` 2. Prepare your options : `cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo`. By default, it will try compile all needed dependencies. You can remove some by adding `-DENABLE_=NO` to the command. You can use `cmake-gui ..` if you want to have a better access to them. You can add `-DCMAKE_BUILD_PARALLEL_LEVEL=10` to do 10 parallel builds for speeding up the process. If it doesn't seem to work then it will be better to use CMake >= 3.12 +Also, you can add `-DENABLE_BUILD_VERBOSE=ON` to get more feedback while generating the project. 3. Build and install the whole project : `cmake --build . --target all` or `cmake --build . --target ALL_BUILD` on Windows. It is important to set the config in the process or you can have a bad configuration for your binary that could lead to some corruption : on Windows, this issue is spotted when trying to start the application and an empty file with a random name is created. So, if you are working on an IDE (like Qt Creator), you may override the build command. -When all are over, the files will be in the OUTPUT folder in the build directory. +When all are over, the files will be in the OUTPUT folder in the build directory. When rebuilding, you have to use `cmake --build . --target install` or `cmake --install .` (if CMake>=3.15) to put the application in the correct configuration. 4. When doing some modifications in the SDK, you can rebuild only the sdk with the target `sdk` diff --git a/create_appimage.sh b/create_appimage.sh deleted file mode 100755 index 94ebb944a..000000000 --- a/create_appimage.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -## -## Copyright (c) 2010-2020 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 . -## - -APP_NAME="linphone" - -BIN_SOURCE_DIR="OUTPUT/desktop" - -WORK_DIR="OUTPUT/AppDir/usr" - -mkdir -p "${WORK_DIR}" - -cp -rfv "${BIN_SOURCE_DIR}"/* "${WORK_DIR}" - -./AppImage/linuxdeployqt-continuous-x86_64.AppImage "${WORK_DIR}/bin/${APP_NAME}" -appimage -bundle-non-qt-libs -verbose=2 diff --git a/linphone-app/CMakeLists.txt b/linphone-app/CMakeLists.txt index 0c9ab9817..8930a4ce0 100644 --- a/linphone-app/CMakeLists.txt +++ b/linphone-app/CMakeLists.txt @@ -1,4 +1,4 @@ - ################################################################################ +################################################################################ # # Copyright (c) 2017-2020 Belledonne Communications SARL. # @@ -22,18 +22,16 @@ cmake_minimum_required(VERSION 3.1) project(linphoneqt VERSION 4.1.1) -#message("CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH}") -message("Options : ${ENABLE_UPDATE_CHECK}, ${ENABLE_UNIT_TESTS}, ${ENABLE_TESTS}, ${ENABLE_TESTS_COMPONENTS}, ${ENABLE_TOOLS}, ${ENABLE_STRICT}, ${ENABLE_FFMPEG}, ${ENABLE_OPUS}") - +if(ENABLE_BUILD_VERBOSE) + #message("CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH}") + message("Options : ${ENABLE_UPDATE_CHECK}, ${ENABLE_UNIT_TESTS}, ${ENABLE_TESTS}, ${ENABLE_TESTS_COMPONENTS}, ${ENABLE_TOOLS}, ${ENABLE_STRICT}, ${ENABLE_FFMPEG}, ${ENABLE_OPUS}") +endif() include(GNUInstallDirs) include(CheckCXXCompilerFlag) set(TARGET_NAME linphone-qt) -if( NOT("${CMAKE_GENERATOR}" MATCHES "Ninja")) -# set(TARGET_NAME_ONLY linphone-qt-only) -# set(APP_LIBRARY_ONLY app-library-only) -endif() + set(CMAKE_CXX_STANDARD 11) if(UNIX AND NOT APPLE) @@ -44,11 +42,18 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake") set(APP_LIBRARY app-library) include(application_info.cmake) + if(WIN32) - set(EXECUTABLE_OUTPUT_DIR "${CMAKE_BINARY_DIR}") - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${EXECUTABLE_OUTPUT_DIR}") - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${EXECUTABLE_OUTPUT_DIR}") - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${EXECUTABLE_OUTPUT_DIR}") + set(EXECUTABLE_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") + set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_DIR} ) + set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_DIR} ) + set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_DIR} ) + foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )# Apply to all configurations + string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) + set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${EXECUTABLE_OUTPUT_DIR} ) + set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${EXECUTABLE_OUTPUT_DIR} ) + set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${EXECUTABLE_OUTPUT_DIR} ) + endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES ) endif() find_package(LinphoneCxx CONFIG) @@ -57,17 +62,14 @@ find_package(bctoolbox CONFIG) find_package(belcard CONFIG) find_package(Mediastreamer2 CONFIG) find_package(ortp CONFIG) -#find_package(minizip) - -include(FindPkgConfig) -pkg_search_module(MINIZIP minizip) +find_package(minizip) set(MINIZIP_INCLUDE_DIRS "${MINIZIP_PREFIX}/${MINIZIP_INCLUDE_DIRS}") - -message("MINIZIP : ${MINIZIP_INCLUDE_DIRS} => ${MINIZIP_LIBRARIES}") -message("INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} FRAMEWORK_PATH=${CMAKE_FRAMEWORK_PATH}") -message("LINPHONE : ${LINPHONE_INCLUDE_DIRS} => ${LINPHONE_LIBRARIES}") -message("LINPHONECXX : ${LINPHONECXX_INCLUDE_DIRS} => ${LINPHONECXX_LIBRARIES}") - +if(ENABLE_BUILD_VERBOSE) + message("MINIZIP : ${MINIZIP_PREFIX}, ${MINIZIP_INCLUDE_DIRS} => ${MINIZIP_LIBRARIES}") + message("INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} FRAMEWORK_PATH=${CMAKE_FRAMEWORK_PATH}, PREFIX_PATH=${CMAKE_PREFIX_PATH}") + message("LINPHONE : ${LINPHONE_INCLUDE_DIRS} => ${LINPHONE_LIBRARIES}") + message("LINPHONECXX : ${LINPHONECXX_INCLUDE_DIRS} => ${LINPHONECXX_LIBRARIES}") +endif() # Build configuration set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG -DQT_NO_DEBUG") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG") @@ -311,8 +313,8 @@ list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/views") set(QML_IMPORT_PATH ${_QML_IMPORT_PATHS} CACHE STRING "Path used to locate CMake modules by Qt Creator" FORCE) - - +set(QML2_IMPORT_PATH ${_QML_IMPORT_PATHS} CACHE STRING "Path used to locate CMake modules by Qt Creator" FORCE) +message("QML_IMPORT_PATH=${QML_IMPORT_PATH}" ) if(APPLE) if(MS2_PLUGINS_LOCATION) set(MSPLUGINS_DIR ${MS2_PLUGINS_LOCATION}) @@ -328,7 +330,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.cmake" "${CMAKE_CURRENT # ------------------------------------------------------------------------------ include_directories(src/) - +message("Qt5 Paths : Qt5_DIR=$ENV{Qt5_DIR}, PATH=$ENV{PATH}") find_package(Qt5 COMPONENTS ${QT5_PACKAGES} REQUIRED) find_package(Qt5 COMPONENTS ${QT5_PACKAGES_OPTIONAL} QUIET) @@ -396,9 +398,12 @@ set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME "${EXECUTABLE_NAME}" set(INCLUDED_DIRECTORIES "${LINPHONECXX_INCLUDE_DIRS}" "${MINIZIP_INCLUDE_DIRS}") set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} ${MINIZIP_LIBRARIES}) -#set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} "minizip") -message("LIBRARIES : ${LIBRARIES}") - +#if(NOT APPLE) +# list(APPEND LIBRARIES ${MINIZIP_LIBRARIES}) +#endif() +if(ENABLE_BUILD_VERBOSE) + message("LIBRARIES : ${LIBRARIES}") +endif() foreach (package ${QT5_PACKAGES}) list(APPEND INCLUDED_DIRECTORIES "${Qt5${package}_INCLUDE_DIRS}") # `qt5_create_translation` is provided from `LinguistTools` package. @@ -448,37 +453,12 @@ endif() add_dependencies(${APP_LIBRARY} update_translations ${TARGET_NAME}-git-version) add_dependencies(${TARGET_NAME} ${APP_LIBRARY}) -if (UNIX AND NOT APPLE) - # Install desktop/icon files. - configure_file("${ASSETS_DIR}/linphone.desktop.cmake" "${EXECUTABLE_NAME}.desktop" @ONLY) - - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}.desktop" - DESTINATION "${CMAKE_INSTALL_DATADIR}/applications" - ) - install(FILES "${ASSETS_DIR}/images/linphone_logo.svg" - DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/" - RENAME "${EXECUTABLE_NAME}.svg" - ) - - set(ICON_DIRS 16x16 22x22 24x24 32x32 64x64 128x128 256x256) - foreach (DIR ${ICON_DIRS}) - install(FILES "${ASSETS_DIR}/icons/hicolor/${DIR}/apps/icon.png" - DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/${DIR}/apps/" - RENAME "${EXECUTABLE_NAME}.png" - ) - endforeach () -endif () # ------------------------------------------------------------------------------ # CPack settings & RPM. # ------------------------------------------------------------------------------ -set(LINPHONE_DESKTOP_DIR "${CMAKE_CURRENT_SOURCE_DIR}") -set(LINPHONE_SDK_DIR "${CMAKE_BINARY_DIR}/linphone-sdk") set(TOOLS_DIR "${CMAKE_BINARY_DIR}/programs") -set(LINPHONE_SOURCE_DIR ${EP_linphone_SOURCE_DIR}) set(LINPHONE_BUILDER_SIGNING_IDENTITY ${LINPHONE_BUILDER_SIGNING_IDENTITY}) -set(LINPHONE_SDK_TMP "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-tmp") -message("LINPHONE_DESKTOP_DIR = ${LINPHONE_DESKTOP_DIR}") add_subdirectory(build) add_subdirectory(cmake_builder/linphone_package) @@ -501,9 +481,11 @@ source_group( # ------------------------------ # Installation # ------------------------------ +#if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.15.0") +# add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR}) +#endif() if(APPLE) - target_link_libraries(${TARGET_NAME} "${MINIZIP_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib") - execute_process(COMMAND install_name_tool -id "@executable_path/../Frameworks/libminizip.dylib" "${MINIZIP_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib") + # target_link_libraries(${TARGET_NAME} "${MINIZIP_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib") elseif(NOT WIN32) # target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.so") endif() diff --git a/linphone-app/assets/linphone.desktop.cmake b/linphone-app/assets/linphone.desktop.cmake index 70d7314f6..65b259dcd 100644 --- a/linphone-app/assets/linphone.desktop.cmake +++ b/linphone-app/assets/linphone.desktop.cmake @@ -3,7 +3,7 @@ Name=@APPLICATION_NAME@ GenericName=SIP Phone Comment=@APPLICATION_DESCRIPTION@ Type=Application -Exec=@CMAKE_INSTALL_PREFIX@/bin/@EXECUTABLE_NAME@ %u +Exec=@EXECUTABLE_NAME@ %u Icon=@EXECUTABLE_NAME@ Terminal=false Categories=Network;Telephony; diff --git a/linphone-app/cmake_builder/CMakeLists.txt b/linphone-app/cmake_builder/CMakeLists.txt deleted file mode 100644 index f4af5786c..000000000 --- a/linphone-app/cmake_builder/CMakeLists.txt +++ /dev/null @@ -1,517 +0,0 @@ -############################################################################ -# CMakeLists.txt -# Copyright (C) 2017-2020 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. -# -############################################################################ -cmake_minimum_required(VERSION 3.1) -project(linphoneqt-sub VERSION 4.1.1) - -message("CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH}") - - -message("Options : ${ENABLE_UPDATE_CHECK}, ${ENABLE_UNIT_TESTS}, ${ENABLE_TESTS}, ${ENABLE_TESTS_COMPONENTS}, ${ENABLE_TOOLS}, ${ENABLE_STRICT}, ${ENABLE_FFMPEG}, ${ENABLE_OPUS}") - -include(GNUInstallDirs) -include(CheckCXXCompilerFlag) - - -set(TARGET_NAME linphone-qt) -if( NOT("${CMAKE_GENERATOR}" MATCHES "Ninja")) -# set(TARGET_NAME_ONLY linphone-qt-only) -# set(APP_LIBRARY_ONLY app-library-only) -endif() -set(CMAKE_CXX_STANDARD 11) - -if(UNIX AND NOT APPLE) - set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/lib64;$ORIGIN/../lib64;$ORIGIN/lib;$ORIGIN/../lib") - set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -endif() -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake") - -set(APP_LIBRARY app-library) -include(../application_info.cmake) -if(WIN32) - set(EXECUTABLE_OUTPUT_DIR "${CMAKE_BINARY_DIR}") - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${EXECUTABLE_OUTPUT_DIR}") - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${EXECUTABLE_OUTPUT_DIR}") - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${EXECUTABLE_OUTPUT_DIR}") -endif() - -find_package(LinphoneCxx CONFIG) -find_package(Linphone CONFIG) -find_package(bctoolbox CONFIG) -find_package(belcard CONFIG) -find_package(Mediastreamer2 CONFIG) -find_package(ortp CONFIG) -#find_package(minizip) - -include(FindPkgConfig) -pkg_search_module(MINIZIP minizip) -set(MINIZIP_INCLUDE_DIRS "${MINIZIP_PREFIX}/${MINIZIP_INCLUDE_DIRS}") -#set(MINIZIP_LIBRARIES "${MINIZIP_PREFIX}/${MINIZIP_LIBRARIES}") - -message("MINIZIP : ${MINIZIP_INCLUDE_DIRS} => ${MINIZIP_LIBRARIES}") -message("INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} FRAMEWORK_PATH=${CMAKE_FRAMEWORK_PATH}") -message("LINPHONE : ${LINPHONE_INCLUDE_DIRS} => ${LINPHONE_LIBRARIES}") -message("LINPHONECXX : ${LINPHONECXX_INCLUDE_DIRS} => ${LINPHONECXX_LIBRARIES}") - -# Build configuration -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG -DQT_NO_DEBUG") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG") -if( WIN32) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINSOCKAPI_")#remove error from windows headers order -endif() -set(CMAKE_INCLUDE_CURRENT_DIR ON)#useful for config.h - -set(QT5_PACKAGES Core Gui Quick Widgets QuickControls2 Svg LinguistTools Concurrent Network) -if (UNIX AND NOT APPLE) - list(APPEND QT5_PACKAGES DBus) -endif () -set(QT5_PACKAGES_OPTIONAL TextToSpeech) -set(CMAKE_AUTOMOC ON) -#------------------------------------------------- -set(ASSETS_DIR "assets") -set(SOURCES - src/app/App.cpp - src/app/AppController.cpp - src/app/cli/Cli.cpp - src/app/logger/Logger.cpp - src/app/paths/Paths.cpp - src/app/providers/AvatarProvider.cpp - src/app/providers/ImageProvider.cpp - src/app/providers/ThumbnailProvider.cpp - src/app/translator/DefaultTranslator.cpp - src/components/assistant/AssistantModel.cpp - src/components/authentication/AuthenticationNotifier.cpp - src/components/call/CallModel.cpp - src/components/calls/CallsListModel.cpp - src/components/calls/CallsListProxyModel.cpp - src/components/camera/Camera.cpp - src/components/camera/CameraPreview.cpp - src/components/camera/MSFunctions.cpp - src/components/chat/ChatModel.cpp - src/components/chat/ChatProxyModel.cpp - src/components/codecs/AbstractCodecsModel.cpp - src/components/codecs/AudioCodecsModel.cpp - src/components/codecs/VideoCodecsModel.cpp - src/components/conference/ConferenceAddModel.cpp - src/components/conference/ConferenceHelperModel.cpp - src/components/conference/ConferenceModel.cpp - src/components/contact/ContactModel.cpp - src/components/contact/VcardModel.cpp - src/components/contacts/ContactsListModel.cpp - src/components/contacts/ContactsListProxyModel.cpp - src/components/core/CoreHandlers.cpp - src/components/core/CoreManager.cpp - src/components/core/event-count-notifier/AbstractEventCountNotifier.cpp - src/components/file/FileDownloader.cpp - src/components/file/FileExtractor.cpp - src/components/notifier/Notifier.cpp - src/components/other/clipboard/Clipboard.cpp - src/components/other/colors/Colors.cpp - src/components/other/text-to-speech/TextToSpeech.cpp - src/components/other/units/Units.cpp - src/components/presence/OwnPresenceModel.cpp - src/components/presence/Presence.cpp - src/components/settings/AccountSettingsModel.cpp - src/components/settings/SettingsModel.cpp - src/components/sip-addresses/SipAddressesModel.cpp - src/components/sip-addresses/SipAddressesProxyModel.cpp - src/components/sip-addresses/SipAddressObserver.cpp - src/components/sound-player/SoundPlayer.cpp - src/components/telephone-numbers/TelephoneNumbersModel.cpp - src/components/timeline/TimelineModel.cpp - src/components/url-handlers/UrlHandlers.cpp - src/utils/LinphoneUtils.cpp - src/utils/MediastreamerUtils.cpp - src/utils/QExifImageHeader.cpp - src/utils/Utils.cpp - ) - -set(HEADERS - src/app/App.hpp - src/app/AppController.hpp - src/app/cli/Cli.hpp - src/app/logger/Logger.hpp - src/app/paths/Paths.hpp - src/app/providers/AvatarProvider.hpp - src/app/providers/ImageProvider.hpp - src/app/providers/ThumbnailProvider.hpp - src/app/single-application/SingleApplication.hpp - src/app/translator/DefaultTranslator.hpp - src/components/assistant/AssistantModel.hpp - src/components/authentication/AuthenticationNotifier.hpp - src/components/call/CallModel.hpp - src/components/calls/CallsListModel.hpp - src/components/calls/CallsListProxyModel.hpp - src/components/camera/Camera.hpp - src/components/camera/CameraPreview.hpp - src/components/camera/MSFunctions.hpp - src/components/chat/ChatModel.hpp - src/components/chat/ChatProxyModel.hpp - src/components/codecs/AbstractCodecsModel.hpp - src/components/codecs/AudioCodecsModel.hpp - src/components/codecs/VideoCodecsModel.hpp - src/components/Components.hpp - src/components/conference/ConferenceAddModel.hpp - src/components/conference/ConferenceHelperModel.hpp - src/components/conference/ConferenceModel.hpp - src/components/contact/ContactModel.hpp - src/components/contact/VcardModel.hpp - src/components/contacts/ContactsListModel.hpp - src/components/contacts/ContactsListProxyModel.hpp - src/components/core/CoreHandlers.hpp - src/components/core/CoreManager.hpp - src/components/core/event-count-notifier/AbstractEventCountNotifier.hpp - src/components/file/FileDownloader.hpp - src/components/file/FileExtractor.hpp - src/components/notifier/Notifier.hpp - src/components/other/clipboard/Clipboard.hpp - src/components/other/colors/Colors.hpp - src/components/other/desktop-tools/DesktopTools.hpp - src/components/other/text-to-speech/TextToSpeech.hpp - src/components/other/units/Units.hpp - src/components/presence/OwnPresenceModel.hpp - src/components/presence/Presence.hpp - src/components/settings/AccountSettingsModel.hpp - src/components/settings/SettingsModel.hpp - src/components/sip-addresses/SipAddressesModel.hpp - src/components/sip-addresses/SipAddressesProxyModel.hpp - src/components/sip-addresses/SipAddressObserver.hpp - src/components/sound-player/SoundPlayer.hpp - src/components/telephone-numbers/TelephoneNumbersModel.hpp - src/components/timeline/TimelineModel.hpp - src/components/url-handlers/UrlHandlers.hpp - src/utils/LinphoneUtils.hpp - src/utils/MediastreamerUtils.hpp - src/utils/QExifImageHeader.hpp - src/utils/Utils.hpp - ) - -set(MAIN_FILE ../src/app/main.cpp) - -if (APPLE) - list(APPEND SOURCES - src/app/single-application/SingleApplication.cpp - src/components/core/event-count-notifier/EventCountNotifierMacOs.m - src/components/other/desktop-tools/DesktopToolsMacOs.cpp - src/components/other/desktop-tools/screen-saver/ScreenSaverMacOs.m - src/components/other/desktop-tools/state-process/StateProcessMacOs.mm - ) - list(APPEND HEADERS - src/app/single-application/SingleApplicationPrivate.hpp - src/components/core/event-count-notifier/EventCountNotifierMacOs.hpp - src/components/other/desktop-tools/DesktopToolsMacOs.hpp - ) -elseif (WIN32) - list(APPEND SOURCES - src/app/single-application/SingleApplication.cpp - src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.cpp - src/components/other/desktop-tools/DesktopToolsWindows.cpp - ) - list(APPEND HEADERS - src/app/single-application/SingleApplicationPrivate.hpp - src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.hpp - src/components/other/desktop-tools/DesktopToolsWindows.hpp - ) -else () - list(APPEND SOURCES - src/app/single-application/SingleApplicationDBus.cpp - src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.cpp - src/components/other/desktop-tools/DesktopToolsLinux.cpp - src/components/other/desktop-tools/screen-saver/ScreenSaverDBus.cpp - src/components/other/desktop-tools/screen-saver/ScreenSaverXdg.cpp - ) - list(APPEND HEADERS - src/app/single-application/SingleApplicationDBusPrivate.hpp - src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.hpp - src/components/other/desktop-tools/DesktopToolsLinux.hpp - src/components/other/desktop-tools/screen-saver/ScreenSaverDBus.hpp - src/components/other/desktop-tools/screen-saver/ScreenSaverXdg.hpp - ) -endif () - -set(QRC_RESOURCES ../resources.qrc) - -set(LANGUAGES_DIRECTORY "${ASSETS_DIR}/languages") -set(I18N_FILENAME i18n.qrc) -set(LANGUAGES de en fr_FR ja lt ru sv tr pt_BR) - -# ------------------------------------------------------------------------------ - -function (PREPEND list prefix) - set(new_list "") - - foreach (elem ${${list}}) - list(APPEND new_list "${prefix}${elem}") - endforeach () - - set(${list} ${new_list} PARENT_SCOPE) -endfunction () - -# Force absolute paths. -PREPEND(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/../") -PREPEND(HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/../") - -# ------------------------------------------------------------------------------ -# Compute QML files list. -# ------------------------------------------------------------------------------ - -set(QML_SOURCES) -file(STRINGS ${QRC_RESOURCES} QRC_RESOURCES_CONTENT) -foreach (line ${QRC_RESOURCES_CONTENT}) - set(result) - string(REGEX REPLACE - "^[ \t]*<[ \t]*file[ \t]*>[ \t]*(.+\\.[a-z]+)[ \t]*<[ \t]*/[ \t]*file[ \t]*>[ \t]*$" - "\\1" - result - "${line}" - ) - string(REGEX MATCH "\\.[a-z]+$" is_ui ${result}) - if (NOT ${is_ui} STREQUAL "") - list(APPEND QML_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/../${result}") - endif () -endforeach () - -# ------------------------------------------------------------------------------ -# Init git hooks. -# ------------------------------------------------------------------------------ - -if (NOT WIN32) - add_custom_target( - check_qml DEPENDS ${QML_SOURCES} - COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/../tools/check_qml_syntax" - ) -endif() - -execute_process(COMMAND ${CMAKE_COMMAND} -E copy - "${CMAKE_CURRENT_SOURCE_DIR}/../tools/private/pre-commit" - "${CMAKE_CURRENT_SOURCE_DIR}/../.git/hooks/pre-commit" - ) -set(_QML_IMPORT_PATHS "") -list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/../ui/modules") -list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/../ui/dev-modules") -list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/../ui/scripts") -list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/../ui/views") - - -set(QML_IMPORT_PATH ${_QML_IMPORT_PATHS} CACHE STRING "Path used to locate CMake modules by Qt Creator" FORCE) - - -if(APPLE) - if(MS2_PLUGINS_LOCATION) - set(MSPLUGINS_DIR ${MS2_PLUGINS_LOCATION}) - else() - set(MSPLUGINS_DIR "Frameworks/mediastreamer2.framework/Versions/A/Libraries") - endif() -else() - set(MSPLUGINS_DIR "${CMAKE_INSTALL_LIBDIR}/mediastreamer/plugins") -endif() -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../src/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/config.h") -# ------------------------------------------------------------------------------ -# Build. -# ------------------------------------------------------------------------------ - -include_directories(../src/) - -find_package(Qt5 COMPONENTS ${QT5_PACKAGES} REQUIRED) -find_package(Qt5 COMPONENTS ${QT5_PACKAGES_OPTIONAL} QUIET) - -if (CMAKE_INSTALL_RPATH) - #Retrieve lib path from a know QT executable - get_target_property(LUPDATE_PATH Qt5::lupdate LOCATION) - get_filename_component(LUPDATE_PATH "${LUPDATE_PATH}" DIRECTORY) - get_filename_component(QT_PATH "${LUPDATE_PATH}/../lib" ABSOLUTE) - list(APPEND CMAKE_INSTALL_RPATH "${QT_PATH}") -endif () -# Add languages support. -add_subdirectory("../${LANGUAGES_DIRECTORY}" "assets/languages") -list(APPEND SOURCES "${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGES_DIRECTORY}/${I18N_FILENAME}") - - -# Build and dependencies -link_directories("${MINIZIP_PREFIX}/${MINIZIP_LIBRARY_DIRS}") -#link_directories("${MINIZIP_PREFIX}/${MINIZIP_LIBRARY_DIRS}") - - - -#add_library(${APP_LIBRARY} OBJECT ${SOURCES} ${HEADERS} ${RESOURCES} ${QML_SOURCES}) -add_library(${APP_LIBRARY} OBJECT ${SOURCES} ${HEADERS} ${QML_SOURCES} ${QRC_RESOURCES}) -if(TARGET_NAME_ONLY) - add_library(${APP_LIBRARY_ONLY} OBJECT EXCLUDE_FROM_ALL ${SOURCES} ${HEADERS} ${QML_SOURCES} ${QRC_RESOURCES}) -endif() -if (WIN32) - add_executable(${TARGET_NAME} WIN32 $ ${ASSETS_DIR}/app-icon.rc ${MAIN_FILE}) - if(TARGET_NAME_ONLY) - add_executable(${TARGET_NAME_ONLY} WIN32 EXCLUDE_FROM_ALL $ ${ASSETS_DIR}/app-icon.rc ${MAIN_FILE}) - endif() -else () - add_executable(${TARGET_NAME} $ ${MAIN_FILE}) - if(TARGET_NAME_ONLY) - add_executable(${TARGET_NAME_ONLY} EXCLUDE_FROM_ALL $ ${MAIN_FILE}) - endif() -endif () -if(TARGET_NAME_ONLY) - target_compile_options(${TARGET_NAME_ONLY} PRIVATE -fPIC) - set_source_files_properties( ${APP_LIBRARY_ONLY} PROPERTIES EXTERNAL_OBJECT true GENERATED true ) - set_property(TARGET ${APP_LIBRARY_ONLY} PROPERTY POSITION_INDEPENDENT_CODE ON) #Need by Qt - set_property(TARGET ${APP_LIBRARY_ONLY} PROPERTY AUTORCC ON) - set_target_properties(${TARGET_NAME_ONLY} PROPERTIES OUTPUT_NAME "${EXECUTABLE_NAME}") -endif() -set_source_files_properties( ${APP_LIBRARY} PROPERTIES EXTERNAL_OBJECT true GENERATED true ) - -set_property(TARGET ${APP_LIBRARY} PROPERTY POSITION_INDEPENDENT_CODE ON) #Need by Qt - - -#Turn on automatic resources compilation by cmake -#Instead of excplicitely calling qt5_add_resources -set_property(TARGET ${APP_LIBRARY} PROPERTY AUTORCC ON) - -bc_git_version(${TARGET_NAME} ${PROJECT_VERSION}) - -set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME "${EXECUTABLE_NAME}") - - -#ExternalProject_Get_Property(project_a install_dir) -#include_directories(${install_dir}/include) - -#add_dependencies(project_b_exe project_a) -#target_link_libraries(project_b_exe ${install_dir}/lib/alib.lib) - - -set(INCLUDED_DIRECTORIES "${LINPHONECXX_INCLUDE_DIRS}" "${MINIZIP_INCLUDE_DIRS}") -#set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} ${MINIZIP_LIBRARIES}) -set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} "minizip") -message("LIBRARIES : ${LIBRARIES}") - -foreach (package ${QT5_PACKAGES}) - list(APPEND INCLUDED_DIRECTORIES "${Qt5${package}_INCLUDE_DIRS}") - # `qt5_create_translation` is provided from `LinguistTools` package. - # But the `Qt5::LinguistTools` lib does not exist. Remove it. - if (NOT (${package} STREQUAL LinguistTools)) - list(APPEND LIBRARIES ${Qt5${package}_LIBRARIES}) - endif () -endforeach () - -foreach (package ${QT5_PACKAGES_OPTIONAL}) - if ("${Qt5${package}_FOUND}") - message("Optional package ${package} found.") - list(APPEND INCLUDED_DIRECTORIES "${Qt5${package}_INCLUDE_DIRS}") - list(APPEND LIBRARIES ${Qt5${package}_LIBRARIES}) - - string(TOUPPER "${package}" INCLUDE_NAME) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D${INCLUDE_NAME}_ENABLED") - else () - message("Optional package ${package} not found.") - endif () -endforeach () - -if (APPLE) - list(APPEND LIBRARIES "-framework Cocoa -framework IOKit") - # -framework linphone") #This doesn't work yet -endif () - -target_include_directories(${APP_LIBRARY} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES}) - -target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES}) - -if(TARGET_NAME_ONLY) - target_include_directories(${APP_LIBRARY_ONLY} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES}) - target_include_directories(${TARGET_NAME_ONLY} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES}) - target_link_libraries(${TARGET_NAME_ONLY} ${LIBRARIES}) - add_dependencies(${APP_LIBRARY_ONLY} update_translations ${TARGET_NAME}-git-version) - add_dependencies(${TARGET_NAME_ONLY} update_translations ) -endif() - -#target_link_libraries(${APP_LIBRARY} ${LIBRARIES}) -target_link_libraries(${TARGET_NAME} ${LIBRARIES}) - -if(WIN32) - target_link_libraries(${TARGET_NAME} wsock32 ws2_32) -endif() - -add_dependencies(${APP_LIBRARY} update_translations ${TARGET_NAME}-git-version) -add_dependencies(${TARGET_NAME} ${APP_LIBRARY}) - -if (UNIX AND NOT APPLE) - # Install desktop/icon files. - configure_file("../${ASSETS_DIR}/linphone.desktop.cmake" "${EXECUTABLE_NAME}.desktop" @ONLY) - - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}.desktop" - DESTINATION "${CMAKE_INSTALL_DATADIR}/applications" - ) - install(FILES "../${ASSETS_DIR}/images/linphone_logo.svg" - DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/" - RENAME "${EXECUTABLE_NAME}.svg" - ) - - set(ICON_DIRS 16x16 22x22 24x24 32x32 64x64 128x128 256x256) - foreach (DIR ${ICON_DIRS}) - install(FILES "../${ASSETS_DIR}/icons/hicolor/${DIR}/apps/icon.png" - DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/${DIR}/apps/" - RENAME "${EXECUTABLE_NAME}.png" - ) - endforeach () -endif () - -# ------------------------------------------------------------------------------ -# CPack settings & RPM. -# ------------------------------------------------------------------------------ -set(LINPHONE_DESKTOP_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..") -set(LINPHONE_SDK_DIR "${CMAKE_BINARY_DIR}/linphone-sdk") -set(TOOLS_DIR "${CMAKE_BINARY_DIR}/programs") -set(LINPHONE_SOURCE_DIR ${EP_linphone_SOURCE_DIR}) -set(LINPHONE_BUILDER_SIGNING_IDENTITY ${LINPHONE_BUILDER_SIGNING_IDENTITY}) -set(LINPHONE_SDK_TMP "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-tmp") -message("LINPHONE_DESKTOP_DIR = ${LINPHONE_DESKTOP_DIR}") - -add_subdirectory(../build build) -add_subdirectory(linphone_package) - -# ------------------------------------------------------------------------------ -# To start better integration into IDE. -# ------------------------------------------------------------------------------ - -source_group( - "Qml" REGULAR_EXPRESSION ".+\.qml$" - ) -source_group( - "Js" REGULAR_EXPRESSION ".+\.js$" - ) -source_group( - "Svg" REGULAR_EXPRESSION ".+\.svg$" - ) - - -# ------------------------------ -# Installation -# ------------------------------ -if(APPLE) - target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib") - execute_process(COMMAND install_name_tool -id "@executable_path/../Frameworks/libminizip.dylib" "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib") -elseif(NOT WIN32) - # target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.so") -endif() - -if(${CMAKE_GENERATOR} MATCHES "Ninja" OR ${CMAKE_VERSION} VERSION_LESS "3.15.0") -else() -# add_custom_command( TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} --install ${CMAKE_CURRENT_BINARY_DIR} --config ${CMAKE_BUILD_TYPE}) -# add_custom_command( TARGET ${TARGET_NAME_ONLY} POST_BUILD COMMAND ${CMAKE_COMMAND} --install ${CMAKE_CURRENT_BINARY_DIR} --config ${CMAKE_BUILD_TYPE}) -endif() diff --git a/linphone-app/cmake_builder/linphone_package/CMakeLists.txt b/linphone-app/cmake_builder/linphone_package/CMakeLists.txt index 7c05a0a03..4507bd5d3 100644 --- a/linphone-app/cmake_builder/linphone_package/CMakeLists.txt +++ b/linphone-app/cmake_builder/linphone_package/CMakeLists.txt @@ -22,8 +22,10 @@ cmake_minimum_required(VERSION 3.1) project(LINPHONE_PACKAGE) # Dummy project. - -include("${LINPHONE_DESKTOP_DIR}/application_info.cmake") +if(ENABLE_BUILD_VERBOSE) + message("Linphone-packages paths : ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}") +endif() +include("${CMAKE_CURRENT_SOURCE_DIR}/../../application_info.cmake") find_package(Git) #Policy set to allow link from other directory (cmake 3.13) @@ -31,7 +33,7 @@ if (POLICY CMP0079) cmake_policy(SET CMP0079 NEW) endif () -set(LINPHONE_QML_DIR "${LINPHONE_DESKTOP_DIR}/ui") +set(LINPHONE_QML_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../ui") # ============================================================================== # Build package version. @@ -42,7 +44,7 @@ if (GIT_EXECUTABLE) COMMAND ${GIT_EXECUTABLE} describe --always OUTPUT_VARIABLE LINPHONE_GIT_REVISION OUTPUT_STRIP_TRAILING_WHITESPACE - WORKING_DIRECTORY ${LINPHONE_DESKTOP_DIR} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../.." ) else () set(LINPHONE_GIT_REVISION "0.0.0") @@ -61,8 +63,6 @@ set(PACKAGE_VERSION "${LINPHONE_VERSION}") # Preparing the Linphone SDK bundle. # ============================================================================== -message(" Linphone_SDK_DIR : ${LINPHONE_SDK_DIR}") - if (WIN32) set(LIBDIR ${CMAKE_INSTALL_BINDIR}) set(LIBPREFIX "") @@ -118,13 +118,13 @@ if (WIN32) install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/images" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}" USE_SOURCE_PERMISSIONS OPTIONAL) install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/sounds" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}" USE_SOURCE_PERMISSIONS) install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/Linphone/rootca.pem" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${EXECUTABLE_NAME}/") - install(FILES "${LINPHONE_DESKTOP_DIR}/assets/linphonerc-factory" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") - install(FILES "${LINPHONE_DESKTOP_DIR}/assets/assistant/use-other-sip-account.rc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") - install(FILES "${LINPHONE_DESKTOP_DIR}/assets/assistant/create-app-sip-account.rc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") - install(FILES "${LINPHONE_DESKTOP_DIR}/assets/assistant/use-app-sip-account.rc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") - #get_target_property(DIRR ${TARGET_NAME} RUNTIME_OUTPUT_DIRECTORY) - - install(PROGRAMS "${EXECUTABLE_OUTPUT_DIR}/${EXECUTABLE_NAME}.exe" DESTINATION "${CMAKE_INSTALL_BINDIR}") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphonerc-factory" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant/use-other-sip-account.rc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant/create-app-sip-account.rc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant/use-app-sip-account.rc" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") + #get_target_property(DIRR linphone-qt RUNTIME_OUTPUT_DIRECTORY) #No need that, the binary should be in ${CMAKE_CURRENT_BINARY_DIR}/../.. + #message("DIR : ${DIRR}") + install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.exe" DESTINATION "${CMAKE_INSTALL_BINDIR}") install( CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \"\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/${EXECUTABLE_NAME}.exe\" -qmldir=${LINPHONE_QML_DIR} --compiler-runtime)")# -verbose=2)" COMPONENT binary_application) # list(REMOVE_ITEM SHARE_CONTENT "${CMAKE_INSTALL_DATAROOTDIR}/belr" "${CMAKE_INSTALL_DATAROOTDIR}/Belr" "${CMAKE_INSTALL_DATAROOTDIR}/images" "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}" "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}" "${CMAKE_INSTALL_DATAROOTDIR}/sounds") @@ -132,38 +132,33 @@ if (WIN32) # list(APPEND SHARE_CONTENT_EXCLUDE PATTERN "${ITEM}" EXCLUDE) # endforeach () elseif (APPLE) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/Info.plist.in" "${CMAKE_BINARY_DIR}/Info.plist" @ONLY) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/linphone.icns" "${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}.icns" COPYONLY) - install(FILES "${CMAKE_BINARY_DIR}/Info.plist" DESTINATION "${APPLICATION_NAME}.app/Contents") - install(FILES "${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}.icns" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/Info.plist.in" "${CMAKE_CURRENT_BINARY_DIR}/../../Info.plist" @ONLY) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/linphone.icns" "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.icns" COPYONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../Info.plist" DESTINATION "${APPLICATION_NAME}.app/Contents") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.icns" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources") install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/Frameworks/" DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks" USE_SOURCE_PERMISSIONS) - install(PROGRAMS "${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}" DESTINATION "${APPLICATION_NAME}.app/Contents/MacOS") + install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}" DESTINATION "${APPLICATION_NAME}.app/Contents/MacOS") file(GLOB SHARED_LIBRARIES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/lib*.dylib") foreach (LIBRARY ${SHARED_LIBRARIES}) install(FILES "${LIBRARY}" DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks") endforeach () - - find_program(DEPLOYQT_PROGRAM macdeployqt) - if (NOT DEPLOYQT_PROGRAM) - message(FATAL_ERROR "Could not find the macdeployqt program. Make sure it is in the PATH.") - endif () - - if (EXISTS "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer") file(COPY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_LIBDIR}" USE_SOURCE_PERMISSIONS) endif () - install(FILES "${MINIZIP_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib" DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks/") + if(ENABLE_BUILD_VERBOSE) + message("Take Minizip from ${MINIZIP_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib") + endif() file(GLOB GRAMMAR_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/Belr/grammars/*") install(FILES ${GRAMMAR_FILES} DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/") install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/images" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}" USE_SOURCE_PERMISSIONS OPTIONAL) install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/sounds" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}" USE_SOURCE_PERMISSIONS) install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/Linphone/rootca.pem" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") - install(FILES "${LINPHONE_DESKTOP_DIR}/assets/linphonerc-factory" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") - install(FILES "${LINPHONE_DESKTOP_DIR}/assets/assistant/use-other-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") - install(FILES "${LINPHONE_DESKTOP_DIR}/assets/assistant/create-app-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") - install(FILES "${LINPHONE_DESKTOP_DIR}/assets/assistant/use-app-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphonerc-factory" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant/use-other-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant/create-app-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/assistant/use-app-sip-account.rc" DESTINATION "${APPLICATION_NAME}.app/Contents/Resources/${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}/assistant") - file(GLOB SHARED_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME}.app/Contents/Frameworks/lib*.dylib") + file(GLOB SHARED_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/../../${APPLICATION_NAME}.app/Contents/Frameworks/lib*.dylib") foreach (LIBRARY ${SHARED_LIBRARIES}) get_filename_component(LIBRARY_FILENAME ${LIBRARY} NAME) @@ -172,25 +167,31 @@ elseif (APPLE) execute_process(COMMAND install_name_tool -rpath "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}" "@executable_path/../Frameworks" "${LIBRARY}") endif() endforeach () - + install(FILES "${MINIZIP_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib" DESTINATION "${APPLICATION_NAME}.app/Contents/Frameworks/") + install( CODE "execute_process(COMMAND install_name_tool -id \"@executable_path/../Frameworks/libminizip.dylib\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/Frameworks/libminizip.dylib\")") + install( CODE "execute_process(COMMAND install_name_tool -change libminizip.dylib \"@executable_path/../Frameworks/libminizip.dylib\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/MacOS/${EXECUTABLE_NAME}\")") install( CODE "execute_process(COMMAND install_name_tool -add_rpath \"@executable_path/../Frameworks/\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/MacOS/${EXECUTABLE_NAME}\")") install( CODE "execute_process(COMMAND install_name_tool -add_rpath \"@executable_path/../lib/\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/MacOS/${EXECUTABLE_NAME}\")") if(ENABLE_APP_PACKAGING) + find_program(DEPLOYQT_PROGRAM macdeployqt) + if (NOT DEPLOYQT_PROGRAM) + message(FATAL_ERROR "Could not find the macdeployqt program. Make sure it is in the PATH.") + endif() install( CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app -qmldir=${LINPHONE_QML_DIR})") endif() if (LINPHONE_BUILDER_SIGNING_IDENTITY) - file(GLOB FRAMEWORKS_NAMES "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME}.app/Contents/Frameworks/*") + file(GLOB FRAMEWORKS_NAMES "${CMAKE_CURRENT_BINARY_DIR}/../../${APPLICATION_NAME}.app/Contents/Frameworks/*") foreach (FRAMEWORK ${FRAMEWORKS_NAMES}) execute_process(COMMAND "codesign" "--verbose" "-s" "${LINPHONE_BUILDER_SIGNING_IDENTITY}" "${FRAMEWORK}") endforeach () - file(GLOB PLUGINS_NAMES "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME}.app/Contents/PlugIns/*") + file(GLOB PLUGINS_NAMES "${CMAKE_CURRENT_BINARY_DIR}/../../${APPLICATION_NAME}.app/Contents/PlugIns/*") foreach (PLUGIN ${PLUGINS_NAMES}) file(GLOB PLUGINS_FILES "${PLUGIN}/*") foreach (PLUGIN_FILE ${PLUGINS_FILES}) execute_process(COMMAND "codesign" "--verbose" "-s" "${LINPHONE_BUILDER_SIGNING_IDENTITY}" "${PLUGIN_FILE}") endforeach () endforeach () - execute_process(COMMAND "codesign" "--verbose" "-s" "${LINPHONE_BUILDER_SIGNING_IDENTITY}" "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME}.app") + execute_process(COMMAND "codesign" "--verbose" "-s" "${LINPHONE_BUILDER_SIGNING_IDENTITY}" "${CMAKE_CURRENT_BINARY_DIR}/../../${APPLICATION_NAME}.app") endif () # install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME}.app" DESTINATION "." USE_SOURCE_PERMISSIONS) @@ -199,8 +200,7 @@ else()# Not Windows and Apple get_filename_component(LIBRARY_FILENAME ${LIBRARY} NAME) message("Changing RPATH of ${LIBRARY_FILENAME} from '${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}' to '$ORIGIN/../${CMAKE_INSTALL_LIBDIR}'") execute_process(COMMAND install_name_tool -rpath "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}" "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}" "${LIBRARY}") - endforeach () - message(${CMAKE_INSTALL_PREFIX}) + endforeach () install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}/" DESTINATION "${CMAKE_INSTALL_BINDIR}" USE_SOURCE_PERMISSIONS) #Just in case. This is useless because we have to use CMAKE_INSTALL_LIBDIR @@ -211,17 +211,28 @@ else()# Not Windows and Apple install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/lib64/" DESTINATION "lib64" USE_SOURCE_PERMISSIONS) endif() install(DIRECTORY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}" USE_SOURCE_PERMISSIONS) - - message("INSTALLATION : ${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/" ) - + if(ENABLE_BUILD_VERBOSE) + message("INSTALLATION : ${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/" ) + endif() if (EXISTS "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer") file(COPY "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/mediastreamer" DESTINATION "${CMAKE_INSTALL_LIBDIR}" USE_SOURCE_PERMISSIONS) endif () + # Install desktop/icon files. + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../assets/linphone.desktop.cmake" "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.desktop" @ONLY) + + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}.desktop" DESTINATION "${CMAKE_INSTALL_DATADIR}/applications") + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/images/linphone_logo.svg" DESTINATION "${CMAKE_INSTALL_DATADIR}/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_CURRENT_SOURCE_DIR}/../../assets/icons/hicolor/${DIR}/apps/icon.png" DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/${DIR}/apps/" RENAME "${EXECUTABLE_NAME}.png") + endforeach () + install(FILES "${MINIZIP_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libminizip.so" DESTINATION "${CMAKE_INSTALL_LIBDIR}") install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/cpim_grammar" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/") install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/vcard_grammar" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/belr/grammars/") install(FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/linphone/rootca.pem" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}") #We use executable_name because of name folder that is not harmonized from the SDK - install(PROGRAMS "${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}") + install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../../${EXECUTABLE_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}") endif () if (MSVC) @@ -271,19 +282,21 @@ if(${ENABLE_APP_PACKAGING}) set(CPACK_PACKAGE_VERSION_PATCH ${LINPHONE_MICRO_VERSION}) endif () set(CPACK_PACKAGE_EXECUTABLES "${EXECUTABLE_NAME};${APPLICATION_NAME}") - set(CPACK_RESOURCE_FILE_LICENSE "${LINPHONE_DESKTOP_DIR}/../LICENSE.txt") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../../../LICENSE.txt") set(CPACK_PACKAGE_INSTALL_DIRECTORY "${APPLICATION_NAME}") set(CPACK_PACKAGE_DIRECTORY "${CMAKE_INSTALL_PREFIX}/Packages") - set(CPACK_PACKAGE_ICON "${LINPHONE_DESKTOP_DIR}/assets/icon.ico") + set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") if (APPLE) set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${LINPHONE_GIT_REVISION}-mac") set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_CURRENT_SOURCE_DIR}/macos/background_dmg.jpg") - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/linphone_dmg.scpt.in" "linphone_dmg.scpt" @ONLY) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/macos/linphone_dmg.scpt.in" "${CMAKE_CURRENT_BINARY_DIR}/linphone_dmg.scpt" @ONLY) set(CPACK_DMG_DS_STORE_SETUP_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/linphone_dmg.scpt") set(CPACK_BINARY_DRAGNDROP ON) + message(STATUS "Set DragNDrop CPack generator in OUTPUT/Packages") elseif(NOT(WIN32)) - set(CPACK_BINARY_TGZ ON) + set(DO_APPIMAGE YES) + message(STATUS "Set AppImage CPack generator in OUTPUT/Packages") else() set(CPACK_GENERATOR "NSIS") set(DO_GENERATOR YES) @@ -295,8 +308,8 @@ if(${ENABLE_APP_PACKAGING}) # and ensure that linphone is not running before installation. set(CPACK_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/windows") set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\windows\\\\nsis_banner.bmp") - set(CPACK_NSIS_MUI_ICON "${LINPHONE_DESKTOP_DIR}/assets/icon.ico") - set(CPACK_NSIS_MUI_UNIICON "${LINPHONE_DESKTOP_DIR}/assets/icon.ico") + set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") + set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") set(CPACK_NSIS_DISPLAY_NAME "${APPLICATION_NAME}") if (LINPHONE_MICRO_VERSION) set(CPACK_NSIS_PACKAGE_NAME "${APPLICATION_NAME} ${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}.${LINPHONE_MICRO_VERSION}") @@ -311,13 +324,14 @@ if(${ENABLE_APP_PACKAGING}) set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "!include \\\"${ESCAPED_DOS_STYLE_BINARY_DIR}\\\\install.nsi\\\"") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/uninstall.nsi.in" "${CMAKE_CURRENT_BINARY_DIR}/uninstall.nsi" COPYONLY) set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "!include \\\"${ESCAPED_DOS_STYLE_BINARY_DIR}\\\\uninstall.nsi\\\"") + message(STATUS "Set NSIS CPack generator in OUTPUT/Packages") else () set(PACKAGE_EXT "msi") set(CPACK_WIX_UPGRADE_GUID "C748668E-53D0-4088-A548-E33A76615A3B") - set(CPACK_WIX_PRODUCT_ICON "${LINPHONE_DESKTOP_DIR}/assets/icon.ico") + set(CPACK_WIX_PRODUCT_ICON "${CMAKE_CURRENT_SOURCE_DIR}/../../assets/icon.ico") set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "${APPLICATION_URL}") - + message(STATUS "Set MSI CPack generator in OUTPUT/Packages") # TODO: Deal with install/uninstall.nsi endif () diff --git a/linphone-app/cmake_builder/linphone_package/packaging.cmake.in b/linphone-app/cmake_builder/linphone_package/packaging.cmake.in index 0026d703a..89d63060c 100644 --- a/linphone-app/cmake_builder/linphone_package/packaging.cmake.in +++ b/linphone-app/cmake_builder/linphone_package/packaging.cmake.in @@ -22,8 +22,9 @@ set(DO_TGZ @CPACK_BINARY_TGZ@) set(DO_TZ @CPACK_BINARY_TZ@) set(DO_STGZ @CPACK_BINARY_STGZ@) -set(DO_DRAGANDDROP @CPACK_BINARY_DRAGNDROP@) +set(DO_DRAGNDROP @CPACK_BINARY_DRAGNDROP@) set(DO_GENERATOR @DO_GENERATOR@) +set(DO_APPIMAGE @DO_APPIMAGE@) if (NOT "${CMAKE_INSTALL_PREFIX}" MATCHES .*/_CPack_Packages/.*) @@ -45,8 +46,8 @@ if (NOT "${CMAKE_INSTALL_PREFIX}" MATCHES .*/_CPack_Packages/.*) message(FATAL_ERROR "Failed to create STGZ package!") endif() endif() - if(DO_DRAGANDDROP) - execute_process( COMMAND ${CMAKE_CPACK_COMMAND} -G DragAndDrop RESULT_VARIABLE CPACK_COMMAND_RESULT) + 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() @@ -57,6 +58,14 @@ if (NOT "${CMAKE_INSTALL_PREFIX}" MATCHES .*/_CPack_Packages/.*) message(FATAL_ERROR "Failed to create @CPACK_GENERATOR@ package!") endif() endif() + if(DO_APPIMAGE) +# execute_process( COMMAND cp -rfv "@CMAKE_SOURCE_DIR@/../tools/linuxdeploy-x86_64.AppImage" "@CMAKE_INSTALL_PREFIX@/..") +# execute_process( COMMAND chmod +x "@CMAKE_INSTALL_PREFIX@/../linuxdeploy-x86_64.AppImage") + execute_process( COMMAND "@CMAKE_SOURCE_DIR@/../tools/create_appimage.sh" 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_SOURCE_DIR@/../tools/create_appimage.sh 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@) execute_process( COMMAND @SIGNTOOL_COMMAND@ @CMAKE_CURRENT_BINARY_DIR@/@CPACK_PACKAGE_FILE_NAME@.@PACKAGE_EXT@ diff --git a/linphone-app/src/app/AppController.cpp b/linphone-app/src/app/AppController.cpp index 8ff45ec84..4954ad859 100644 --- a/linphone-app/src/app/AppController.cpp +++ b/linphone-app/src/app/AppController.cpp @@ -42,14 +42,14 @@ AppController::AppController (int &argc, char *argv[]) { Q_ASSERT(!mApp); // Disable QML cache. Avoid malformed cache. qputenv("QML_DISABLE_DISK_CACHE", "true"); + QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling, true); + // Useful to share camera on Fullscreen (other context). + QApplication::setAttribute(Qt::AA_ShareOpenGLContexts); mApp = new App(argc, argv); // --------------------------------------------------------------------------- - QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling, true); - // Useful to share camera on Fullscreen (other context). - QApplication::setAttribute(Qt::AA_ShareOpenGLContexts); // --------------------------------------------------------------------------- // App creation. diff --git a/linphone-sdk b/linphone-sdk index f8422b1ca..30d17ef65 160000 --- a/linphone-sdk +++ b/linphone-sdk @@ -1 +1 @@ -Subproject commit f8422b1cadbbe24277a7289a479580f9c8b8f302 +Subproject commit 30d17ef6505f75f938943db373c6c617baa28028 diff --git a/submodules/externals/minizip b/submodules/externals/minizip index 470f4c8ef..40b728857 160000 --- a/submodules/externals/minizip +++ b/submodules/externals/minizip @@ -1 +1 @@ -Subproject commit 470f4c8ef31925b591aac522a2d4187baf8f54dd +Subproject commit 40b728857cd0cedfe8a122861cb6944cbcdcf2ac diff --git a/tools/create_appimage.sh b/tools/create_appimage.sh new file mode 100755 index 000000000..181a0acf9 --- /dev/null +++ b/tools/create_appimage.sh @@ -0,0 +1,46 @@ +#!/bin/bash +## +## Copyright (c) 2010-2020 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 . +## + +APP_NAME="linphone" + +BIN_SOURCE_DIR="OUTPUT/" + +WORK_DIR="WORK/Packages/AppImageDir" + +mkdir -p "${WORK_DIR}/app/" +mkdir -p "${WORK_DIR}/usr/share" + +cp -rfv "${BIN_SOURCE_DIR}"/* "${WORK_DIR}/app/" +rm -rfv "${WORK_DIR}/app/Packages" +cp -rfv "${WORK_DIR}/app/share" "${WORK_DIR}/usr/" + +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 + chmod +x "${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage" +fi + +./${WORK_DIR}/AppBin/linuxdeploy-x86_64.AppImage --appdir=${WORK_DIR}/ -e ${WORK_DIR}/app/bin/linphone --output appimage --desktop-file=${WORK_DIR}/app/share/applications/linphone.desktop -i ${WORK_DIR}/app/share/icons/hicolor/scalable/apps/linphone.svg +#./linuxdeploy-x86_64.AppImage --appdir=${WORK_DIR}/ -e ${WORK_DIR}/app/bin/linphone --output appimage --desktop-file=${WORK_DIR}/app/share/applications/linphone.desktop -i ${WORK_DIR}/app/share/icons/hicolor/scalable/apps/linphone.svg + +mkdir -p "${BIN_SOURCE_DIR}/Packages" +mv Linphone*.AppImage "${BIN_SOURCE_DIR}/Packages" diff --git a/tools/linuxdeploy-x86_64.AppImage b/tools/linuxdeploy-x86_64.AppImage new file mode 100755 index 000000000..ab12118d3 Binary files /dev/null and b/tools/linuxdeploy-x86_64.AppImage differ