diff --git a/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml b/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml
index e9f810fdb..f320e0f63 100644
--- a/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml
+++ b/.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml
@@ -100,7 +100,7 @@ job-archlinux-latest-ninja-clang-novideo:
# - $NIGHTLY_MASTER
# - $DEPLOY_LINUX
# 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
# artifacts:
# paths:
diff --git a/.gitlab-ci-files/job-linux-desktop-centos7.yml b/.gitlab-ci-files/job-linux-desktop-centos7.yml
index f81f11ae1..0c6f49e61 100644
--- a/.gitlab-ci-files/job-linux-desktop-centos7.yml
+++ b/.gitlab-ci-files/job-linux-desktop-centos7.yml
@@ -74,7 +74,7 @@ job-centos7-ninja-gcc-package:
variables:
- $DEPLOY_LINUX_CENTOS7
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
CC: gcc
CXX: g++
diff --git a/.gitlab-ci-files/job-linux-desktop-debian10.yml b/.gitlab-ci-files/job-linux-desktop-debian10.yml
index dc8a49cbd..cffc14393 100644
--- a/.gitlab-ci-files/job-linux-desktop-debian10.yml
+++ b/.gitlab-ci-files/job-linux-desktop-debian10.yml
@@ -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:
- tags: [ "docker-debian10" ]
- image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
except:
refs:
- schedules
@@ -11,14 +13,13 @@ job-debian10-ninja-gcc:
CC: gcc
CXX: g++
extends: .job-linux-desktop
+ <<: *docker_image_platform_and_runner_tag
#################################################
# Nightly
#################################################
job-debian10-makefile-gcc:
- tags: [ "docker-debian10" ]
- image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
only:
variables:
- $NIGHTLY_MASTER
@@ -29,25 +30,19 @@ job-debian10-makefile-gcc:
CXX: g++
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
extends: .job-linux-desktop
+ <<: *docker_image_platform_and_runner_tag
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:
variables:
- $NIGHTLY_MASTER
variables:
CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF
- CMAKE_GENERATOR: Ninja
- CC: gcc
- CXX: g++
- extends: .job-linux-desktop
+ extends: job-debian10-ninja-gcc
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:
variables:
- $NIGHTLY_MASTER
@@ -57,20 +52,20 @@ job-debian10-ninja-gcc-smallsdk:
CC: gcc
CXX: g++
extends: .job-linux-desktop
+ <<: *docker_image_platform_and_runner_tag
job-debian10-ninja-clang:
- tags: [ "docker-debian10" ]
only:
variables:
- $NIGHTLY_MASTER
- image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian10:$DEBIAN_10_IMAGE_VERSION
variables:
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
CXX: clang++
extends: .job-linux-desktop
+ <<: *docker_image_platform_and_runner_tag
job-debian10-ninja-clang-novideo:
@@ -78,12 +73,10 @@ job-debian10-ninja-clang-novideo:
variables:
- $NIGHTLY_MASTER
variables:
- CMAKE_OPTIONS: -DENABLE_VIDEO=NO
+ CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=OFF
extends: job-debian10-ninja-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:
variables:
- $NIGHTLY_MASTER
@@ -95,39 +88,77 @@ job-debian10-makefile-clang:
CXX: clang++
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
extends: .job-linux-desktop
+ <<: *docker_image_platform_and_runner_tag
#################################################
# Package - Nightly
#################################################
-job-debian10-makefile-clang-package:
+job-debian10-makefile-gcc-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: []
only:
variables:
- $NIGHTLY_MASTER
+ - $PACKAGE_LINUX
- $DEPLOY_LINUX
variables:
- CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON
- extends: job-debian10-makefile-clang
+ 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/Packages/Linphone*.AppImage
+ - build/OUTPUT/*
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/
+#job-debian10-makefile-gcc-deploy:
+# stage: deploy
+# tags: [ "docker" ]
+# dependencies:
+# - job-debian10-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-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/
diff --git a/.gitlab-ci-files/job-linux-desktop-ubuntu-1804.yml b/.gitlab-ci-files/job-linux-desktop-ubuntu-1804.yml
new file mode 100644
index 000000000..e54e5791d
--- /dev/null
+++ b/.gitlab-ci-files/job-linux-desktop-ubuntu-1804.yml
@@ -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/
+
diff --git a/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml b/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml
index 25304c964..cb3034ac7 100644
--- a/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml
+++ b/.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml
@@ -92,7 +92,7 @@ job-ubuntu-rolling-ninja-clang-novideo:
# - $NIGHTLY_MASTER
# - $DEPLOY_LINUX
# 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
# artifacts:
# paths:
diff --git a/.gitlab-ci-files/job-macosx-desktop.yml b/.gitlab-ci-files/job-macosx-desktop.yml
index cb804cbec..92443a964 100644
--- a/.gitlab-ci-files/job-macosx-desktop.yml
+++ b/.gitlab-ci-files/job-macosx-desktop.yml
@@ -5,8 +5,10 @@
.build_all_script: &build_all_script |
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
+ echo $PATH
if [ -d "build" ]; then rm -rf build; fi;
mkdir -p build/OUTPUT
cd build
@@ -16,22 +18,18 @@
echo $DEFAULT_MACOS_CMAKE_OPTIONS
echo $CMAKE_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
ccache -s
.job-macosx-desktop:
stage: build
- tags: [ "macmini-m1-bis-xcode13" ]
+ tags: [ "macos-xcode13" ]
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:
paths:
- - build/OUTPUT
+ - build/OUTPUT/*
when: always
expire_in: 1 week
@@ -39,13 +37,14 @@
# On each push
#################################################
+#TODO: reactivate pcrypto when liboqs is fixed for 'Vortex' CPU.
job-macosx-ninja:
except:
refs:
- schedules
variables:
CMAKE_GENERATOR: Ninja
- CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON
+ CMAKE_OPTIONS: -DENABLE_PQCRYPTO=OFF
extends: .job-macosx-desktop
#################################################
@@ -59,7 +58,7 @@ job-macosx-makefile:
- $DEPLOY_PLUGINS
variables:
CMAKE_GENERATOR: Unix Makefiles
- CMAKE_OPTIONS: -DENABLE_PQCRYPTO=ON
+ CMAKE_OPTIONS: -DENABLE_PQCRYPTO=OFF
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
extends: .job-macosx-desktop
@@ -68,7 +67,7 @@ job-macosx-ninja-novideo:
variables:
- $NIGHTLY_MASTER
variables:
- CMAKE_OPTIONS: -DENABLE_VIDEO=NO -DENABLE_PQCRYPTO=ON
+ CMAKE_OPTIONS: -DENABLE_VIDEO=OFF -DENABLE_PQCRYPTO=OFF
CMAKE_GENERATOR: Ninja
extends: .job-macosx-desktop
@@ -90,7 +89,7 @@ job-macosx-ninja-novideo:
# WAIT for QT6 for arm64
job-macosx-makefile-package:
stage: package
- tags: [ "macmini-m1-bis-xcode13" ]
+ tags: [ "macos-xcode13" ]
dependencies: []
only:
variables:
@@ -98,9 +97,8 @@ job-macosx-makefile-package:
- $PACKAGE_MACOSX
- $DEPLOY_MACOSX
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
- LINPHONESDK_MACOS_ARCHS: "x86_64"
extends: job-macosx-makefile
script:
- if [[ $MAKE_RELEASE_FILE_URL == "" ]]; then export RELEASE_FILE=""; fi
@@ -114,7 +112,7 @@ job-macosx-makefile-package:
job-macosx-codesigning:
stage: signing
- tags: [ "macmini-m1-bis-xcode13" ]
+ tags: [ "macos-xcode13" ]
needs:
- job-macosx-makefile-package
only:
@@ -124,7 +122,7 @@ job-macosx-codesigning:
- $DEPLOY_MACOSX
script:
- 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
artifacts:
when: always
@@ -137,32 +135,32 @@ job-macosx-codesigning:
# Deploy - Nightly
#################################################
-job-macosx-makefile-deploy:
- stage: deploy
- tags: [ "macmini-m1-bis-xcode13" ]
- needs:
- - job-macosx-codesigning
- only:
- variables:
- - $NIGHTLY_MASTER
- - $DEPLOY_MACOSX
- script:
- - rsync -rlv --ignore-existing build/OUTPUT/Packages/Linphone*.dmg $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER
- - |-
- if [[ $MAKE_RELEASE_FILE_URL != "" ]]; then
- 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
- fi
+#job-macosx-makefile-deploy:
+# stage: deploy
+# tags: [ "macos-xcode13" ]
+# needs:
+# - job-macosx-codesigning
+# only:
+# variables:
+# - $NIGHTLY_MASTER
+# - $DEPLOY_MACOSX
+# script:
+# - 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
+# 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
+# fi
-job-macosx-makefile-plugins-deploy:
- stage: deploy
- tags: [ "macmini-m1-bis-xcode13" ]
- needs:
- - job-macosx-makefile
- only:
- variables:
- - $DEPLOY_PLUGINS
- script:
- - rsync -rlv --ignore-existing build/OUTPUT/plugins/app/*.dylib $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER/plugins
+#job-macosx-makefile-plugins-deploy:
+# stage: deploy
+# tags: [ "macos-xcode13" ]
+# needs:
+# - job-macosx-makefile
+# only:
+# variables:
+# - $DEPLOY_PLUGINS
+# script:
+# - rsync -rlv --ignore-existing build/OUTPUT/plugins/app/*.dylib $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER/plugins
diff --git a/.gitlab-ci-files/job-windows-desktop.yml b/.gitlab-ci-files/job-windows-desktop.yml
index c0b81ec0c..f875d572a 100644
--- a/.gitlab-ci-files/job-windows-desktop.yml
+++ b/.gitlab-ci-files/job-windows-desktop.yml
@@ -10,7 +10,7 @@
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
- if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
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
OUTPUT_ZIP_FOLDER: win64
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 ($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
- - cd linphone-sdk
- - mkdir $OUTPUT_ZIP_FOLDER
- - Copy-Item -Path "*.zip" -Destination "$CI_PROJECT_DIR/build-desktop/linphone-sdk/$OUTPUT_ZIP_FOLDER" -Recurse
################
artifacts:
@@ -95,13 +92,14 @@
- build-desktop\ninja_buildlog.txt
- build-desktop\invertSearch.ps1
- build-desktop\OUTPUT\*
+ - build-desktop\external\linphone-sdk\openh264-prefix\src\openh264-stamp\*
when: always
expire_in: 1 week
.windows-vs2019-msvc:
extends: .windows-vs2019
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
CMAKE_GENERATOR: "Visual Studio 16 2019"
BUILD_TARGET: install
@@ -157,35 +155,35 @@ vs2019-win64-package:
- if: $PACKAGE_WINDOWS
- if: $DEPLOY_WINDOWS
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
#################################################
# DEPLOY
#################################################
-vs2019-win64-upload:
- stage: deploy
- tags: [ "windows-powershell"]
- rules:
- - if: $NIGHTLY_MASTER
- - if: $DEPLOY_WINDOWS
- needs:
- - vs2019-win64-package
- script:
- - 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 ${MAIN_DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
+#vs2019-win64-upload:
+# stage: deploy
+# tags: [ "windows-powershell"]
+# rules:
+# - if: $NIGHTLY_MASTER
+# - if: $DEPLOY_WINDOWS
+# needs:
+# - vs2019-win64-package
+# script:
+# - 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 ${MAIN_DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
-vs2019-win64-plugins-upload:
- stage: deploy
- tags: [ "windows"]
- rules:
- - if: $DEPLOY_PLUGINS
- needs:
- - vs2019-win64-scheduled-windows
- script:
- - scp "build-desktop/OUTPUT/plugins/app/*.dll" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%/plugins"
+#vs2019-win64-plugins-upload:
+# stage: deploy
+# tags: [ "windows"]
+# rules:
+# - if: $DEPLOY_PLUGINS
+# needs:
+# - vs2019-win64-scheduled-windows
+# script:
+# - scp "build-desktop/OUTPUT/plugins/app/*.dll" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%/plugins"
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d04cdf026..8694d4a2e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -26,6 +26,7 @@ variables:
DEBIAN_9_QT_IMAGE_VERSION: 20230417_qtopen_gstreamer
DEBIAN_10_IMAGE_VERSION: 20210217_python3
UBUNTU_ROLLING_IMAGE_VERSION: 20211012_add_qtwebview
+ UBUNTU_1804_IMAGE_VERSION: 20230706_add_deps_for_av1
workflow:
@@ -48,13 +49,13 @@ workflow:
include:
# - '.gitlab-ci-files/job-linux-prepare.yml'
# - '.gitlab-ci-files/job-linux-desktop.yml'
-# - '.gitlab-ci-files/job-linux-desktop-debian9.yml'
-# - '.gitlab-ci-files/job-windows-desktop.yml'
-# - '.gitlab-ci-files/job-macosx-desktop.yml'
+# - '.gitlab-ci-files/job-linux-desktop-ubuntu-1804.yml'
+ - '.gitlab-ci-files/job-windows-desktop.yml'
+ - '.gitlab-ci-files/job-macosx-desktop.yml'
-#stages:
-# - build
-# - package
-# - signing
-# - deploy
+stages:
+ - build
+ - package
+ - signing
+ - deploy
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b1185914e..f0c6a60d4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -183,6 +183,7 @@ endif()
# 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_CSHARP_WRAPPER OFF CACHE BOOL "Build the CSharp wrapper for Liblinphone." FORCE)
set(ENABLE_THEORA OFF)
set(ENABLE_QT_GL ${ENABLE_VIDEO})
@@ -251,4 +252,4 @@ else()
include(cmake/TasksMacos.cmake)
endif()
-file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/hook/pre-commit" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/")
\ No newline at end of file
+file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/cmake/hook/pre-commit" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/")
diff --git a/Linphone/CMakeLists.txt b/Linphone/CMakeLists.txt
index cd6867072..f015f0e37 100644
--- a/Linphone/CMakeLists.txt
+++ b/Linphone/CMakeLists.txt
@@ -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 ${QT_PACKAGES})
-#qt6_standard_project_setup()
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-set(CMAKE_AUTOUIC ON)
+
+if(${Qt6_VERSION} VERSION_LESS "6.3.0")
+ set(CMAKE_AUTOMOC ON)
+ set(CMAKE_AUTORCC ON)
+ set(CMAKE_AUTOUIC ON)
+else()
+ qt6_standard_project_setup()
+endif()
+
set(_LINPHONEAPP_SOURCES main.cpp)
set(_LINPHONEAPP_QML_FILES)
diff --git a/Linphone/model/logger/LoggerModel.cpp b/Linphone/model/logger/LoggerModel.cpp
index 4a368b755..2a467656c 100644
--- a/Linphone/model/logger/LoggerModel.cpp
+++ b/Linphone/model/logger/LoggerModel.cpp
@@ -64,7 +64,8 @@ void LoggerModel::onLog(QtMsgType type, QString contextFile, int contextLine, QS
contextStr = QStringLiteral("%1:%2: ").arg(fileToDisplay).arg(contextLine);
}
#else
- Q_UNUSED(context);
+ Q_UNUSED(contextFile)
+ Q_UNUSED(contextLine)
#endif
auto serviceMsg = Utils::appStringToCoreString(contextStr + msg);
diff --git a/cmake/GenerateAppMacos.cmake b/cmake/GenerateAppMacos.cmake
new file mode 100644
index 000000000..fa02454e4
--- /dev/null
+++ b/cmake/GenerateAppMacos.cmake
@@ -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 .
+#
+################################################################################
+
+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()
+#]]
diff --git a/cmake/TasksMacos.cmake b/cmake/TasksMacos.cmake
new file mode 100644
index 000000000..ef967aedb
--- /dev/null
+++ b/cmake/TasksMacos.cmake
@@ -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\")")
+
diff --git a/cmake/toolchains/toolchain-mac-arm64.cmake b/cmake/toolchains/toolchain-mac-arm64.cmake
new file mode 100644
index 000000000..213974cc1
--- /dev/null
+++ b/cmake/toolchains/toolchain-mac-arm64.cmake
@@ -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 .
+#
+################################################################################
+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")
diff --git a/cmake/toolchains/toolchain-mac-common.cmake b/cmake/toolchains/toolchain-mac-common.cmake
new file mode 100644
index 000000000..369eb45ab
--- /dev/null
+++ b/cmake/toolchains/toolchain-mac-common.cmake
@@ -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 .
+#
+############################################################################
+
+# 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}")
diff --git a/cmake/toolchains/toolchain-mac-x86_64.cmake b/cmake/toolchains/toolchain-mac-x86_64.cmake
new file mode 100644
index 000000000..baba3c760
--- /dev/null
+++ b/cmake/toolchains/toolchain-mac-x86_64.cmake
@@ -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 .
+#
+################################################################################
+
+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")
diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
index c4522642e..bec868965 100644
--- a/external/CMakeLists.txt
+++ b/external/CMakeLists.txt
@@ -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/)