Update CI files

This commit is contained in:
Julien Wadel 2023-10-05 16:29:40 +02:00
parent 68e29b2637
commit 21f002105f
17 changed files with 709 additions and 141 deletions

View file

@ -100,7 +100,7 @@ job-archlinux-latest-ninja-clang-novideo:
# - $NIGHTLY_MASTER # - $NIGHTLY_MASTER
# - $DEPLOY_LINUX # - $DEPLOY_LINUX
# variables: # variables:
# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON # CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_GPL_THIRD_PARTIES=ON
# extends: job-archlinux-latest-makefile-clang # extends: job-archlinux-latest-makefile-clang
# artifacts: # artifacts:
# paths: # paths:

View file

@ -74,7 +74,7 @@ job-centos7-ninja-gcc-package:
variables: variables:
- $DEPLOY_LINUX_CENTOS7 - $DEPLOY_LINUX_CENTOS7
variables: variables:
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
CMAKE_GENERATOR: Ninja CMAKE_GENERATOR: Ninja
CC: gcc CC: gcc
CXX: g++ CXX: g++

View file

@ -1,7 +1,9 @@
.factorize_debian10: &docker_image_platform_and_runner_tag
tags: [ "docker" ]
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
job-debian10-ninja-gcc: job-debian10-ninja-gcc:
tags: [ "docker-debian10" ]
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
except: except:
refs: refs:
- schedules - schedules
@ -11,14 +13,13 @@ job-debian10-ninja-gcc:
CC: gcc CC: gcc
CXX: g++ CXX: g++
extends: .job-linux-desktop extends: .job-linux-desktop
<<: *docker_image_platform_and_runner_tag
################################################# #################################################
# Nightly # Nightly
################################################# #################################################
job-debian10-makefile-gcc: job-debian10-makefile-gcc:
tags: [ "docker-debian10" ]
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
only: only:
variables: variables:
- $NIGHTLY_MASTER - $NIGHTLY_MASTER
@ -29,25 +30,19 @@ job-debian10-makefile-gcc:
CXX: g++ CXX: g++
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
extends: .job-linux-desktop extends: .job-linux-desktop
<<: *docker_image_platform_and_runner_tag
job-debian10-ninja-gcc-novideo: job-debian10-ninja-gcc-novideo:
tags: [ "docker-debian10" ]
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
only: only:
variables: variables:
- $NIGHTLY_MASTER - $NIGHTLY_MASTER
variables: variables:
CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF
CMAKE_GENERATOR: Ninja extends: job-debian10-ninja-gcc
CC: gcc
CXX: g++
extends: .job-linux-desktop
job-debian10-ninja-gcc-smallsdk: job-debian10-ninja-gcc-smallsdk:
tags: [ "docker-debian10" ]
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
only: only:
variables: variables:
- $NIGHTLY_MASTER - $NIGHTLY_MASTER
@ -57,20 +52,20 @@ job-debian10-ninja-gcc-smallsdk:
CC: gcc CC: gcc
CXX: g++ CXX: g++
extends: .job-linux-desktop extends: .job-linux-desktop
<<: *docker_image_platform_and_runner_tag
job-debian10-ninja-clang: job-debian10-ninja-clang:
tags: [ "docker-debian10" ]
only: only:
variables: variables:
- $NIGHTLY_MASTER - $NIGHTLY_MASTER
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
variables: variables:
CMAKE_GENERATOR: Ninja CMAKE_GENERATOR: Ninja
CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
CC: clang CC: clang
CXX: clang++ CXX: clang++
extends: .job-linux-desktop extends: .job-linux-desktop
<<: *docker_image_platform_and_runner_tag
job-debian10-ninja-clang-novideo: job-debian10-ninja-clang-novideo:
@ -78,12 +73,10 @@ job-debian10-ninja-clang-novideo:
variables: variables:
- $NIGHTLY_MASTER - $NIGHTLY_MASTER
variables: variables:
CMAKE_OPTIONS: -DENABLE_VIDEO=NO CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF
extends: job-debian10-ninja-clang extends: job-debian10-ninja-clang
job-debian10-makefile-clang: job-debian10-makefile-clang:
tags: [ "docker-debian10" ]
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
only: only:
variables: variables:
- $NIGHTLY_MASTER - $NIGHTLY_MASTER
@ -95,39 +88,77 @@ job-debian10-makefile-clang:
CXX: clang++ CXX: clang++
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
extends: .job-linux-desktop extends: .job-linux-desktop
<<: *docker_image_platform_and_runner_tag
################################################# #################################################
# Package - Nightly # Package - Nightly
################################################# #################################################
job-debian10-makefile-clang-package: job-debian10-makefile-gcc-package:
stage: package stage: package
tags: [ "docker-debian10" ] tags: [ "docker-test-liblinphone" ]
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
dependencies: [] dependencies: []
only: only:
variables: variables:
- $NIGHTLY_MASTER - $NIGHTLY_MASTER
- $PACKAGE_LINUX
- $DEPLOY_LINUX - $DEPLOY_LINUX
variables: variables:
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
extends: job-debian10-makefile-clang CMAKE_GENERATOR: Unix Makefiles
CC: gcc
CXX: g++
APPIMAGETOOL_SIGN_PASSPHRASE: $GPG_SIGNING_PASS
extends: .job-linux-desktop
script:
- echo "$GPG_SIGNING_PUB" > file.key && sed -i 's/\r /\n/g' file.key && chmod 600 file.key
- gpg --import file.key
- rm -f file.key
- echo "$GPG_SIGNING_KEY" > file.key && sed -i 's/\r /\n/g' file.key && chmod 600 file.key
- base64 -w 0 file.key | base64 -d | gpg --import --no-tty --batch --yes
- rm -f file.key
- cmake --version
- export CC=$CC
- export CXX=$CXX
- mkdir -p build/OUTPUT
- echo $CI_BUILD_TYPE
- echo $CMAKE_GENERATOR
- echo $DEFAULT_LINUX_CMAKE_OPTIONS
- echo $CMAKE_SANITIZER_OPTIONS
- 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
artifacts: artifacts:
paths: paths:
- build/OUTPUT/Packages/Linphone*.AppImage - build/OUTPUT/*
expire_in: 1 week expire_in: 1 week
################################################# #################################################
# Deploy - Nightly # Deploy - Nightly
################################################# #################################################
job-debian10-makefile-clang-deploy: #job-debian10-makefile-gcc-deploy:
stage: deploy # stage: deploy
tags: [ "docker-debian10" ] # tags: [ "docker" ]
dependencies: # dependencies:
- job-debian10-makefile-clang-package # - job-debian10-makefile-gcc-package
only: # only:
variables: # variables:
- $NIGHTLY_MASTER # - $NIGHTLY_MASTER
- $DEPLOY_LINUX # - $DEPLOY_LINUX
script: # script:
- scp build/OUTPUT/Packages/Linphone*.AppImage $DEPLOY_SERVER:$APPIMAGE_UPLOAD_DIRECTORY/ # - rsync -rlv --ignore-existing build/OUTPUT/Packages/*.AppImage $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM/$APP_FOLDER
# - rsync -rlv build/OUTPUT/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM
# - rsync -rlv build/OUTPUT/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM
#job-debian10-makefile-gcc-plugins-deploy:
# stage: deploy
# tags: [ "deploy" ]
# needs:
# - job-debian10-makefile-gcc
# only:
# variables:
# - $DEPLOY_PLUGINS
# script:
# - rsync -rlv --ignore-existing build/OUTPUT/plugins/app/*.so $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM/$APP_FOLDER/plugins/

View file

@ -0,0 +1,179 @@
.factorize_ubuntu1804: &docker_image_platform_and_runner_tag
tags: [ "docker" ]
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu-18-04-lts:$UBUNTU_1804_IMAGE_VERSION
job-ubuntu1804-ninja-gcc:
except:
refs:
- schedules
variables:
CMAKE_GENERATOR: Ninja
CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON
CC: gcc
CXX: g++
extends: .job-linux-desktop
<<: *docker_image_platform_and_runner_tag
job-ubuntu1804-ninja-gcc-smallsdk:
except:
refs:
- schedules
variables:
CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_ADVANCED_IM=NO -DENABLE_DB_STORAGE=NO -DENABLE_PQCRYPTO=OFF
extends: job-ubuntu1804-ninja-gcc
#################################################
# Nightly
#################################################
job-ubuntu1804-makefile-gcc:
only:
variables:
- $NIGHTLY_MASTER
variables:
CMAKE_GENERATOR: Unix Makefiles
CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON
CC: gcc
CXX: g++
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
extends: .job-linux-desktop
<<: *docker_image_platform_and_runner_tag
job-ubuntu1804-ninja-gcc-novideo:
only:
variables:
- $NIGHTLY_MASTER
variables:
CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF
extends: job-ubuntu1804-ninja-gcc
job-ubuntu1804-ninja-clang:
only:
variables:
- $NIGHTLY_MASTER
variables:
CMAKE_OPTIONS: -DENABLE_DOC=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
CMAKE_GENERATOR: Ninja
CC: clang
CXX: clang++
extends: .job-linux-desktop
<<: *docker_image_platform_and_runner_tag
job-ubuntu1804-ninja-clang-novideo:
only:
variables:
- $NIGHTLY_MASTER
variables:
CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF
extends: job-ubuntu1804-ninja-clang
job-ubuntu1804-makefile-gcc:
only:
variables:
- $NIGHTLY_MASTER
- $DEPLOY_PLUGINS
variables:
CMAKE_OPTIONS: -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
CMAKE_GENERATOR: Unix Makefiles
CC: gcc
CXX: g++
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
APPIMAGETOOL_SIGN_PASSPHRASE: $GPG_SIGNING_PASS
script:
- echo "$GPG_SIGNING_PUB" > file.key && sed -i 's/\r /\n/g' file.key && chmod 600 file.key
- gpg --import file.key
- rm -f file.key
- echo "$GPG_SIGNING_KEY" > file.key && sed -i 's/\r /\n/g' file.key && chmod 600 file.key
- base64 -w 0 file.key | base64 -d | gpg --import --no-tty --batch --yes
- rm -f file.key
- cmake --version
- export CC=$CC
- export CXX=$CXX
- mkdir -p build/OUTPUT
- echo $CI_BUILD_TYPE
- echo $CMAKE_GENERATOR
- echo $DEFAULT_LINUX_CMAKE_OPTIONS
- echo $CMAKE_SANITIZER_OPTIONS
- 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
extends: .job-linux-desktop
<<: *docker_image_platform_and_runner_tag
#################################################
# Package - Nightly
#################################################
job-ubuntu1804-makefile-gcc-package:
stage: package
tags: [ "docker-test-liblinphone" ]
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu-18-04-lts:$UBUNTU_1804_IMAGE_VERSION
dependencies: []
only:
variables:
- $NIGHTLY_MASTER
- $PACKAGE_LINUX
- $DEPLOY_LINUX
variables:
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_BUILDER_SIGNING_IDENTITY=$GPG_SIGNING_KEYID -DENABLE_G729=ON -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$LINUX_PLATFORM/$APP_FOLDER -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
CMAKE_GENERATOR: Unix Makefiles
CC: gcc
CXX: g++
APPIMAGETOOL_SIGN_PASSPHRASE: $GPG_SIGNING_PASS
extends: .job-linux-desktop
script:
- echo "$GPG_SIGNING_PUB" > file.key && sed -i 's/\r /\n/g' file.key && chmod 600 file.key
- gpg --import file.key
- rm -f file.key
- echo "$GPG_SIGNING_KEY" > file.key && sed -i 's/\r /\n/g' file.key && chmod 600 file.key
- base64 -w 0 file.key | base64 -d | gpg --import --no-tty --batch --yes
- rm -f file.key
- cmake --version
- export CC=$CC
- export CXX=$CXX
- mkdir -p build/OUTPUT
- echo $CI_BUILD_TYPE
- echo $CMAKE_GENERATOR
- echo $DEFAULT_LINUX_CMAKE_OPTIONS
- echo $CMAKE_SANITIZER_OPTIONS
- 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
artifacts:
paths:
- build/OUTPUT/*
expire_in: 1 week
#################################################
# Deploy - Nightly
#################################################
#job-ubuntu1804-makefile-gcc-deploy:
# stage: deploy
# tags: [ "deploy" ]
# needs:
# - job-ubuntu1804-makefile-gcc-package
# only:
# variables:
# - $NIGHTLY_MASTER
# - $DEPLOY_LINUX
# script:
# - rsync -rlv --ignore-existing build/OUTPUT/Packages/*.AppImage $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM/$APP_FOLDER
# - rsync -rlv build/OUTPUT/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM
# - rsync -rlv build/OUTPUT/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM
#job-ubuntu1804-makefile-gcc-plugins-deploy:
# stage: deploy
# tags: [ "deploy" ]
# needs:
# - job-ubuntu1804-makefile-gcc
# only:
# variables:
# - $DEPLOY_PLUGINS
# script:
# - rsync -rlv --ignore-existing build/OUTPUT/plugins/app/*.so $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$LINUX_PLATFORM/$APP_FOLDER/plugins/

View file

@ -92,7 +92,7 @@ job-ubuntu-rolling-ninja-clang-novideo:
# - $NIGHTLY_MASTER # - $NIGHTLY_MASTER
# - $DEPLOY_LINUX # - $DEPLOY_LINUX
# variables: # variables:
# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON # CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_GPL_THIRD_PARTIES=ON
# extends: job-ubuntu-rolling-makefile-clang # extends: job-ubuntu-rolling-makefile-clang
# artifacts: # artifacts:
# paths: # paths:

View file

@ -5,8 +5,10 @@
.build_all_script: &build_all_script | .build_all_script: &build_all_script |
ccache -s ccache -s
export Qt5_DIR=~/Qt/$QT_MAC_VER/lib/cmake/Qt5 export Qt6_DIR=~/Qt/$QT_MAC_VER/lib/cmake/Qt6
echo $Qt6_DIR
export PATH=~/Qt/$QT_MAC_VER/bin:$PATH export PATH=~/Qt/$QT_MAC_VER/bin:$PATH
echo $PATH
if [ -d "build" ]; then rm -rf build; fi; if [ -d "build" ]; then rm -rf build; fi;
mkdir -p build/OUTPUT mkdir -p build/OUTPUT
cd build cd build
@ -16,22 +18,18 @@
echo $DEFAULT_MACOS_CMAKE_OPTIONS echo $DEFAULT_MACOS_CMAKE_OPTIONS
echo $CMAKE_OPTIONS echo $CMAKE_OPTIONS
echo $ADDITIONAL_BUILD_OPTIONS echo $ADDITIONAL_BUILD_OPTIONS
cmake .. -G "$CMAKE_GENERATOR" -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 -DCMAKE_BUILD_TYPE=$CI_BUILD_TYPE $DEFAULT_MACOS_CMAKE_OPTIONS $XCODE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS -DLINPHONE_BUILDER_SIGNING_IDENTITY="$MACOS_SIGNING_IDENTITY" -DLINPHONESDK_MACOS_ARCHS="$LINPHONESDK_MACOS_ARCHS" -DLINPHONESDK_OPENSSL_ROOT_DIR_X86_64="$LINPHONESDK_OPENSSL_ROOT_DIR_X86_64" -DLINPHONESDK_OPENSSL_ROOT_DIR_ARM64="$LINPHONESDK_OPENSSL_ROOT_DIR_ARM64" $RELEASE_FILE cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_BUILD_TYPE=$CI_BUILD_TYPE $DEFAULT_MACOS_CMAKE_OPTIONS -DLINPHONE_BUILDER_SIGNING_IDENTITY="$MACOS_SIGNING_IDENTITY" $XCODE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $RELEASE_FILE
cmake --build . --target install --config $CI_BUILD_TYPE $LBC_NODEBUG_OPTIONS -- $ADDITIONAL_BUILD_OPTIONS cmake --build . --target install --config $CI_BUILD_TYPE $LBC_NODEBUG_OPTIONS -- $ADDITIONAL_BUILD_OPTIONS
ccache -s ccache -s
.job-macosx-desktop: .job-macosx-desktop:
stage: build stage: build
tags: [ "macmini-m1-bis-xcode13" ] tags: [ "macos-xcode13" ]
script: script:
- *build_all_script - *build_all_script
variables:
LINPHONESDK_MACOS_ARCHS: "x86_64"
LINPHONESDK_OPENSSL_ROOT_DIR_X86_64: "/usr/local/opt/openssl@1.1"
LINPHONESDK_OPENSSL_ROOT_DIR_ARM64: "/opt/homebrew/opt/openssl@1.1"
artifacts: artifacts:
paths: paths:
- build/OUTPUT - build/OUTPUT/*
when: always when: always
expire_in: 1 week expire_in: 1 week
@ -39,13 +37,14 @@
# On each push # On each push
################################################# #################################################
#TODO: reactivate pcrypto when liboqs is fixed for 'Vortex' CPU.
job-macosx-ninja: job-macosx-ninja:
except: except:
refs: refs:
- schedules - schedules
variables: variables:
CMAKE_GENERATOR: Ninja CMAKE_GENERATOR: Ninja
CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CMAKE_OPTIONS: -DENABLE_PQCRYPTO=OFF
extends: .job-macosx-desktop extends: .job-macosx-desktop
################################################# #################################################
@ -59,7 +58,7 @@ job-macosx-makefile:
- $DEPLOY_PLUGINS - $DEPLOY_PLUGINS
variables: variables:
CMAKE_GENERATOR: Unix Makefiles CMAKE_GENERATOR: Unix Makefiles
CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON CMAKE_OPTIONS: -DENABLE_PQCRYPTO=OFF
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
extends: .job-macosx-desktop extends: .job-macosx-desktop
@ -68,7 +67,7 @@ job-macosx-ninja-novideo:
variables: variables:
- $NIGHTLY_MASTER - $NIGHTLY_MASTER
variables: variables:
CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=ON CMAKE_OPTIONS: -DENABLE_VIDEO=OFF -DENABLE_PQCRYPTO=OFF
CMAKE_GENERATOR: Ninja CMAKE_GENERATOR: Ninja
extends: .job-macosx-desktop extends: .job-macosx-desktop
@ -90,7 +89,7 @@ job-macosx-ninja-novideo:
# WAIT for QT6 for arm64 # WAIT for QT6 for arm64
job-macosx-makefile-package: job-macosx-makefile-package:
stage: package stage: package
tags: [ "macmini-m1-bis-xcode13" ] tags: [ "macos-xcode13" ]
dependencies: [] dependencies: []
only: only:
variables: variables:
@ -98,9 +97,8 @@ job-macosx-makefile-package:
- $PACKAGE_MACOSX - $PACKAGE_MACOSX
- $DEPLOY_MACOSX - $DEPLOY_MACOSX
variables: variables:
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=ON -DENABLE_GPL_THIRD_PARTIES=ON -DENABLE_G729=ON
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$MACOSX_PLATFORM/$APP_FOLDER RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$MACOSX_PLATFORM/$APP_FOLDER
LINPHONESDK_MACOS_ARCHS: "x86_64"
extends: job-macosx-makefile extends: job-macosx-makefile
script: script:
- if [[ $MAKE_RELEASE_FILE_URL == "" ]]; then export RELEASE_FILE=""; fi - if [[ $MAKE_RELEASE_FILE_URL == "" ]]; then export RELEASE_FILE=""; fi
@ -114,7 +112,7 @@ job-macosx-makefile-package:
job-macosx-codesigning: job-macosx-codesigning:
stage: signing stage: signing
tags: [ "macmini-m1-bis-xcode13" ] tags: [ "macos-xcode13" ]
needs: needs:
- job-macosx-makefile-package - job-macosx-makefile-package
only: only:
@ -124,7 +122,7 @@ job-macosx-codesigning:
- $DEPLOY_MACOSX - $DEPLOY_MACOSX
script: script:
- cd build - cd build
- codesign --options runtime,library --verbose -s "$MACOS_SIGNING_IDENTITY" OUTPUT/Packages/*.dmg - codesign --timestamp --options runtime,library --verbose -s "$MACOS_SIGNING_IDENTITY" OUTPUT/linphone-app/macos/Packages/Linphone*.dmg
- ./../tools/app_notarization.sh - ./../tools/app_notarization.sh
artifacts: artifacts:
when: always when: always
@ -137,32 +135,32 @@ job-macosx-codesigning:
# Deploy - Nightly # Deploy - Nightly
################################################# #################################################
job-macosx-makefile-deploy: #job-macosx-makefile-deploy:
stage: deploy # stage: deploy
tags: [ "macmini-m1-bis-xcode13" ] # tags: [ "macos-xcode13" ]
needs: # needs:
- job-macosx-codesigning # - job-macosx-codesigning
only: # only:
variables: # variables:
- $NIGHTLY_MASTER # - $NIGHTLY_MASTER
- $DEPLOY_MACOSX # - $DEPLOY_MACOSX
script: # script:
- rsync -rlv --ignore-existing build/OUTPUT/Packages/Linphone*.dmg $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER # - rsync -rlv --ignore-existing build/OUTPUT/linphone-app/macos/Packages/Linphone*.dmg $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER
- |- # - |-
if [[ $MAKE_RELEASE_FILE_URL != "" ]]; then # if [[ $MAKE_RELEASE_FILE_URL != "" ]]; then
rsync -rlv build/OUTPUT/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM # rsync -rlv build/OUTPUT/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM
rsync -rlv build/OUTPUT/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM # rsync -rlv build/OUTPUT/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM
fi # fi
job-macosx-makefile-plugins-deploy: #job-macosx-makefile-plugins-deploy:
stage: deploy # stage: deploy
tags: [ "macmini-m1-bis-xcode13" ] # tags: [ "macos-xcode13" ]
needs: # needs:
- job-macosx-makefile # - job-macosx-makefile
only: # only:
variables: # variables:
- $DEPLOY_PLUGINS # - $DEPLOY_PLUGINS
script: # script:
- rsync -rlv --ignore-existing build/OUTPUT/plugins/app/*.dylib $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER/plugins # - rsync -rlv --ignore-existing build/OUTPUT/plugins/app/*.dylib $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER/plugins

View file

@ -10,7 +10,7 @@
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
- if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null - if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
variables: variables:
CMAKE_OPTIONS: -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON CMAKE_OPTIONS: -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
LINPHONESDK_PLATFORM: Desktop LINPHONESDK_PLATFORM: Desktop
OUTPUT_ZIP_FOLDER: win64 OUTPUT_ZIP_FOLDER: win64
MINGW_TYPE: mingw64 MINGW_TYPE: mingw64
@ -84,9 +84,6 @@
- if ($SHOW_SEARCH_STATUS_SCRIPT) { Invoke-Expression "$SHOW_SEARCH_STATUS_SCRIPT" } else { Write-Output "SHOW_SEARCH_STATUS_SCRIPT is null" } - if ($SHOW_SEARCH_STATUS_SCRIPT) { Invoke-Expression "$SHOW_SEARCH_STATUS_SCRIPT" } else { Write-Output "SHOW_SEARCH_STATUS_SCRIPT is null" }
- if ($LAUNCH_SEARCH_STATUS_SCRIPT) { Invoke-Expression "$LAUNCH_SEARCH_STATUS_SCRIPT" -ErrorAction stop } else { Write-Output "LAUNCH_SEARCH_STATUS_SCRIPT is null" } - if ($LAUNCH_SEARCH_STATUS_SCRIPT) { Invoke-Expression "$LAUNCH_SEARCH_STATUS_SCRIPT" -ErrorAction stop } else { Write-Output "LAUNCH_SEARCH_STATUS_SCRIPT is null" }
- C:\PROGRA~1\Python37\Scripts\cl -s - C:\PROGRA~1\Python37\Scripts\cl -s
- cd linphone-sdk
- mkdir $OUTPUT_ZIP_FOLDER
- Copy-Item -Path "*.zip" -Destination "$CI_PROJECT_DIR/build-desktop/linphone-sdk/$OUTPUT_ZIP_FOLDER" -Recurse
################ ################
artifacts: artifacts:
@ -95,13 +92,14 @@
- build-desktop\ninja_buildlog.txt - build-desktop\ninja_buildlog.txt
- build-desktop\invertSearch.ps1 - build-desktop\invertSearch.ps1
- build-desktop\OUTPUT\* - build-desktop\OUTPUT\*
- build-desktop\external\linphone-sdk\openh264-prefix\src\openh264-stamp\*
when: always when: always
expire_in: 1 week expire_in: 1 week
.windows-vs2019-msvc: .windows-vs2019-msvc:
extends: .windows-vs2019 extends: .windows-vs2019
variables: variables:
CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
LINPHONESDK_PLATFORM: Desktop LINPHONESDK_PLATFORM: Desktop
CMAKE_GENERATOR: "Visual Studio 16 2019" CMAKE_GENERATOR: "Visual Studio 16 2019"
BUILD_TARGET: install BUILD_TARGET: install
@ -157,35 +155,35 @@ vs2019-win64-package:
- if: $PACKAGE_WINDOWS - if: $PACKAGE_WINDOWS
- if: $DEPLOY_WINDOWS - if: $DEPLOY_WINDOWS
variables: variables:
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER
################################################# #################################################
# DEPLOY # DEPLOY
################################################# #################################################
vs2019-win64-upload: #vs2019-win64-upload:
stage: deploy # stage: deploy
tags: [ "windows-powershell"] # tags: [ "windows-powershell"]
rules: # rules:
- if: $NIGHTLY_MASTER # - if: $NIGHTLY_MASTER
- if: $DEPLOY_WINDOWS # - if: $DEPLOY_WINDOWS
needs: # needs:
- vs2019-win64-package # - vs2019-win64-package
script: # script:
- scp -pr build-desktop/OUTPUT/Packages/*.exe ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/${APP_FOLDER} # - scp -pr build-desktop/OUTPUT/Packages/*.exe ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/${APP_FOLDER}
- if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/RELEASE ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ } # - if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/RELEASE ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
- if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/RELEASE ${MAIN_DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ } # - if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/RELEASE ${MAIN_DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
vs2019-win64-plugins-upload: #vs2019-win64-plugins-upload:
stage: deploy # stage: deploy
tags: [ "windows"] # tags: [ "windows"]
rules: # rules:
- if: $DEPLOY_PLUGINS # - if: $DEPLOY_PLUGINS
needs: # needs:
- vs2019-win64-scheduled-windows # - vs2019-win64-scheduled-windows
script: # script:
- scp "build-desktop/OUTPUT/plugins/app/*.dll" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%/plugins" # - scp "build-desktop/OUTPUT/plugins/app/*.dll" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%/plugins"

View file

@ -26,6 +26,7 @@ variables:
DEBIAN_9_QT_IMAGE_VERSION: 20230417_qtopen_gstreamer DEBIAN_9_QT_IMAGE_VERSION: 20230417_qtopen_gstreamer
DEBIAN_10_IMAGE_VERSION: 20210217_python3 DEBIAN_10_IMAGE_VERSION: 20210217_python3
UBUNTU_ROLLING_IMAGE_VERSION: 20211012_add_qtwebview UBUNTU_ROLLING_IMAGE_VERSION: 20211012_add_qtwebview
UBUNTU_1804_IMAGE_VERSION: 20230706_add_deps_for_av1
workflow: workflow:
@ -48,13 +49,13 @@ workflow:
include: include:
# - '.gitlab-ci-files/job-linux-prepare.yml' # - '.gitlab-ci-files/job-linux-prepare.yml'
# - '.gitlab-ci-files/job-linux-desktop.yml' # - '.gitlab-ci-files/job-linux-desktop.yml'
# - '.gitlab-ci-files/job-linux-desktop-debian9.yml' # - '.gitlab-ci-files/job-linux-desktop-ubuntu-1804.yml'
# - '.gitlab-ci-files/job-windows-desktop.yml' - '.gitlab-ci-files/job-windows-desktop.yml'
# - '.gitlab-ci-files/job-macosx-desktop.yml' - '.gitlab-ci-files/job-macosx-desktop.yml'
#stages: stages:
# - build - build
# - package - package
# - signing - signing
# - deploy - deploy

View file

@ -183,6 +183,7 @@ endif()
# Set some SDK variables to configure the APP build as we want it # Set some SDK variables to configure the APP build as we want it
set(ENABLE_CXX_WRAPPER ON CACHE BOOL "Build the C++ wrapper for Liblinphone." FORCE) set(ENABLE_CXX_WRAPPER ON CACHE BOOL "Build the C++ wrapper for Liblinphone." FORCE)
set(ENABLE_CSHARP_WRAPPER OFF CACHE BOOL "Build the CSharp wrapper for Liblinphone." FORCE)
set(ENABLE_THEORA OFF) set(ENABLE_THEORA OFF)
set(ENABLE_QT_GL ${ENABLE_VIDEO}) set(ENABLE_QT_GL ${ENABLE_VIDEO})
@ -251,4 +252,4 @@ else()
include(cmake/TasksMacos.cmake) include(cmake/TasksMacos.cmake)
endif() endif()
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/hook/pre-commit" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/") file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/hook/pre-commit" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/")

View file

@ -37,10 +37,15 @@ set(QT_PACKAGES Core Quick Qml Widgets)# Search Core at first for initialize Qt
find_package(Qt6 REQUIRED COMPONENTS Core) find_package(Qt6 REQUIRED COMPONENTS Core)
find_package(Qt6 REQUIRED COMPONENTS ${QT_PACKAGES}) find_package(Qt6 REQUIRED COMPONENTS ${QT_PACKAGES})
#qt6_standard_project_setup()
set(CMAKE_AUTOMOC ON) if(${Qt6_VERSION} VERSION_LESS "6.3.0")
set(CMAKE_AUTORCC ON) set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
else()
qt6_standard_project_setup()
endif()
set(_LINPHONEAPP_SOURCES main.cpp) set(_LINPHONEAPP_SOURCES main.cpp)
set(_LINPHONEAPP_QML_FILES) set(_LINPHONEAPP_QML_FILES)

View file

@ -64,7 +64,8 @@ void LoggerModel::onLog(QtMsgType type, QString contextFile, int contextLine, QS
contextStr = QStringLiteral("%1:%2: ").arg(fileToDisplay).arg(contextLine); contextStr = QStringLiteral("%1:%2: ").arg(fileToDisplay).arg(contextLine);
} }
#else #else
Q_UNUSED(context); Q_UNUSED(contextFile)
Q_UNUSED(contextLine)
#endif #endif
auto serviceMsg = Utils::appStringToCoreString(contextStr + msg); auto serviceMsg = Utils::appStringToCoreString(contextStr + msg);

View file

@ -0,0 +1,135 @@
################################################################################
# GenerateFrameworks.cmake
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
cmake_policy(SET CMP0009 NEW) # Do not follow symlinks when doing file(GLOB_RECURSE)
include("${LINPHONESDK_DIR}/cmake/LinphoneSdkUtils.cmake")
linphone_sdk_convert_comma_separated_list_to_cmake_list("${LINPHONEAPP_MACOS_ARCHS}" _MACOS_ARCHS)
list(GET _MACOS_ARCHS 0 _FIRST_ARCH)
set(MAIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/${LINPHONEAPP_NAME}) #OUTPUT/linphone-app/macos
################################
# Create the desktop directory that will contain the merged content of all architectures
################################
execute_process(
COMMAND "${CMAKE_COMMAND}" "-E" "remove_directory" "${MAIN_INSTALL_DIR}"
COMMAND "${CMAKE_COMMAND}" "-E" "make_directory" "${MAIN_INSTALL_DIR}"
)
################################
# Copy outside folders that should be in .app package
################################
function( copy_outside_folders _ARCH)
# Prepare .app
execute_process(COMMAND rsync -a --force "${MAIN_INSTALL_DIR}-${_ARCH}/Frameworks/" "${MAIN_INSTALL_DIR}-${_ARCH}/${CMAKE_INSTALL_LIBDIR}/")
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${MAIN_INSTALL_DIR}-${_ARCH}/include/" "${MAIN_INSTALL_DIR}-${_ARCH}/${CMAKE_INSTALL_INCLUDEDIR}/")
# move share
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${MAIN_INSTALL_DIR}-${_ARCH}/share/" "${MAIN_INSTALL_DIR}-${_ARCH}/${CMAKE_INSTALL_DATAROOTDIR}/")
# move mkspecs
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${MAIN_INSTALL_DIR}-${_ARCH}/mkspecs/" "${MAIN_INSTALL_DIR}-${_ARCH}/${CMAKE_INSTALL_DATAROOTDIR}/")
endfunction()
set(_COPIED FALSE)
foreach(_ARCH IN LISTS ${_MACOS_ARCHS})
set(_COPIED TRUE)
message(STATUS "Copying outside folders for ${_ARCH}")
copy_outside_folders(${_ARCH})
endforeach()
if(NOT _COPIED) # this is a bug on cmake as there is one element but foreach doesn't do loop.
message(STATUS "Copying outside folders for ${_FIRST_ARCH}")
copy_outside_folders(${_FIRST_ARCH})
endif()
################################
# Copy and merge content of all architectures in the desktop directory
################################
# Do not use copy_directory because of symlinks
message(STATUS "Copying ${_FIRST_ARCH} into main")
execute_process(COMMAND rsync -a --force "${MAIN_INSTALL_DIR}-${_FIRST_ARCH}/" "${MAIN_INSTALL_DIR}" WORKING_DIRECTORY "${LINPHONEAPP_BUILD_DIR}")
#if(NOT ENABLE_FAT_BINARY)
# execute_process(
# COMMAND "${CMAKE_COMMAND}" "-E" "remove_directory" "${CMAKE_INSTALL_PREFIX}/Frameworks"
# COMMAND "${CMAKE_COMMAND}" "-E" "make_directory" "${CMAKE_INSTALL_PREFIX}/XCFrameworks"
# )
#endif()
################################
##### MIX (TODO)
################################
message(STATUS "Mixing")
# Get all files in output
file(GLOB_RECURSE _BINARIES RELATIVE "${MAIN_INSTALL_DIR}-${_FIRST_ARCH}/" "${MAIN_INSTALL_DIR}-${_FIRST_ARCH}/*")
if(NOT ENABLE_FAT_BINARY)
# Remove all .framework inputs from the result
list(FILTER _BINARIES EXCLUDE REGEX ".*\\.framework.*")
endif()
foreach(_FILE IN LISTS ${_BINARIES})
get_filename_component(ABSOLUTE_FILE "${MAIN_INSTALL_DIR}-${_FIRST_ARCH}/${_FILE}" ABSOLUTE)
if(NOT IS_SYMLINK ${ABSOLUTE_FILE})
# Check if lipo can detect an architecture
execute_process(COMMAND lipo -archs "${MAIN_INSTALL_DIR}-${_FIRST_ARCH}/${_FILE}"
OUTPUT_VARIABLE FILE_ARCHITECTURE
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY "${LINPHONEAPP_BUILD_DIR}"
ERROR_QUIET
)
if(NOT "${FILE_ARCHITECTURE}" STREQUAL "")
# There is at least one architecture : Use this candidate to mix with another architecture
set(_ALL_ARCH_FILES)
foreach(_ARCH IN LISTS ${_ARCHS})
list(APPEND _ALL_ARCH_FILES "${MAIN_INSTALL_DIR}-${_ARCH}/${_FILE}")
endforeach()
string(REPLACE ";" " " _ARCH_STRING "${_ARCHS}")
message(STATUS "Mixing ${_FILE} for archs [${_ARCH_STRING}]")
execute_process(
COMMAND "lipo" "-create" "-output" "${MAIN_INSTALL_DIR}/${_FILE}" ${_ALL_ARCH_FILES}
WORKING_DIRECTORY "${LINPHONEAPP_BUILD_DIR}"
)
endif()
endif()
endforeach()
#[[
if(NOT ENABLE_FAT_BINARY)
# Generate XCFrameworks
file(GLOB _FRAMEWORKS "${LINPHONEAPP_BUILD_DIR}/${MAIN_INSTALL_DIR}-${_FIRST_ARCH}/Frameworks/*.framework")
foreach(_FRAMEWORK IN LISTS _FRAMEWORKS)
get_filename_component(_FRAMEWORK_NAME "${_FRAMEWORK}" NAME_WE)
set(_ALL_ARCH_FRAMEWORKS)
foreach(_ARCH IN LISTS _MACOS_ARCHS)
list(APPEND _ALL_ARCH_FRAMEWORKS "-framework")
list(APPEND _ALL_ARCH_FRAMEWORKS "${LINPHONEAPP_BUILD_DIR}/${LINPHONEAPP_NAME}/${LINPHONEAPP_PLATFORM}-${_ARCH}/Frameworks/${_FRAMEWORK_NAME}.framework")
endforeach()
string(REPLACE ";" " " _ARCH_STRING "${_MACOS_ARCHS}")
message(STATUS "Creating XCFramework for ${_FRAMEWORK_NAME} for archs [${_ARCH_STRING}]")
execute_process(
COMMAND "xcodebuild" "-create-xcframework" "-output" "${CMAKE_INSTALL_PREFIX}/XCFrameworks/${_FRAMEWORK_NAME}.xcframework" ${_ALL_ARCH_FRAMEWORKS}
WORKING_DIRECTORY "${LINPHONEAPP_BUILD_DIR}"
)
endforeach()
endif()
#]]

86
cmake/TasksMacos.cmake Normal file
View file

@ -0,0 +1,86 @@
############################################################################
# TasksMacos.cmake
# Copyright (C) 2010-2023 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(LINPHONEAPP_MACOS_ARCHS "x86_64" CACHE STRING "MacOS architectures to build: comma-separated list of values in [arm64, x86_64]")
option(ENABLE_FAT_BINARY "Enable fat binary generation using lipo." ON)
set(_MACOS_ARCHS ${LINPHONEAPP_MACOS_ARCHS})
#linphone_sdk_convert_comma_separated_list_to_cmake_list("${LINPHONESDK_MACOS_ARCHS}" _MACOS_ARCHS)
set(LINPHONEAPP_NAME "Linphone")
set(LINPHONEAPP_PLATFORM "macos")
set(SUB_TARGET app_macos)
string(TOLOWER "${LINPHONEAPP_PLATFORM}" LINPHONEAPP_PLATFORM_LOWER)
set(_MACOS_INSTALL_RELATIVE_DIR "${LINPHONEAPP_NAME}/${LINPHONEAPP_PLATFORM_LOWER}") # Linphone/macos
set(_MACOS_INSTALL_DIR "${APPLICATION_OUTPUT_DIR}/${_MACOS_INSTALL_RELATIVE_DIR}") # build/OUTPUT/Linphone/macos
# Use APPLICATION_OUTPUT_DIR. CMAKE_INSTALL_PREFIX can be in Linphone.app/Contents
############################################################################
# Build each selected architecture
############################################################################
#linphone_sdk_get_inherited_cmake_args(_CMAKE_CONFIGURE_ARGS _CMAKE_BUILD_ARGS)
#linphone_sdk_get_enable_cmake_args(_MACOS_CMAKE_ARGS)
set(_MACOS_TARGETS)
foreach(_MACOS_ARCH IN LISTS _MACOS_ARCHS)
set(_TARGET_NAME ${SUB_TARGET}-${_MACOS_ARCH}) # app_macos-x86_64
set(_MACOS_ARCH_BINARY_DIR "${PROJECT_BINARY_DIR}/${_TARGET_NAME}") # build/app_macos-x86_64
set(_MACOS_ARCH_INSTALL_DIR "${_MACOS_INSTALL_DIR}-${_MACOS_ARCH}") # build/OUTPUT/Linphone/macos-x86_64
add_custom_target(${_TARGET_NAME} ALL
COMMAND ${CMAKE_COMMAND} -B ${_MACOS_ARCH_BINARY_DIR} -DMONO_ARCH=${_MACOS_ARCH} ${USER_ARGS} ${OPTION_LIST} ${_MACOS_CMAKE_ARGS} -DLINPHONEAPP_INSTALL_PREFIX=${_MACOS_ARCH_INSTALL_DIR} -DCMAKE_TOOLCHAIN_FILE=${PROJECT_SOURCE_DIR}/cmake/toolchains/toolchain-mac-x86_64.cmake -DLINPHONEAPP_BUILD_TYPE="Normal"
COMMAND ${CMAKE_COMMAND} --build ${_MACOS_ARCH_BINARY_DIR} --target install ${_CMAKE_BUILD_ARGS}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Building Linphone APP for MacOS ${_MACOS_ARCH}"
USES_TERMINAL
COMMAND_EXPAND_LISTS
)
list(APPEND _MACOS_TARGETS ${_TARGET_NAME})
endforeach()
############################################################################
# Generate the aggregated apps
############################################################################
add_custom_target(gen-apps ALL
COMMAND "${CMAKE_COMMAND}"
"-DLINPHONESDK_DIR=${PROJECT_SOURCE_DIR}/external/linphone-sdk"
"-DLINPHONEAPP_BUILD_DIR=${CMAKE_BINARY_DIR}"
"-DLINPHONEAPP_MACOS_ARCHS=${LINPHONEAPP_MACOS_ARCHS}"
"-DLINPHONEAPP_NAME=${_MACOS_INSTALL_RELATIVE_DIR}"
"-DLINPHONEAPP_PLATFORM=${LINPHONEAPP_PLATFORM_LOWER}"
"-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
"-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}"
"-DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR}"
"-DCMAKE_INSTALL_BINDIR=${CMAKE_INSTALL_BINDIR}"
"-DCMAKE_INSTALL_DATAROOTDIR=${CMAKE_INSTALL_DATAROOTDIR}"
"-DENABLE_FAT_BINARY=${ENABLE_FAT_BINARY}"
"-P" "${PROJECT_SOURCE_DIR}/cmake/GenerateAppMacos.cmake"
DEPENDS ${_MACOS_TARGETS}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Aggregating applications of all architectures"
USES_TERMINAL
)
install(CODE "message(\"Dummy install target\")")

View file

@ -0,0 +1,24 @@
################################################################################
#
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
message(FATAL_ERROR A)
set(CMAKE_SYSTEM_PROCESSOR "arm64")
set(CMAKE_OSX_ARCHITECTURES "arm64")
set(CLANG_TARGET "arm64-apple-macos")
include("${CMAKE_CURRENT_LIST_DIR}/toolchain-mac-common.cmake")

View file

@ -0,0 +1,106 @@
############################################################################
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
############################################################################
# Building for Mac is only available under APPLE systems
if(NOT APPLE)
message(FATAL_ERROR "You need to build using a Mac OS X system")
endif()
execute_process(COMMAND xcode-select -print-path
RESULT_VARIABLE XCODE_SELECT_RESULT
OUTPUT_VARIABLE XCODE_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT ${XCODE_SELECT_RESULT} EQUAL 0)
message(FATAL_ERROR "xcode-select failed: ${XCODE_SELECT_RESULT}. You may need to install Xcode.")
endif()
execute_process(COMMAND xcrun --sdk macosx --show-sdk-version
RESULT_VARIABLE XCRUN_SHOW_SDK_VERSION_RESULT
OUTPUT_VARIABLE MACOS_SDK_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT ${XCRUN_SHOW_SDK_VERSION_RESULT} EQUAL 0)
message(FATAL_ERROR "xcrun failed: ${XCRUN_SHOW_SDK_VERSION_RESULT}. You may need to install Xcode.")
endif()
execute_process(COMMAND xcrun --sdk macosx --show-sdk-platform-path
RESULT_VARIABLE XCRUN_SHOW_SDK_PATH_RESULT
OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT ${XCRUN_SHOW_SDK_PATH_RESULT} EQUAL 0)
message(FATAL_ERROR "xcrun failed: ${XCRUN_SHOW_SDK_PATH_RESULT}. You may need to install Xcode.")
endif()
set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT}/Developer/SDKs/MacOSX.sdk")
execute_process(COMMAND xcrun --sdk macosx --find clang
RESULT_VARIABLE XCRUN_FIND_CLANG_RESULT
OUTPUT_VARIABLE CLANG_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT ${XCRUN_FIND_CLANG_RESULT} EQUAL 0)
message(FATAL_ERROR "xcrun failed: ${XCRUN_FIND_CLANG_RESULT}. You may need to install Xcode.")
endif()
get_filename_component(TOOLCHAIN_PATH "${CLANG_PATH}" DIRECTORY)
message(STATUS "Using sysroot path: ${CMAKE_OSX_SYSROOT}")
message(STATUS "Using sdk version: ${MACOS_SDK_VERSION}")
set(SDK_BIN_PATH "${CMAKE_OSX_SYSROOT}/../../usr/bin")
set(TOOLCHAIN_CC "${TOOLCHAIN_PATH}/clang")
set(TOOLCHAIN_CXX "${TOOLCHAIN_PATH}/clang++")
set(TOOLCHAIN_OBJC "${TOOLCHAIN_PATH}/clang")
set(TOOLCHAIN_LD "${TOOLCHAIN_PATH}/ld")
set(TOOLCHAIN_AR "${TOOLCHAIN_PATH}/ar")
set(TOOLCHAIN_RANLIB "${TOOLCHAIN_PATH}/ranlib")
set(TOOLCHAIN_STRIP "${TOOLCHAIN_PATH}/strip")
set(TOOLCHAIN_NM "${TOOLCHAIN_PATH}/nm")
execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERSION_RAW OUTPUT_STRIP_TRAILING_WHITESPACE)
STRING(REGEX REPLACE "Xcode ([^\n]*).*" "\\1" XCODE_VERSION "${XCODE_VERSION_RAW}")
include(CMakeForceCompiler)
set(CMAKE_CROSSCOMPILING FALSE)
# Define name of the target system
set(CMAKE_SYSTEM_NAME "Darwin")
set(CMAKE_SYSTEM_VERSION ${MACOS_SDK_VERSION})
# The following variables are needed to build correctly with Xcode
if(CMAKE_GENERATOR STREQUAL "Xcode")
set(CMAKE_MACOSX_BUNDLE NO)#if YES, cmake try_compile will not be able to test executable.app and then API info will fail.
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED NO)
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED NO)
set(CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE "bitcode")
endif()
# Define the compiler
set(CMAKE_C_COMPILER "${TOOLCHAIN_CC}")
set(CMAKE_C_COMPILER_TARGET "${CLANG_TARGET}")
set(CMAKE_CXX_COMPILER "${TOOLCHAIN_CXX}")
set(CMAKE_CXX_COMPILER_TARGET "${CLANG_TARGET}")
set(CMAKE_AR "${TOOLCHAIN_AR}" CACHE FILEPATH "ar")
set(CMAKE_RANLIB "${TOOLCHAIN_RANLIB}" CACHE FILEPATH "ranlib")
set(CMAKE_LINKER "${TOOLCHAIN_LD}" CACHE FILEPATH "linker")
set(CMAKE_NM "${TOOLCHAIN_NM}" CACHE FILEPATH "nm")
set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT} ${CMAKE_INSTALL_PREFIX})
#important: the GUI identifier is required so that executables can be launched on simulators
set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.linphone.\${PRODUCT_NAME:identifier}")

View file

@ -0,0 +1,24 @@
################################################################################
#
# Copyright (c) 2021-2023 Belledonne Communications SARL.
#
# 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 <http://www.gnu.org/licenses/>.
#
################################################################################
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_OSX_ARCHITECTURES "x86_64")
set(CLANG_TARGET "x86_64-apple-darwin")
include("${CMAKE_CURRENT_LIST_DIR}/toolchain-mac-common.cmake")

View file

@ -1,23 +1,2 @@
if( APPLE )
set(LINPHONESDK_BUILD_TYPE "Macos")
set(ENABLE_FAT_BINARY "ON")
if( NOT CMAKE_OSX_DEPLOYMENT_TARGET)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version")
endif()
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm64")# TODO: add universal build
set(LINPHONESDK_MACOS_ARCHS "x86_64" CACHE STRING "MacOS architectures to build for: comma-separated list of values in [x86_64]")
else()
set(LINPHONESDK_MACOS_ARCHS "x86_64" CACHE STRING "MacOS architectures to build for: comma-separated list of values in [x86_64]")
endif()
set(CMAKE_OSX_ARCHITECTURES ${LINPHONESDK_MACOS_ARCHS} CACHE STRING "")
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
elseif(WIN32)
set(LINPHONESDK_BUILD_TYPE "Default")
endif()
add_subdirectory(linphone-sdk/) add_subdirectory(linphone-sdk/)