Merge branch 'feature/simplify_build_configuration_v3'
2
.gitignore
vendored
|
|
@ -16,7 +16,7 @@ CMakeLists.txt.user
|
|||
build-*-Debug
|
||||
build-*-Default
|
||||
prepare.conf.user
|
||||
build-desktop/*
|
||||
build/*
|
||||
|
||||
# Tags -------------------------------------------------------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -1,51 +0,0 @@
|
|||
#################################################
|
||||
# Makefile
|
||||
#################################################
|
||||
|
||||
job-archlinux-latest-makefile-gcc:
|
||||
|
||||
tags: [ "docker-archlinux-latest" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-archlinux:latest
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
|
||||
extends: .scheduled-job-linux-desktop
|
||||
|
||||
|
||||
job-archlinux-latest-makefile-clang:
|
||||
|
||||
tags: [ "docker-archlinux-latest" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-archlinux:latest
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
|
||||
extends: .scheduled-job-linux-desktop
|
||||
|
||||
#################################################
|
||||
# Ninja
|
||||
#################################################
|
||||
|
||||
job-archlinux-latest-ninja-gcc:
|
||||
|
||||
tags: [ "docker-archlinux-latest" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-archlinux:latest
|
||||
variables:
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
extends: .job-linux-desktop
|
||||
|
||||
|
||||
job-archlinux-latest-ninja-clang:
|
||||
|
||||
tags: [ "docker-archlinux-latest" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-archlinux:latest
|
||||
variables:
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
extends: .job-linux-desktop
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
#################################################
|
||||
# Makefile
|
||||
#################################################
|
||||
|
||||
job-centos7-makefile-gcc:
|
||||
|
||||
tags: [ "docker-centos7" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-centos:7
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j1
|
||||
extends: .job-linux-desktop
|
||||
|
||||
|
||||
job-centos7-makefile-clang:
|
||||
|
||||
tags: [ "docker-centos7" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-centos:7
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j1
|
||||
extends: .job-linux-desktop
|
||||
|
||||
#################################################
|
||||
# Ninja
|
||||
#################################################
|
||||
|
||||
#job-centos7-ninja-gcc:
|
||||
#
|
||||
# tags: [ "docker-centos7" ]
|
||||
# image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-centos:7
|
||||
# variables:
|
||||
# CMAKE_GENERATOR: Ninja
|
||||
# CC: gcc
|
||||
# CXX: g++
|
||||
# extends: .job-linux-desktop
|
||||
|
||||
|
||||
#job-centos7-ninja-clang:
|
||||
#
|
||||
# tags: [ "docker-centos7" ]
|
||||
# image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-centos:7
|
||||
# variables:
|
||||
# CMAKE_GENERATOR: Ninja
|
||||
# CC: clang
|
||||
# CXX: clang++
|
||||
# extends: .job-linux-desktop
|
||||
|
||||
#################################################
|
||||
# RPM
|
||||
#################################################
|
||||
|
||||
job-centos7-rpm:
|
||||
|
||||
tags: [ "docker-centos7" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-centos:7
|
||||
extends: .job-linux-rpm
|
||||
|
||||
#################################################
|
||||
# Deploy
|
||||
#################################################
|
||||
|
||||
job-centos7-rpm-deploy:
|
||||
|
||||
stage: deploy
|
||||
tags: [ "deploy-linux" ]
|
||||
|
||||
only:
|
||||
- schedules
|
||||
dependencies:
|
||||
- job-centos7-rpm
|
||||
|
||||
script:
|
||||
- cd WORK/desktop-rpm/rpmbuild/RPMS/x86_64/ && rsync -pr . $DEPLOY_SERVER:$CENTOS7_DEPLOY_DIRECTORY
|
||||
- ssh $DEPLOY_SERVER "chmod a+r $CENTOS7_DEPLOY_DIRECTORY/*.rpm && createrepo_c --update $CENTOS7_DEPLOY_DIRECTORY/."
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
#################################################
|
||||
# Makefile
|
||||
#################################################
|
||||
|
||||
job-debian8-makefile-gcc:
|
||||
|
||||
tags: [ "docker-debian8" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:8
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
|
||||
extends: .job-linux-desktop
|
||||
|
||||
|
||||
job-debian8-makefile-clang:
|
||||
|
||||
tags: [ "docker-debian8" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:8
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
|
||||
extends: .job-linux-desktop
|
||||
|
||||
#################################################
|
||||
# Ninja
|
||||
#################################################
|
||||
|
||||
#job-debian8-ninja-gcc:
|
||||
#
|
||||
# tags: [ "docker-debian8" ]
|
||||
# image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:8
|
||||
# variables:
|
||||
# CMAKE_GENERATOR: Ninja
|
||||
# CC: gcc
|
||||
# CXX: g++
|
||||
# extends: .job-linux-desktop
|
||||
|
||||
|
||||
#job-debian8-ninja-clang:
|
||||
#
|
||||
# tags: [ "docker-debian8" ]
|
||||
# image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:8
|
||||
# variables:
|
||||
# CMAKE_GENERATOR: Ninja
|
||||
# CC: clang
|
||||
# CXX: clang++
|
||||
# extends: .job-linux-desktop
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
#################################################
|
||||
# Makefile
|
||||
#################################################
|
||||
|
||||
job-debian9-makefile-gcc:
|
||||
|
||||
tags: [ "docker-debian9" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:9
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
|
||||
extends: .scheduled-job-linux-desktop
|
||||
|
||||
|
||||
job-debian9-makefile-clang:
|
||||
|
||||
tags: [ "docker-debian9" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:9
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
|
||||
extends: .scheduled-job-linux-desktop
|
||||
|
||||
#################################################
|
||||
# Ninja
|
||||
#################################################
|
||||
|
||||
job-debian9-ninja-gcc:
|
||||
|
||||
tags: [ "docker-debian9" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:9
|
||||
variables:
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
extends: .job-linux-desktop
|
||||
|
||||
|
||||
job-debian9-ninja-clang:
|
||||
|
||||
tags: [ "docker-debian9" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-debian:9
|
||||
variables:
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
extends: .job-linux-desktop
|
||||
|
|
@ -11,26 +11,18 @@
|
|||
- cmake --version
|
||||
- export CC=$CC
|
||||
- export CXX=$CXX
|
||||
- mkdir -p build-desktop/OUTPUT
|
||||
- mkdir -p build/OUTPUT
|
||||
- echo $CMAKE_GENERATOR
|
||||
- echo $DEFAULT_LINUX_CMAKE_OPTIONS
|
||||
- echo $CMAKE_OPTIONS
|
||||
- echo $CMAKE_SANITIZER_OPTIONS
|
||||
# SDK Building
|
||||
- cd build-desktop
|
||||
- cd build
|
||||
- cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_VERBOSE_MAKEFILE=ON -DLINPHONESDK_PLATFORM=Desktop $DEFAULT_LINUX_CMAKE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $CMAKE_SANITIZER_OPTIONS
|
||||
- cmake --build . --target sdk $LBC_NODEBUG_OPTIONS
|
||||
# Minizip install to OUTPUT folder
|
||||
- cmake ..
|
||||
- cmake --build . --target minizip $LBC_NODEBUG_OPTIONS
|
||||
- cmake --build . --target install $LBC_NODEBUG_OPTIONS
|
||||
# Update CMake installation
|
||||
- cmake .. -G "$CMAKE_GENERATOR" $DEFAULT_LINUX_CMAKE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $CMAKE_SANITIZER_OPTIONS
|
||||
- cmake --build . --target linphone-qt $LBC_NODEBUG_OPTIONS
|
||||
- cmake --build . --target install
|
||||
- cmake --build . --target all $LBC_NODEBUG_OPTIONS
|
||||
|
||||
artifacts:
|
||||
paths:
|
||||
- build-desktop/OUTPUT
|
||||
- build/OUTPUT
|
||||
expire_in: 1 week
|
||||
|
||||
|
|
|
|||
|
|
@ -1,51 +0,0 @@
|
|||
#################################################
|
||||
# Makefile
|
||||
#################################################
|
||||
|
||||
job-ubuntu-rolling-makefile-gcc:
|
||||
|
||||
tags: [ "docker-ubuntu-rolling" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:rolling
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
|
||||
extends: .scheduled-job-linux-desktop
|
||||
|
||||
|
||||
job-ubuntu-rolling-makefile-clang:
|
||||
|
||||
tags: [ "docker-ubuntu-rolling" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:rolling
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
|
||||
extends: .scheduled-job-linux-desktop
|
||||
|
||||
#################################################
|
||||
# Ninja
|
||||
#################################################
|
||||
|
||||
job-ubuntu-rolling-ninja-gcc:
|
||||
|
||||
tags: [ "docker-ubuntu-rolling" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:rolling
|
||||
variables:
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CC: gcc
|
||||
CXX: g++
|
||||
extends: .job-linux-desktop
|
||||
|
||||
|
||||
job-ubuntu-rolling-ninja-clang:
|
||||
|
||||
tags: [ "docker-ubuntu-rolling" ]
|
||||
image: gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:rolling
|
||||
variables:
|
||||
CMAKE_GENERATOR: Ninja
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
extends: .job-linux-desktop
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
#################################################
|
||||
# Ccache
|
||||
#################################################
|
||||
|
||||
.linux-ccache:
|
||||
|
||||
cache:
|
||||
key: $CI_JOB_NAME
|
||||
paths:
|
||||
- ccache/
|
||||
|
||||
before_script:
|
||||
- mkdir -p ccache
|
||||
- echo "max_size = $CCACHE_SIZE" > ccache/ccache.conf
|
||||
- export CCACHE_BASEDIR=${PWD}
|
||||
- export CCACHE_DIR=${PWD}/ccache
|
||||
- ccache -s
|
||||
|
||||
after_script:
|
||||
- export CCACHE_DIR=${PWD}/ccache
|
||||
- ccache -s
|
||||
|
||||
#################################################
|
||||
# Job
|
||||
#################################################
|
||||
|
||||
.job-linux-desktop:
|
||||
|
||||
stage: build
|
||||
|
||||
extends: .linux-ccache
|
||||
|
||||
script:
|
||||
- export CC=$CC
|
||||
- export CXX=$CXX
|
||||
- ./prepare.py -G "$CMAKE_GENERATOR" -cc $DEFAULT_LINUX_CMAKE_OPTIONS $CMAKE_OPTIONS
|
||||
- cmake --build WORK/desktop/cmake -- $ADDITIONAL_BUILD_OPTIONS
|
||||
|
||||
#################################################
|
||||
# RPM
|
||||
#################################################
|
||||
|
||||
.job-linux-rpm:
|
||||
|
||||
stage: package
|
||||
|
||||
script:
|
||||
- sudo rpm -i --replacepkgs /linphone-qt-*
|
||||
- ./prepare.py desktop-rpm $DEFAULT_CMAKE_OPTIONS $CMAKE_OPTIONS
|
||||
- make
|
||||
|
||||
artifacts:
|
||||
paths:
|
||||
- WORK/desktop-rpm/rpmbuild/RPMS/x86_64/*.rpm
|
||||
when: always
|
||||
expire_in: 1 week
|
||||
|
||||
#################################################
|
||||
# Schedule
|
||||
#################################################
|
||||
|
||||
.scheduled-job-linux-desktop:
|
||||
|
||||
extends: .job-linux-desktop
|
||||
only:
|
||||
- schedules
|
||||
|
|
@ -7,24 +7,16 @@
|
|||
ccache -s
|
||||
export Qt5_DIR=/usr/local/opt/qt/lib/cmake
|
||||
export PATH=$PATH:/usr/local/opt/qt/bin
|
||||
if [ -d "build-desktop" ]; then rm -rf build-desktop; fi;
|
||||
mkdir -p build-desktop/OUTPUT
|
||||
cd build-desktop
|
||||
if [ -d "build" ]; then rm -rf build; fi;
|
||||
mkdir -p build/OUTPUT
|
||||
cd build
|
||||
#SDK Building
|
||||
echo $CMAKE_GENERATOR
|
||||
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 $DEFAULT_MACOS_CMAKE_OPTIONS $XCODE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS
|
||||
cmake --build . --target sdk $LBC_NODEBUG_OPTIONS -- $ADDITIONAL_BUILD_OPTIONS
|
||||
# Minizip install to OUTPUT folder
|
||||
cmake ..
|
||||
cmake --build . --target minizip
|
||||
cmake --build . --target install
|
||||
# Update CMake installation
|
||||
cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 $DEFAULT_MACOS_CMAKE_OPTIONS $XCODE_OPTIONS $CMAKE_OPTIONS
|
||||
cmake --build . --target linphone-qt -- $ADDITIONAL_BUILD_OPTIONS
|
||||
cmake --build . --target install -- $ADDITIONAL_BUILD_OPTIONS
|
||||
cmake --build . --target all $LBC_NODEBUG_OPTIONS -- $ADDITIONAL_BUILD_OPTIONS
|
||||
ccache -s
|
||||
|
||||
.job-macosx-desktop:
|
||||
|
|
@ -34,7 +26,7 @@
|
|||
- *build_all_script
|
||||
artifacts:
|
||||
paths:
|
||||
- build-desktop/OUTPUT
|
||||
- build/OUTPUT
|
||||
expire_in: 1 week
|
||||
|
||||
#################################################
|
||||
|
|
@ -91,14 +83,15 @@ job-macosx-makefile-package:
|
|||
only:
|
||||
variables:
|
||||
- $NIGHTLY_MASTER
|
||||
variables:
|
||||
CMAKE_OPTIONS: -DENABLE_PACKAGING=YES
|
||||
extends: job-macosx-makefile
|
||||
script:
|
||||
- *build_all_script
|
||||
- cmake --build . --target package -- $ADDITIONAL_BUILD_OPTIONS
|
||||
- codesign --verbose -s "$MACOS_SIGNING_IDENTITY" CPackBuild/Linphone*.dmg
|
||||
- codesign --verbose -s "$MACOS_SIGNING_IDENTITY" OUTPUT/Packages/Linphone*.dmg
|
||||
artifacts:
|
||||
paths:
|
||||
- build-desktop/CPackBuild/Linphone*.dmg
|
||||
- build/OUTPUT/Packages/Linphone*.dmg
|
||||
expire_in: 1 week
|
||||
|
||||
#################################################
|
||||
|
|
@ -114,4 +107,4 @@ job-macosx-makefile-deploy:
|
|||
variables:
|
||||
- $NIGHTLY_MASTER
|
||||
script:
|
||||
- scp build-desktop/CPackBuild/Linphone*.dmg $DEPLOY_SERVER:$MACOSX_UPLOAD_DIRECTORY/app/
|
||||
- scp build/OUTPUT/Packages/Linphone*.dmg $DEPLOY_SERVER:$MACOSX_UPLOAD_DIRECTORY/app/
|
||||
|
|
|
|||
|
|
@ -1,91 +0,0 @@
|
|||
|
||||
.job-macosx:
|
||||
|
||||
stage: build
|
||||
|
||||
tags: [ "macosx" ]
|
||||
|
||||
script:
|
||||
- ccache -s
|
||||
- export Qt5_DIR=/usr/local/opt/qt/lib/cmake
|
||||
- export PATH=$PATH:/usr/local/opt/qt/bin
|
||||
- python prepare.py -G "$CMAKE_GENERATOR" -cc --package -DLINPHONE_BUILDER_SIGNING_IDENTITY="$MACOS_SIGNING_IDENTITY" $DEFAULT_MACOS_CMAKE_OPTIONS $CMAKE_OPTIONS
|
||||
- cmake --build WORK/desktop/cmake -- $ADDITIONAL_BUILD_OPTIONS
|
||||
- codesign --verbose -s "$MACOS_SIGNING_IDENTITY" WORK/desktop/Build/linphone_package/Linphone-*.dmg
|
||||
- ccache -s
|
||||
|
||||
artifacts:
|
||||
paths:
|
||||
- WORK/desktop/Build/linphone_package/$PACKAGE_NAME-*.dmg
|
||||
- WORK/desktop/Build/linphone_package/linphone-sdk-*-mac.zip
|
||||
when: always
|
||||
expire_in: 1 week
|
||||
|
||||
|
||||
.scheduled-job-macosx:
|
||||
|
||||
extends: .job-macosx
|
||||
only:
|
||||
- schedules
|
||||
|
||||
|
||||
#################################################
|
||||
# Makefile
|
||||
#################################################
|
||||
|
||||
job-macosx-makefile:
|
||||
|
||||
variables:
|
||||
CMAKE_GENERATOR: Unix Makefiles
|
||||
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
|
||||
extends: .scheduled-job-macosx
|
||||
|
||||
#################################################
|
||||
# Ninja
|
||||
#################################################
|
||||
|
||||
job-macosx-ninja:
|
||||
|
||||
variables:
|
||||
CMAKE_GENERATOR: Ninja
|
||||
extends: .job-macosx
|
||||
|
||||
#################################################
|
||||
# Xcode
|
||||
#################################################
|
||||
|
||||
job-macosx-xcode:
|
||||
|
||||
stage: build
|
||||
|
||||
tags: [ "macosx" ]
|
||||
|
||||
only:
|
||||
- schedules
|
||||
script:
|
||||
- export Qt5_DIR=/usr/local/opt/qt/lib/cmake
|
||||
- export PATH=$PATH:/usr/local/opt/qt/bin
|
||||
- python prepare.py -G Xcode -cc --package $DEFAULT_MACOS_CMAKE_OPTIONS $CMAKE_OPTIONS
|
||||
- cmake --build WORK/desktop/cmake -- -IDEBuildOperationMaxNumberOfConcurrentCompileTasks=`sysctl -n hw.ncpu`
|
||||
|
||||
artifacts:
|
||||
paths:
|
||||
- WORK/desktop/Build/linphone_package/$PACKAGE_NAME-*.dmg
|
||||
- WORK/desktop/Build/linphone_package/linphone-sdk-*-mac.zip
|
||||
when: always
|
||||
expire_in: 1 week
|
||||
|
||||
#################################################
|
||||
# Deploy
|
||||
#################################################
|
||||
|
||||
job-macosx-deploy:
|
||||
|
||||
stage: deploy
|
||||
tags: [ "deploy" ]
|
||||
|
||||
dependencies:
|
||||
- job-macosx-ninja
|
||||
|
||||
script:
|
||||
- scp WORK/desktop/Build/linphone_package/$PACKAGE_NAME-*-mac.dmg $DEPLOY_SERVER:$MACOSX_UPLOAD_DIRECTORY/
|
||||
|
|
@ -54,9 +54,9 @@
|
|||
script:
|
||||
- SET Qt5_DIR=C:\Qt\5.12.6\msvc2017\lib\cmake
|
||||
- SET PATH=%PATH%;C:\Qt\5.12.6\msvc2017\bin
|
||||
- IF EXIST build-desktop RMDIR /S /Q build-desktop
|
||||
- mkdir build-desktop
|
||||
- cd build-desktop
|
||||
- IF EXIST build RMDIR /S /Q build
|
||||
- mkdir build
|
||||
- cd build
|
||||
- mkdir OUTPUT
|
||||
#SDK Building
|
||||
#we launch the msvc-cl wrapper located in python scripts folder
|
||||
|
|
@ -65,19 +65,11 @@
|
|||
- C:\PROGRA~1\Python37\Scripts\cl -s
|
||||
- cmake .. -G "Visual Studio 15 2017" -DLINPHONESDK_PLATFORM=Desktop -DENABLE_CSHARP_WRAPPER=YES -DCMAKE_BUILD_TYPE=Release %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS%
|
||||
- cmake --build . --target ALL_BUILD --config Release %LBC_NODEBUG_OPTIONS% -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
# Minizip install to OUTPUT folder
|
||||
- cmake ..
|
||||
- cmake --build . --target minizip
|
||||
- cmake --build . --target install --config Release %LBC_NODEBUG_OPTIONS% -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
# Update CMake installation
|
||||
- cmake .. -G "Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=Release %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS%
|
||||
- cmake --build . --target linphone-qt --config Release -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
- cmake --build . --target install --config Release -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
- C:\PROGRA~1\Python37\Scripts\cl -s
|
||||
|
||||
artifacts:
|
||||
paths:
|
||||
- build-desktop\OUTPUT
|
||||
- build\OUTPUT
|
||||
expire_in: 2 days
|
||||
|
||||
.job-windows-vs2017-scheduled:
|
||||
|
|
@ -124,28 +116,21 @@ job-windows-vs2017-package:
|
|||
script:
|
||||
- SET Qt5_DIR=C:\Qt\5.12.6\msvc2017\lib\cmake
|
||||
- SET PATH=%PATH%;C:\Qt\5.12.6\msvc2017\bin
|
||||
- IF EXIST build-desktop RMDIR /S /Q build-desktop
|
||||
- mkdir build-desktop
|
||||
- cd build-desktop
|
||||
- IF EXIST build RMDIR /S /Q build
|
||||
- mkdir build
|
||||
- cd build
|
||||
- mkdir OUTPUT
|
||||
#SDK Building
|
||||
#we launch the msvc-cl wrapper located in python scripts folder
|
||||
#this wrapper relays only needed calls to the real compiler
|
||||
#cache stats display
|
||||
- C:\PROGRA~1\Python37\Scripts\cl -s
|
||||
- cmake .. -G "Visual Studio 15 2017" -DLINPHONESDK_PLATFORM=Desktop -DENABLE_CSHARP_WRAPPER=YES -DCMAKE_BUILD_TYPE=Release %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS%
|
||||
- cmake .. -G "Visual Studio 15 2017" -DLINPHONESDK_PLATFORM=Desktop -DENABLE_CSHARP_WRAPPER=YES -DCMAKE_BUILD_TYPE=Release -DENABLE_PACKAGING=YES %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS%
|
||||
- cmake --build . --target ALL_BUILD --config Release %LBC_NODEBUG_OPTIONS% -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
# Minizip install to OUTPUT folder
|
||||
- cmake ..
|
||||
- cmake --build . --target minizip
|
||||
- cmake --build . --target install --config Release %LBC_NODEBUG_OPTIONS% -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
# Update CMake installation
|
||||
- cmake .. -G "Visual Studio 15 2017" -DCMAKE_BUILD_TYPE=Release %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS%
|
||||
- cmake --build . --target linphone-qt --config Release -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
- cmake --build . --target package --config Release -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
- C:\PROGRA~1\Python37\Scripts\cl -s
|
||||
- mkdir "%CI_PROJECT_DIR%/results"
|
||||
- cd CPackBuild
|
||||
- cd OUTPUT
|
||||
- cd Packages
|
||||
- copy /B *.exe "%CI_PROJECT_DIR%/results"
|
||||
|
||||
artifacts:
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
#################################################
|
||||
# Visual Studio 2015
|
||||
#################################################
|
||||
|
||||
job-windows-vs2015:
|
||||
|
||||
stage: build
|
||||
|
||||
tags: [ "windows" ]
|
||||
|
||||
script:
|
||||
- echo %Qt5_DIR%
|
||||
- echo %PATH%
|
||||
- if DEFINED WINDOWS_SIGNING_DIRECTORY ( xcopy /I /Y "%WINDOWS_SIGNING_DIRECTORY%" "cmake_builder\\linphone_package\\sign" )
|
||||
- python prepare.py -G "Visual Studio 14 2015" --package %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS%
|
||||
- cmake --build WORK/desktop/cmake --config Release -- /maxcpucount
|
||||
|
||||
artifacts:
|
||||
paths:
|
||||
- WORK/desktop/Build/linphone_package/%PACKAGE_NAME%-*-win32.exe
|
||||
expire_in: 1 week
|
||||
|
||||
#################################################
|
||||
# Deploy
|
||||
#################################################
|
||||
|
||||
job-windows-deploy:
|
||||
|
||||
stage: deploy
|
||||
tags: [ "deploy" ]
|
||||
|
||||
dependencies:
|
||||
- job-windows-vs2015
|
||||
|
||||
script:
|
||||
- scp WORK/desktop/Build/linphone_package/$PACKAGE_NAME-*-win32.exe $DEPLOY_SERVER:$WINDOWS_UPLOAD_DIRECTORY/
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
- Add caller/callee on saved files.
|
||||
- Supports totally french, english, portuguese, russian, turkish, ukrainian.
|
||||
- App Nap avoiding for MacOs
|
||||
|
||||
- Simplify building process
|
||||
|
||||
### Fixes
|
||||
|
||||
|
|
|
|||
566
CMakeLists.txt
|
|
@ -20,30 +20,37 @@
|
|||
#
|
||||
################################################################################
|
||||
|
||||
# First building command:
|
||||
# cmake .. && cmake --build . --target all --parallel 10 && cmake --build . --target install && cmake ..
|
||||
# Logic : Prepare first building of the SDK and Minizip. Install binaries and prepare for application building.
|
||||
# Next, we can build the application with cmake --build . --target all --parallel 10 && cmake --build . --target install
|
||||
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
get_cmake_property(vars CACHE_VARIABLES)
|
||||
foreach(var ${vars})
|
||||
get_property(currentHelpString CACHE "${var}" PROPERTY HELPSTRING)
|
||||
if("${currentHelpString}" MATCHES "No help, variable specified on the command line." OR "${currentHelpString}" STREQUAL "")
|
||||
#message("${var} = [${${var}}] -- ${currentHelpString}") # uncomment to see the variables being processed
|
||||
list(APPEND USER_ARGS "-D${var}=${${var}}")
|
||||
if( "${var}" STREQUAL "CMAKE_PREFIX_PATH")
|
||||
set(PREFIX_PATH ";${${var}}")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
project(linphoneqt VERSION 4.1.1)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(CheckCXXCompilerFlag)
|
||||
|
||||
# Prepare gobal CMAKE configuration specific to the current project
|
||||
set(SDK_BUILD_DIR "${CMAKE_BINARY_DIR}/WORK") # SDK build in WORK. Keep all in it.
|
||||
set(LINPHONE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/linphone-sdk/desktop") #This is fixed by the SDK
|
||||
set(LINPHONE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/linphone-sdk/desktop")
|
||||
set(MINIZIP_BUILD_DIR "${CMAKE_BINARY_DIR}/minizip_BUILD")
|
||||
set(MINIZIP_OUTPUT_DIR "${CMAKE_BINARY_DIR}/minizip_OUTPUT")
|
||||
|
||||
set(APPLICATION_OUTPUT_DIR "${CMAKE_BINARY_DIR}/OUTPUT")
|
||||
|
||||
message("minizip=${MINIZIP_OUTPUT_DIR} sdk=${LINPHONE_OUTPUT_DIR}")
|
||||
|
||||
list(APPEND CMAKE_PREFIX_PATH "${LINPHONE_OUTPUT_DIR};${MINIZIP_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR}")
|
||||
set(CMAKE_PREFIX_PATH "${LINPHONE_OUTPUT_DIR};${MINIZIP_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR}${PREFIX_PATH}")
|
||||
string(REPLACE ";" "|" PREFIX_PATH "${CMAKE_PREFIX_PATH}")
|
||||
#set(PREFIX_PATH "${LINPHONE_OUTPUT_DIR}|${MINIZIP_OUTPUT_DIR}|${APPLICATION_OUTPUT_DIR}${PREFIX_PATH}")
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/lib64;$ORIGIN/../lib64;$ORIGIN/lib;$ORIGIN/../lib")
|
||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
endif()
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
# Avoid cmake warning if CMP0071 is not set.
|
||||
if (POLICY CMP0071)
|
||||
cmake_policy(SET CMP0071 NEW)
|
||||
|
|
@ -52,18 +59,21 @@ endif ()
|
|||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
set(APP_LIBRARY app-library)
|
||||
include(application_info.cmake)
|
||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
message(STATUS "Setting build type to 'RelWithDebInfo' as none was specified")
|
||||
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE)
|
||||
# Set the available build type values for cmake-gui
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo")
|
||||
endif()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
set(TARGET_NAME linphone-qt)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# SET OPTIONS
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
option(ENABLE_APP_PACKAGING "Enable packaging" NO)
|
||||
option(ENABLE_UPDATE_CHECK "Enable update check." NO)
|
||||
option(ENABLE_UNIT_TESTS "Enable unit test of SDK." NO )
|
||||
option(ENABLE_TESTS "Build with testing binaries of SDK" NO )
|
||||
|
|
@ -72,7 +82,6 @@ option(ENABLE_TOOLS "Enable tools of SDK" NO)
|
|||
option(ENABLE_STRICT "Build with strict compilator flags e.g. -Wall -Werror" NO)
|
||||
|
||||
option(ENABLE_FFMPEG "Build mediastreamer2 with ffmpeg video support." YES)
|
||||
option(ENABLE_OPUS "Build mediastreamer2 with the OPUS codec." YES)
|
||||
|
||||
if(WIN32 OR APPLE)
|
||||
else()
|
||||
|
|
@ -81,443 +90,100 @@ endif()
|
|||
|
||||
option(ENABLE_RELATIVE_PREFIX "Set Internal packages relative to the binary" YES)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(CheckCXXCompilerFlag)
|
||||
set(APP_OPTIONS "-DENABLE_UPDATE_CHECK=${ENABLE_UPDATE_CHECK}")
|
||||
list(APPEND APP_OPTIONS "-DENABLE_APP_PACKAGING=${ENABLE_APP_PACKAGING}")
|
||||
list(APPEND APP_OPTIONS "-DENABLE_UNIT_TESTS=${ENABLE_UNIT_TESTS}")
|
||||
list(APPEND APP_OPTIONS "-DENABLE_TESTS=${ENABLE_TESTS}")
|
||||
list(APPEND APP_OPTIONS "-DENABLE_TESTS_COMPONENTS=${ENABLE_TESTS_COMPONENTS}")
|
||||
list(APPEND APP_OPTIONS "-DENABLE_TOOLS=${ENABLE_TOOLS}")
|
||||
list(APPEND APP_OPTIONS "-DENABLE_STRICT=${ENABLE_STRICT}")
|
||||
list(APPEND APP_OPTIONS "-DENABLE_FFMPEG=${ENABLE_FFMPEG}")
|
||||
if(ENABLE_V4L)
|
||||
list(APPEND APP_OPTIONS "-DENABLE_V4L=${ENABLE_V4L}")
|
||||
endif()
|
||||
list(APPEND APP_OPTIONS "-DENABLE_RELATIVE_PREFIX=${ENABLE_RELATIVE_PREFIX}")
|
||||
|
||||
list(APPEND APP_OPTIONS "-DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR}")
|
||||
|
||||
include(ExternalProject)
|
||||
set(PROJECT_BUILD_COMMAND "")
|
||||
if(CMAKE_BUILD_PARALLEL_LEVEL)
|
||||
list(APPEND APP_OPTIONS "-DCMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}")
|
||||
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0") #CMAKE_BUILD_PARALLEL_LEVEL will not always work for External projects
|
||||
list(APPEND PROJECT_BUILD_COMMAND "--parallel" "${CMAKE_BUILD_PARALLEL_LEVEL}")
|
||||
endif()
|
||||
endif()
|
||||
if(CMAKE_VERBOSE_MAKEFILE)
|
||||
list(APPEND APP_OPTIONS "-DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE}")
|
||||
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14.0")
|
||||
list(APPEND PROJECT_BUILD_COMMAND "--verbose")
|
||||
endif()
|
||||
endif()
|
||||
message("User Args : ${USER_ARGS}")
|
||||
|
||||
ExternalProject_Add(sdk PREFIX "${CMAKE_BINARY_DIR}/sdk"
|
||||
SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-sdk"
|
||||
INSTALL_DIR "${LINPHONE_OUTPUT_DIR}"
|
||||
STAMP_DIR "${SDK_BUILD_DIR}/stamp"
|
||||
BINARY_DIR "${SDK_BUILD_DIR}"
|
||||
STEP_TARGETS build
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
|
||||
INSTALL_COMMAND cmake -E echo "Skipping install step."
|
||||
LIST_SEPARATOR | # Use the alternate list separator
|
||||
CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
|
||||
#BUILD_ALWAYS NO #${DO_BUILD}
|
||||
)
|
||||
ExternalProject_Add_Step(sdk force_build
|
||||
COMMENT "Forcing build for 'desktop'"
|
||||
DEPENDEES configure
|
||||
DEPENDERS build
|
||||
ALWAYS 1
|
||||
)
|
||||
#Don't use minizip as target name because it can be a conflict with link libraries names
|
||||
ExternalProject_Add(miniziplib PREFIX "${CMAKE_BINARY_DIR}/minizip"
|
||||
SOURCE_DIR "${CMAKE_SOURCE_DIR}/submodules/externals/minizip"
|
||||
INSTALL_DIR "${MINIZIP_OUTPUT_DIR}"
|
||||
BUILD_ALWAYS ON
|
||||
DEPENDS sdk
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
|
||||
LIST_SEPARATOR | # Use the alternate list separator
|
||||
CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
|
||||
)
|
||||
include(FindPkgConfig)
|
||||
find_package(LinphoneCxx CONFIG)
|
||||
find_package(Linphone CONFIG)
|
||||
find_package(bctoolbox CONFIG)
|
||||
find_package(belcard CONFIG)
|
||||
find_package(Mediastreamer2 CONFIG)
|
||||
find_package(ortp CONFIG)
|
||||
pkg_search_module(MINIZIP minizip)
|
||||
|
||||
if( NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR NOT (belcard_FOUND) OR NOT (Mediastreamer2_FOUND) OR NOT (ortp_FOUND))
|
||||
message("Linphone packages are not installed. Build and install it in order to build Minizip and then Desktop Application.")
|
||||
set(CMAKE_INSTALL_PREFIX "${LINPHONE_OUTPUT_DIR}")
|
||||
add_subdirectory("linphone-sdk" "${SDK_BUILD_DIR}")
|
||||
elseif( APP_FORCE_SDK_BUILD )
|
||||
set(CMAKE_INSTALL_PREFIX "${LINPHONE_OUTPUT_DIR}")
|
||||
add_subdirectory("linphone-sdk" "${SDK_BUILD_DIR}")
|
||||
if(NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR NOT (belcard_FOUND) OR NOT (Mediastreamer2_FOUND) OR NOT (ortp_FOUND) OR NOT(MINIZIP_FOUND) )
|
||||
message("Projects are set as External projects. You can start building them by using for example : cmake --build . --target all")
|
||||
ExternalProject_Add(linphone-qt PREFIX "${CMAKE_BINARY_DIR}/linphoneqt"
|
||||
SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-app"
|
||||
INSTALL_DIR "${APPLICATION_OUTPUT_DIR}"
|
||||
DEPENDS miniziplib sdk
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
|
||||
LIST_SEPARATOR | # Use the alternate list separator
|
||||
CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
|
||||
# ${APP_OPTIONS}
|
||||
BUILD_ALWAYS ON
|
||||
)
|
||||
set(AUTO_REGENERATION auto_regeneration)
|
||||
add_custom_target(${AUTO_REGENERATION} ALL
|
||||
COMMAND ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS linphone-qt)
|
||||
else()
|
||||
# Linphone SDK has been builded
|
||||
message("LINPHONECXX : ${LINPHONECXX_INCLUDE_DIRS} => ${LINPHONECXX_LIBRARIES}")
|
||||
find_package(Minizip)
|
||||
if( NOT(Minizip_FOUND))
|
||||
message("Minizip are not installed. Build and install it in order to build Desktop Application.")
|
||||
set(CMAKE_INSTALL_PREFIX "${MINIZIP_OUTPUT_DIR}")
|
||||
add_subdirectory(submodules/externals/minizip "submodules/externals/minizip/build-minizip")
|
||||
else()
|
||||
set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}")
|
||||
if(WIN32)
|
||||
set(EXECUTABLE_OUTPUT_DIR "${CMAKE_BINARY_DIR}")
|
||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${EXECUTABLE_OUTPUT_DIR}")
|
||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${EXECUTABLE_OUTPUT_DIR}")
|
||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${EXECUTABLE_OUTPUT_DIR}")
|
||||
endif()
|
||||
message("MINIZIP : ${MINIZIP_INCLUDE_DIRS} => ${MINIZIP_LIBRARIES}")
|
||||
message("INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} FRAMEWORK_PATH=${CMAKE_FRAMEWORK_PATH}")
|
||||
message("LINPHONE : ${LINPHONE_INCLUDE_DIRS} => ${LINPHONE_LIBRARIES}")
|
||||
message("LINPHONECXX : ${LINPHONECXX_INCLUDE_DIRS} => ${LINPHONECXX_LIBRARIES}")
|
||||
|
||||
# Build configuration
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG -DQT_NO_DEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG")
|
||||
if( WIN32)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINSOCKAPI_")#remove error from windows headers order
|
||||
endif()
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)#useful for config.h
|
||||
|
||||
set(QT5_PACKAGES Core Gui Quick Widgets QuickControls2 Svg LinguistTools Concurrent Network)
|
||||
if (UNIX AND NOT APPLE)
|
||||
list(APPEND QT5_PACKAGES DBus)
|
||||
endif ()
|
||||
set(QT5_PACKAGES_OPTIONAL TextToSpeech)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
#-------------------------------------------------
|
||||
set(ASSETS_DIR "assets")
|
||||
set(SOURCES
|
||||
src/app/App.cpp
|
||||
src/app/AppController.cpp
|
||||
src/app/cli/Cli.cpp
|
||||
src/app/logger/Logger.cpp
|
||||
src/app/paths/Paths.cpp
|
||||
src/app/providers/AvatarProvider.cpp
|
||||
src/app/providers/ImageProvider.cpp
|
||||
src/app/providers/ThumbnailProvider.cpp
|
||||
src/app/translator/DefaultTranslator.cpp
|
||||
src/components/assistant/AssistantModel.cpp
|
||||
src/components/authentication/AuthenticationNotifier.cpp
|
||||
src/components/call/CallModel.cpp
|
||||
src/components/calls/CallsListModel.cpp
|
||||
src/components/calls/CallsListProxyModel.cpp
|
||||
src/components/camera/Camera.cpp
|
||||
src/components/camera/CameraPreview.cpp
|
||||
src/components/camera/MSFunctions.cpp
|
||||
src/components/chat/ChatModel.cpp
|
||||
src/components/chat/ChatProxyModel.cpp
|
||||
src/components/codecs/AbstractCodecsModel.cpp
|
||||
src/components/codecs/AudioCodecsModel.cpp
|
||||
src/components/codecs/VideoCodecsModel.cpp
|
||||
src/components/conference/ConferenceAddModel.cpp
|
||||
src/components/conference/ConferenceHelperModel.cpp
|
||||
src/components/conference/ConferenceModel.cpp
|
||||
src/components/contact/ContactModel.cpp
|
||||
src/components/contact/VcardModel.cpp
|
||||
src/components/contacts/ContactsListModel.cpp
|
||||
src/components/contacts/ContactsListProxyModel.cpp
|
||||
src/components/core/CoreHandlers.cpp
|
||||
src/components/core/CoreManager.cpp
|
||||
src/components/core/event-count-notifier/AbstractEventCountNotifier.cpp
|
||||
src/components/file/FileDownloader.cpp
|
||||
src/components/file/FileExtractor.cpp
|
||||
src/components/notifier/Notifier.cpp
|
||||
src/components/other/clipboard/Clipboard.cpp
|
||||
src/components/other/colors/Colors.cpp
|
||||
src/components/other/text-to-speech/TextToSpeech.cpp
|
||||
src/components/other/units/Units.cpp
|
||||
src/components/presence/OwnPresenceModel.cpp
|
||||
src/components/presence/Presence.cpp
|
||||
src/components/settings/AccountSettingsModel.cpp
|
||||
src/components/settings/SettingsModel.cpp
|
||||
src/components/sip-addresses/SipAddressesModel.cpp
|
||||
src/components/sip-addresses/SipAddressesProxyModel.cpp
|
||||
src/components/sip-addresses/SipAddressObserver.cpp
|
||||
src/components/sound-player/SoundPlayer.cpp
|
||||
src/components/telephone-numbers/TelephoneNumbersModel.cpp
|
||||
src/components/timeline/TimelineModel.cpp
|
||||
src/components/url-handlers/UrlHandlers.cpp
|
||||
src/utils/LinphoneUtils.cpp
|
||||
src/utils/MediastreamerUtils.cpp
|
||||
src/utils/QExifImageHeader.cpp
|
||||
src/utils/Utils.cpp
|
||||
)
|
||||
|
||||
set(HEADERS
|
||||
src/app/App.hpp
|
||||
src/app/AppController.hpp
|
||||
src/app/cli/Cli.hpp
|
||||
src/app/logger/Logger.hpp
|
||||
src/app/paths/Paths.hpp
|
||||
src/app/providers/AvatarProvider.hpp
|
||||
src/app/providers/ImageProvider.hpp
|
||||
src/app/providers/ThumbnailProvider.hpp
|
||||
src/app/single-application/SingleApplication.hpp
|
||||
src/app/translator/DefaultTranslator.hpp
|
||||
src/components/assistant/AssistantModel.hpp
|
||||
src/components/authentication/AuthenticationNotifier.hpp
|
||||
src/components/call/CallModel.hpp
|
||||
src/components/calls/CallsListModel.hpp
|
||||
src/components/calls/CallsListProxyModel.hpp
|
||||
src/components/camera/Camera.hpp
|
||||
src/components/camera/CameraPreview.hpp
|
||||
src/components/camera/MSFunctions.hpp
|
||||
src/components/chat/ChatModel.hpp
|
||||
src/components/chat/ChatProxyModel.hpp
|
||||
src/components/codecs/AbstractCodecsModel.hpp
|
||||
src/components/codecs/AudioCodecsModel.hpp
|
||||
src/components/codecs/VideoCodecsModel.hpp
|
||||
src/components/Components.hpp
|
||||
src/components/conference/ConferenceAddModel.hpp
|
||||
src/components/conference/ConferenceHelperModel.hpp
|
||||
src/components/conference/ConferenceModel.hpp
|
||||
src/components/contact/ContactModel.hpp
|
||||
src/components/contact/VcardModel.hpp
|
||||
src/components/contacts/ContactsListModel.hpp
|
||||
src/components/contacts/ContactsListProxyModel.hpp
|
||||
src/components/core/CoreHandlers.hpp
|
||||
src/components/core/CoreManager.hpp
|
||||
src/components/core/event-count-notifier/AbstractEventCountNotifier.hpp
|
||||
src/components/file/FileDownloader.hpp
|
||||
src/components/file/FileExtractor.hpp
|
||||
src/components/notifier/Notifier.hpp
|
||||
src/components/other/clipboard/Clipboard.hpp
|
||||
src/components/other/colors/Colors.hpp
|
||||
src/components/other/desktop-tools/DesktopTools.hpp
|
||||
src/components/other/text-to-speech/TextToSpeech.hpp
|
||||
src/components/other/units/Units.hpp
|
||||
src/components/presence/OwnPresenceModel.hpp
|
||||
src/components/presence/Presence.hpp
|
||||
src/components/settings/AccountSettingsModel.hpp
|
||||
src/components/settings/SettingsModel.hpp
|
||||
src/components/sip-addresses/SipAddressesModel.hpp
|
||||
src/components/sip-addresses/SipAddressesProxyModel.hpp
|
||||
src/components/sip-addresses/SipAddressObserver.hpp
|
||||
src/components/sound-player/SoundPlayer.hpp
|
||||
src/components/telephone-numbers/TelephoneNumbersModel.hpp
|
||||
src/components/timeline/TimelineModel.hpp
|
||||
src/components/url-handlers/UrlHandlers.hpp
|
||||
src/utils/LinphoneUtils.hpp
|
||||
src/utils/MediastreamerUtils.hpp
|
||||
src/utils/QExifImageHeader.hpp
|
||||
src/utils/Utils.hpp
|
||||
)
|
||||
|
||||
set(MAIN_FILE src/app/main.cpp)
|
||||
|
||||
if (APPLE)
|
||||
list(APPEND SOURCES
|
||||
src/app/single-application/SingleApplication.cpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierMacOs.m
|
||||
src/components/other/desktop-tools/DesktopToolsMacOs.cpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverMacOs.m
|
||||
src/components/other/desktop-tools/state-process/StateProcessMacOs.mm
|
||||
)
|
||||
list(APPEND HEADERS
|
||||
src/app/single-application/SingleApplicationPrivate.hpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierMacOs.hpp
|
||||
src/components/other/desktop-tools/DesktopToolsMacOs.hpp
|
||||
)
|
||||
elseif (WIN32)
|
||||
list(APPEND SOURCES
|
||||
src/app/single-application/SingleApplication.cpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.cpp
|
||||
src/components/other/desktop-tools/DesktopToolsWindows.cpp
|
||||
)
|
||||
list(APPEND HEADERS
|
||||
src/app/single-application/SingleApplicationPrivate.hpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.hpp
|
||||
src/components/other/desktop-tools/DesktopToolsWindows.hpp
|
||||
)
|
||||
else ()
|
||||
list(APPEND SOURCES
|
||||
src/app/single-application/SingleApplicationDBus.cpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.cpp
|
||||
src/components/other/desktop-tools/DesktopToolsLinux.cpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverDBus.cpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverXdg.cpp
|
||||
)
|
||||
list(APPEND HEADERS
|
||||
src/app/single-application/SingleApplicationDBusPrivate.hpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.hpp
|
||||
src/components/other/desktop-tools/DesktopToolsLinux.hpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverDBus.hpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverXdg.hpp
|
||||
)
|
||||
endif ()
|
||||
|
||||
set(QRC_RESOURCES resources.qrc)
|
||||
|
||||
set(LANGUAGES_DIRECTORY "${ASSETS_DIR}/languages")
|
||||
set(I18N_FILENAME i18n.qrc)
|
||||
set(LANGUAGES de en fr_FR ja lt ru sv tr pt_BR)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
function (PREPEND list prefix)
|
||||
set(new_list "")
|
||||
|
||||
foreach (elem ${${list}})
|
||||
list(APPEND new_list "${prefix}${elem}")
|
||||
endforeach ()
|
||||
|
||||
set(${list} ${new_list} PARENT_SCOPE)
|
||||
endfunction ()
|
||||
|
||||
# Force absolute paths.
|
||||
PREPEND(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/")
|
||||
PREPEND(HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/")
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Compute QML files list.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
set(QML_SOURCES)
|
||||
file(STRINGS ${QRC_RESOURCES} QRC_RESOURCES_CONTENT)
|
||||
foreach (line ${QRC_RESOURCES_CONTENT})
|
||||
set(result)
|
||||
string(REGEX REPLACE
|
||||
"^[ \t]*<[ \t]*file[ \t]*>[ \t]*(.+\\.[a-z]+)[ \t]*<[ \t]*/[ \t]*file[ \t]*>[ \t]*$"
|
||||
"\\1"
|
||||
result
|
||||
"${line}"
|
||||
)
|
||||
string(REGEX MATCH "\\.[a-z]+$" is_ui ${result})
|
||||
if (NOT ${is_ui} STREQUAL "")
|
||||
list(APPEND QML_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/${result}")
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Init git hooks.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
if (NOT WIN32)
|
||||
add_custom_target(
|
||||
check_qml DEPENDS ${QML_SOURCES}
|
||||
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/check_qml_syntax"
|
||||
)
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/tools/private/pre-commit"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/pre-commit"
|
||||
)
|
||||
set(_QML_IMPORT_PATHS "")
|
||||
list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/modules")
|
||||
list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/dev-modules")
|
||||
list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/scripts")
|
||||
list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/views")
|
||||
|
||||
|
||||
set(QML_IMPORT_PATH ${_QML_IMPORT_PATHS} CACHE STRING "Path used to locate CMake modules by Qt Creator" FORCE)
|
||||
|
||||
|
||||
if(APPLE)
|
||||
if(MS2_PLUGINS_LOCATION)
|
||||
set(MSPLUGINS_DIR ${MS2_PLUGINS_LOCATION})
|
||||
else()
|
||||
set(MSPLUGINS_DIR "Frameworks/mediastreamer2.framework/Versions/A/Libraries")
|
||||
endif()
|
||||
else()
|
||||
set(MSPLUGINS_DIR "${CMAKE_INSTALL_LIBDIR}/mediastreamer/plugins")
|
||||
endif()
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
|
||||
# ------------------------------------------------------------------------------
|
||||
# Build.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
include_directories(src/)
|
||||
|
||||
find_package(Qt5 COMPONENTS ${QT5_PACKAGES} REQUIRED)
|
||||
find_package(Qt5 COMPONENTS ${QT5_PACKAGES_OPTIONAL} QUIET)
|
||||
|
||||
if (CMAKE_INSTALL_RPATH)
|
||||
#Retrieve lib path from a know QT executable
|
||||
get_target_property(LUPDATE_PATH Qt5::lupdate LOCATION)
|
||||
get_filename_component(LUPDATE_PATH "${LUPDATE_PATH}" DIRECTORY)
|
||||
get_filename_component(QT_PATH "${LUPDATE_PATH}/../lib" ABSOLUTE)
|
||||
list(APPEND CMAKE_INSTALL_RPATH "${QT_PATH}")
|
||||
endif ()
|
||||
# Add languages support.
|
||||
add_subdirectory(${LANGUAGES_DIRECTORY})
|
||||
|
||||
list(APPEND SOURCES "${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGES_DIRECTORY}/${I18N_FILENAME}")
|
||||
|
||||
# Build.
|
||||
#add_library(${APP_LIBRARY} OBJECT ${SOURCES} ${HEADERS} ${RESOURCES} ${QML_SOURCES})
|
||||
add_library(${APP_LIBRARY} OBJECT ${SOURCES} ${HEADERS} ${QML_SOURCES} ${QRC_RESOURCES})
|
||||
set_property(TARGET ${APP_LIBRARY} PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
#Turn on automatic resources compilation by cmake
|
||||
#Instead of excplicitely calling qt5_add_resources
|
||||
set_property(TARGET ${APP_LIBRARY} PROPERTY AUTORCC ON)
|
||||
|
||||
bc_git_version(${TARGET_NAME} ${PROJECT_VERSION})
|
||||
add_dependencies(${APP_LIBRARY} ${TARGET_NAME}-git-version)
|
||||
add_dependencies(${APP_LIBRARY} update_translations)
|
||||
if (WIN32)
|
||||
add_executable(${TARGET_NAME} WIN32 $<TARGET_OBJECTS:${APP_LIBRARY}> ${ASSETS_DIR}/app-icon.rc ${MAIN_FILE})
|
||||
else ()
|
||||
add_executable(${TARGET_NAME} $<TARGET_OBJECTS:${APP_LIBRARY}> ${MAIN_FILE})
|
||||
endif ()
|
||||
|
||||
set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME "${EXECUTABLE_NAME}")
|
||||
set(INCLUDED_DIRECTORIES "${LINPHONECXX_INCLUDE_DIRS}" "${LINPHONE_INCLUDE_DIRS}" "${BELCARD_INCLUDE_DIRS}" "${BCTOOLBOX_INCLUDE_DIRS}" "${MEDIASTREAMER2_INCLUDE_DIRS}" "${MINIZIP_INCLUDE_DIRS}")
|
||||
set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES})
|
||||
if(WIN32)
|
||||
list(APPEND LIBRARIES ${MINIZIP_LIBRARIES})
|
||||
endif()
|
||||
foreach (package ${QT5_PACKAGES})
|
||||
list(APPEND INCLUDED_DIRECTORIES "${Qt5${package}_INCLUDE_DIRS}")
|
||||
# `qt5_create_translation` is provided from `LinguistTools` package.
|
||||
# But the `Qt5::LinguistTools` lib does not exist. Remove it.
|
||||
if (NOT (${package} STREQUAL LinguistTools))
|
||||
list(APPEND LIBRARIES ${Qt5${package}_LIBRARIES})
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
foreach (package ${QT5_PACKAGES_OPTIONAL})
|
||||
if ("${Qt5${package}_FOUND}")
|
||||
message("Optional package ${package} found.")
|
||||
list(APPEND INCLUDED_DIRECTORIES "${Qt5${package}_INCLUDE_DIRS}")
|
||||
list(APPEND LIBRARIES ${Qt5${package}_LIBRARIES})
|
||||
|
||||
string(TOUPPER "${package}" INCLUDE_NAME)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D${INCLUDE_NAME}_ENABLED")
|
||||
else ()
|
||||
message("Optional package ${package} not found.")
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
if (APPLE)
|
||||
list(APPEND LIBRARIES "-framework Cocoa -framework IOKit")
|
||||
# -framework linphone") #This doesn't work yet
|
||||
endif ()
|
||||
target_include_directories(${APP_LIBRARY} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES})
|
||||
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES})
|
||||
|
||||
target_link_libraries(${TARGET_NAME} ${LIBRARIES})
|
||||
if(WIN32)
|
||||
target_link_libraries(${TARGET_NAME} wsock32 ws2_32)
|
||||
endif()
|
||||
|
||||
foreach (target ${TARGET_NAME})
|
||||
message("Available target : ${target}")
|
||||
# install(TARGETS ${target}
|
||||
# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
# PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
# )
|
||||
endforeach ()
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
# Install desktop/icon files.
|
||||
configure_file("${ASSETS_DIR}/linphone.desktop.cmake" "${EXECUTABLE_NAME}.desktop" @ONLY)
|
||||
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}.desktop"
|
||||
DESTINATION "${CMAKE_INSTALL_DATADIR}/applications"
|
||||
)
|
||||
install(FILES "${ASSETS_DIR}/images/linphone_logo.svg"
|
||||
DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/"
|
||||
RENAME "${EXECUTABLE_NAME}.svg"
|
||||
)
|
||||
|
||||
set(ICON_DIRS 16x16 22x22 24x24 32x32 64x64 128x128 256x256)
|
||||
foreach (DIR ${ICON_DIRS})
|
||||
install(FILES "${ASSETS_DIR}/icons/hicolor/${DIR}/apps/icon.png"
|
||||
DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/${DIR}/apps/"
|
||||
RENAME "${EXECUTABLE_NAME}.png"
|
||||
)
|
||||
endforeach ()
|
||||
endif ()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# CPack settings & RPM.
|
||||
# ------------------------------------------------------------------------------
|
||||
set(LINPHONE_DESKTOP_DIR "${CMAKE_SOURCE_DIR}")
|
||||
set(LINPHONE_SDK_DIR "${CMAKE_BINARY_DIR}/linphone-sdk")
|
||||
set(TOOLS_DIR "${CMAKE_BINARY_DIR}/programs")
|
||||
set(LINPHONE_SOURCE_DIR ${EP_linphone_SOURCE_DIR})
|
||||
set(LINPHONE_BUILDER_SIGNING_IDENTITY ${LINPHONE_BUILDER_SIGNING_IDENTITY})
|
||||
set(LINPHONE_SDK_TMP "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-tmp")
|
||||
|
||||
add_subdirectory(build)
|
||||
add_subdirectory(cmake_builder/linphone_package)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# To start better integration into IDE.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
source_group(
|
||||
"Qml" REGULAR_EXPRESSION ".+\.qml$"
|
||||
)
|
||||
source_group(
|
||||
"Js" REGULAR_EXPRESSION ".+\.js$"
|
||||
)
|
||||
source_group(
|
||||
"Svg" REGULAR_EXPRESSION ".+\.svg$"
|
||||
)
|
||||
|
||||
# ------------------------------
|
||||
# Installation
|
||||
# ------------------------------
|
||||
if(APPLE)
|
||||
target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib")
|
||||
execute_process(COMMAND install_name_tool -id "@executable_path/../Frameworks/libminizip.dylib" "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib")
|
||||
elseif(NOT WIN32)
|
||||
target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.so")
|
||||
endif()
|
||||
endif()#If (LinphoneCxx_FOUND AND Minizip_FOUND)
|
||||
endif()#If (LinphoneCxx_FOUND)
|
||||
message("Adding Linphone Desktop in an IDE-friendly state")
|
||||
set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}")
|
||||
add_subdirectory(${CMAKE_SOURCE_DIR}/linphone-app)
|
||||
endif()
|
||||
ExternalProject_Add(linphoneqt-only PREFIX "${CMAKE_BINARY_DIR}/linphoneqt"
|
||||
SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-app"
|
||||
INSTALL_DIR "${APPLICATION_OUTPUT_DIR}"
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> ${PROJECT_BUILD_COMMAND}
|
||||
LIST_SEPARATOR | # Use the alternate list separator
|
||||
CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${PREFIX_PATH}
|
||||
EXCLUDE_FROM_ALL ON
|
||||
)
|
||||
|
|
|
|||
20
README.md
|
|
@ -61,27 +61,23 @@ Note: If you have `qtchooser` set in your `PATH`, the best use is :
|
|||
|
||||
### Building
|
||||
|
||||
The build is done in 3 steps. First, you need to build the SDK, then the submodule Minizip and finally, the application.
|
||||
The build is done by building the SDK, the submodule Minizip and the application. Their targets are `sdk`, `minizip` and `linphone-qt`.
|
||||
|
||||
1. Create your build folder at the root of the project : `mkdir build-desktop`
|
||||
Go to this new folder and begin the build process : `cd build-desktop`
|
||||
|
||||
2. Prepare your options : `cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo` By default, it will try compile all dependencies. You can remove some by adding `-DENABLE_<COMPONENT>=NO` to the command. You can use `cmake-gui ..` if you want to have a better access to them.
|
||||
2. Prepare your options : `cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo`. By default, it will try compile all needed dependencies. You can remove some by adding `-DENABLE_<COMPONENT>=NO` to the command. You can use `cmake-gui ..` if you want to have a better access to them. You can add `-DCMAKE_BUILD_PARALLEL_LEVEL=10` to do 10 parallel builds for speeding up the process. If it doesn't seem to work then it will be better to use CMake >= 3.12
|
||||
|
||||
3. Build the SDK : `cmake --build . --target sdk --config RelWithDebInfo`. You can add `--parallel 10` if you have CMake>3.12 to speedup the process.
|
||||
3. Build and install the whole project : `cmake --build . --target all` or `cmake --build . --target ALL_BUILD` on Windows.
|
||||
|
||||
4. Build The submodule. `cmake ..` and `cmake --build . --target install --config RelWithDebInfo`
|
||||
|
||||
If the target install doesn't exist, it is because you had issues on the first step or the project generation could be done when calling `cmake ..`.
|
||||
|
||||
5. Finish the process with a new `cmake ..` and `cmake --build . --target install --config RelWithDebInfo`.
|
||||
|
||||
It is important to set the config in the process or you can have a bad configuration for your binary that could lead to some corruption : on Windows, this issue is spotted when trying to start the application and an empty file with a random name is created. So, you are working on an IDE (like Qt Creator), you may override the build command.
|
||||
It is important to set the config in the process or you can have a bad configuration for your binary that could lead to some corruption : on Windows, this issue is spotted when trying to start the application and an empty file with a random name is created. So, if you are working on an IDE (like Qt Creator), you may override the build command.
|
||||
|
||||
When all are over, the files will be in the OUTPUT folder in the build directory.
|
||||
|
||||
You can find a script file for each supported platform to achieve the first building. They only exist for convenience.
|
||||
There are called `build_all_linux.sh`, `build_all_macos.sh` and `build_all_win.bat`.
|
||||
4. When doing some modifications in the SDK, you can rebuild only the sdk with the target `sdk`
|
||||
|
||||
5. In order to get packages, you can use `cmake .. -DENABLE_APP_PACKAGING=YES`. The files will be in `OUTPUT/packages` folder.
|
||||
|
||||
|
||||
#### General Troubleshooting
|
||||
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
#!/bin/bash
|
||||
##
|
||||
## Copyright (c) 2010-2020 Belledonne Communications SARL.
|
||||
##
|
||||
## This file is part of linphone-desktop
|
||||
## (see https://www.linphone.org).
|
||||
##
|
||||
## This program is free software: you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, either version 3 of the License, or
|
||||
## (at your option) any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##
|
||||
|
||||
################################################################################
|
||||
# Linux First building script
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
#Stop at error
|
||||
set -e
|
||||
|
||||
if [[ -z ${Qt5_DIR} ]]; then
|
||||
eval "$(qtchooser -print-env)"
|
||||
export Qt5_DIR=${QTLIBDIR}/cmake/Qt5
|
||||
export PATH=${QTTOOLDIR}:$PATH
|
||||
fi
|
||||
|
||||
#Creation of folders
|
||||
rm -rf build-desktop
|
||||
mkdir -p build-desktop
|
||||
#Opus crash on Linux. The version for 4.3 is old. We have to use a switch in configuration to select the newest version for desktop.
|
||||
#SDK building
|
||||
cd build-desktop
|
||||
#cmake .. -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_VPX=YES -DENABLE_GPL_THIRD_PARTIES=YES -DENABLE_NON_FREE_CODECS=YES -DENABLE_AMRNB=YES -DENABLE_AMRWB=YES -DENABLE_G729=YES -DENABLE_GSM=YES -DENABLE_ILBC=YES -DENABLE_ISAC=YES -DENABLE_SILK=YES -DENABLE_SPEEX=YES -DENABLE_H263=YES -DENABLE_H263P=YES -DENABLE_MPEG4=YES -DENABLE_OPENH264=YES -DENABLE_FFMPEG=YES -DENABLE_VIDEO=YES -DENABLE_GL=YES -DENABLE_OPUS=NO
|
||||
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_OPUS=NO
|
||||
cmake --build . --target sdk --config RelWithDebInfo --parallel 10
|
||||
|
||||
#MiniZip Building
|
||||
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
cmake --build . --target minizip --config RelWithDebInfo --parallel 10
|
||||
cmake --build . --target install
|
||||
|
||||
#Desktop Building
|
||||
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
cmake --build . --target all --config RelWithDebInfo --parallel 10
|
||||
cmake --build . --target install
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
#!/bin/sh
|
||||
##
|
||||
## Copyright (c) 2010-2020 Belledonne Communications SARL.
|
||||
##
|
||||
## This file is part of linphone-desktop
|
||||
## (see https://www.linphone.org).
|
||||
##
|
||||
## This program is free software: you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
## the Free Software Foundation, either version 3 of the License, or
|
||||
## (at your option) any later version.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public License
|
||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##
|
||||
################################################################################
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# MAC OSX First building script
|
||||
#-------------------------------------------------------------------------------
|
||||
#Stop at error
|
||||
set -e
|
||||
|
||||
if [[ -z ${Qt5_DIR} ]]; then
|
||||
export Qt5_DIR=/usr/opt/qt/lib/cmake
|
||||
export PATH=$PATH:/usr/local/opt/qt/bin
|
||||
fi
|
||||
|
||||
#Creation of folders
|
||||
rm -rf build-desktop
|
||||
mkdir -p build-desktop
|
||||
cd build-desktop
|
||||
|
||||
#SDK building
|
||||
#LINPHONESDK_DOXYGEN_PROGRAM is set just to be sure to get the version of the Application folder
|
||||
cmake .. -DLINPHONESDK_DOXYGEN_PROGRAM=/Applications/Doxygen.app/Contents/Resources/doxygen -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 -DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
cmake --build . --target all --config RelWithDebInfo --parallel 10
|
||||
|
||||
#MiniZip Building
|
||||
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
cmake --build . --target all --config RelWithDebInfo --parallel 10
|
||||
cmake --build . --target install
|
||||
|
||||
#Desktop Building
|
||||
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
cmake --build . --target all --config RelWithDebInfo
|
||||
cmake --build . --target install
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
|
||||
:: Preparing folders
|
||||
IF NOT EXIST build-desktop mkdir build-desktop
|
||||
|
||||
:: SDK Building
|
||||
cd build-desktop
|
||||
:: Default config
|
||||
cmake .. -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_BUILD_TYPE=RelWithDebInfo -A Win32
|
||||
:: Mini config
|
||||
::cmake .. -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_VPX=NO -DENABLE_OPUS=NO -A Win32 -DENABLE_VIDEO=YES -DENABLE_GL=YES
|
||||
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||
cmake --build . --target sdk --config RelWithDebInfo --parallel 10 -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||
|
||||
:: Minizip Submodule Building
|
||||
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -A Win32
|
||||
cmake --build . --target install --config RelWithDebInfo --parallel 10 -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
|
||||
:: Desktop Building
|
||||
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -A Win32
|
||||
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||
cmake --build . --target install --config RelWithDebInfo --parallel 10 -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
############################################################################
|
||||
# CMakeLists.txt
|
||||
# Copyright (C) 2017-2020 Belledonne Communications, Grenoble France
|
||||
#
|
||||
############################################################################
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
lcb_define_targets("linphoneqt" "linphone" "ms2plugins")
|
||||
|
||||
|
||||
#if (NOT WIN32 AND NOT APPLE)
|
||||
# lcb_blacklist_dependencies("turbojpeg") # turbo-jpeg is already provided by Qt5 so do not build it.
|
||||
#endif ()
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
############################################################################
|
||||
# packaging.cmake
|
||||
# Copyright (C) 2017-2018 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.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
if (NOT "${CMAKE_INSTALL_PREFIX}" MATCHES .*/_CPack_Packages/.*)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_CPACK_COMMAND} -G DragNDrop
|
||||
RESULT_VARIABLE CPACK_COMMAND_RESULT
|
||||
)
|
||||
if(CPACK_COMMAND_RESULT)
|
||||
message(FATAL_ERROR "Failed to create dmg package!")
|
||||
endif()
|
||||
endif ()
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
############################################################################
|
||||
# packaging.cmake
|
||||
# Copyright (C) 2014-2018 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.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
if (NOT "${CMAKE_INSTALL_PREFIX}" MATCHES .*/_CPack_Packages/.*)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_CPACK_COMMAND} -G @CPACK_GENERATOR@
|
||||
RESULT_VARIABLE CPACK_COMMAND_RESULT
|
||||
)
|
||||
if(CPACK_COMMAND_RESULT)
|
||||
message(FATAL_ERROR "Failed to generate package!")
|
||||
endif()
|
||||
|
||||
if (@PERFORM_SIGNING@)
|
||||
execute_process(
|
||||
COMMAND @SIGNTOOL_COMMAND@ @CMAKE_CURRENT_BINARY_DIR@/@CPACK_PACKAGE_FILE_NAME@.@PACKAGE_EXT@
|
||||
RESULT_VARIABLE SIGNING_RESULT
|
||||
)
|
||||
if(SIGNING_RESULT)
|
||||
message(FATAL_ERROR "Failed to sign the package!")
|
||||
endif()
|
||||
endif ()
|
||||
endif ()
|
||||
509
linphone-app/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,509 @@
|
|||
################################################################################
|
||||
#
|
||||
# Copyright (c) 2017-2020 Belledonne Communications SARL.
|
||||
#
|
||||
# This file is part of linphone-desktop
|
||||
# (see https://www.linphone.org).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
################################################################################
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
project(linphoneqt VERSION 4.1.1)
|
||||
|
||||
#message("CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH}")
|
||||
message("Options : ${ENABLE_UPDATE_CHECK}, ${ENABLE_UNIT_TESTS}, ${ENABLE_TESTS}, ${ENABLE_TESTS_COMPONENTS}, ${ENABLE_TOOLS}, ${ENABLE_STRICT}, ${ENABLE_FFMPEG}, ${ENABLE_OPUS}")
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(CheckCXXCompilerFlag)
|
||||
|
||||
|
||||
set(TARGET_NAME linphone-qt)
|
||||
if( NOT("${CMAKE_GENERATOR}" MATCHES "Ninja"))
|
||||
# set(TARGET_NAME_ONLY linphone-qt-only)
|
||||
# set(APP_LIBRARY_ONLY app-library-only)
|
||||
endif()
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/lib64;$ORIGIN/../lib64;$ORIGIN/lib;$ORIGIN/../lib")
|
||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
endif()
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
|
||||
|
||||
set(APP_LIBRARY app-library)
|
||||
include(application_info.cmake)
|
||||
if(WIN32)
|
||||
set(EXECUTABLE_OUTPUT_DIR "${CMAKE_BINARY_DIR}")
|
||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${EXECUTABLE_OUTPUT_DIR}")
|
||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${EXECUTABLE_OUTPUT_DIR}")
|
||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${EXECUTABLE_OUTPUT_DIR}")
|
||||
endif()
|
||||
|
||||
find_package(LinphoneCxx CONFIG)
|
||||
find_package(Linphone CONFIG)
|
||||
find_package(bctoolbox CONFIG)
|
||||
find_package(belcard CONFIG)
|
||||
find_package(Mediastreamer2 CONFIG)
|
||||
find_package(ortp CONFIG)
|
||||
#find_package(minizip)
|
||||
|
||||
include(FindPkgConfig)
|
||||
pkg_search_module(MINIZIP minizip)
|
||||
set(MINIZIP_INCLUDE_DIRS "${MINIZIP_PREFIX}/${MINIZIP_INCLUDE_DIRS}")
|
||||
|
||||
message("MINIZIP : ${MINIZIP_INCLUDE_DIRS} => ${MINIZIP_LIBRARIES}")
|
||||
message("INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} FRAMEWORK_PATH=${CMAKE_FRAMEWORK_PATH}")
|
||||
message("LINPHONE : ${LINPHONE_INCLUDE_DIRS} => ${LINPHONE_LIBRARIES}")
|
||||
message("LINPHONECXX : ${LINPHONECXX_INCLUDE_DIRS} => ${LINPHONECXX_LIBRARIES}")
|
||||
|
||||
# Build configuration
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG -DQT_NO_DEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG" )
|
||||
|
||||
if( WIN32)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINSOCKAPI_")#remove error from windows headers order
|
||||
endif()
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)#useful for config.h
|
||||
|
||||
set(QT5_PACKAGES Core Gui Quick Widgets QuickControls2 Svg LinguistTools Concurrent Network)
|
||||
if (UNIX AND NOT APPLE)
|
||||
list(APPEND QT5_PACKAGES DBus)
|
||||
endif ()
|
||||
set(QT5_PACKAGES_OPTIONAL TextToSpeech)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
#-------------------------------------------------
|
||||
set(ASSETS_DIR "assets")
|
||||
set(SOURCES
|
||||
src/app/App.cpp
|
||||
src/app/AppController.cpp
|
||||
src/app/cli/Cli.cpp
|
||||
src/app/logger/Logger.cpp
|
||||
src/app/paths/Paths.cpp
|
||||
src/app/providers/AvatarProvider.cpp
|
||||
src/app/providers/ImageProvider.cpp
|
||||
src/app/providers/ThumbnailProvider.cpp
|
||||
src/app/translator/DefaultTranslator.cpp
|
||||
src/components/assistant/AssistantModel.cpp
|
||||
src/components/authentication/AuthenticationNotifier.cpp
|
||||
src/components/call/CallModel.cpp
|
||||
src/components/calls/CallsListModel.cpp
|
||||
src/components/calls/CallsListProxyModel.cpp
|
||||
src/components/camera/Camera.cpp
|
||||
src/components/camera/CameraPreview.cpp
|
||||
src/components/camera/MSFunctions.cpp
|
||||
src/components/chat/ChatModel.cpp
|
||||
src/components/chat/ChatProxyModel.cpp
|
||||
src/components/codecs/AbstractCodecsModel.cpp
|
||||
src/components/codecs/AudioCodecsModel.cpp
|
||||
src/components/codecs/VideoCodecsModel.cpp
|
||||
src/components/conference/ConferenceAddModel.cpp
|
||||
src/components/conference/ConferenceHelperModel.cpp
|
||||
src/components/conference/ConferenceModel.cpp
|
||||
src/components/contact/ContactModel.cpp
|
||||
src/components/contact/VcardModel.cpp
|
||||
src/components/contacts/ContactsListModel.cpp
|
||||
src/components/contacts/ContactsListProxyModel.cpp
|
||||
src/components/core/CoreHandlers.cpp
|
||||
src/components/core/CoreManager.cpp
|
||||
src/components/core/event-count-notifier/AbstractEventCountNotifier.cpp
|
||||
src/components/file/FileDownloader.cpp
|
||||
src/components/file/FileExtractor.cpp
|
||||
src/components/notifier/Notifier.cpp
|
||||
src/components/other/clipboard/Clipboard.cpp
|
||||
src/components/other/colors/Colors.cpp
|
||||
src/components/other/text-to-speech/TextToSpeech.cpp
|
||||
src/components/other/units/Units.cpp
|
||||
src/components/presence/OwnPresenceModel.cpp
|
||||
src/components/presence/Presence.cpp
|
||||
src/components/settings/AccountSettingsModel.cpp
|
||||
src/components/settings/SettingsModel.cpp
|
||||
src/components/sip-addresses/SipAddressesModel.cpp
|
||||
src/components/sip-addresses/SipAddressesProxyModel.cpp
|
||||
src/components/sip-addresses/SipAddressObserver.cpp
|
||||
src/components/sound-player/SoundPlayer.cpp
|
||||
src/components/telephone-numbers/TelephoneNumbersModel.cpp
|
||||
src/components/timeline/TimelineModel.cpp
|
||||
src/components/url-handlers/UrlHandlers.cpp
|
||||
src/utils/LinphoneUtils.cpp
|
||||
src/utils/MediastreamerUtils.cpp
|
||||
src/utils/QExifImageHeader.cpp
|
||||
src/utils/Utils.cpp
|
||||
)
|
||||
|
||||
set(HEADERS
|
||||
src/app/App.hpp
|
||||
src/app/AppController.hpp
|
||||
src/app/cli/Cli.hpp
|
||||
src/app/logger/Logger.hpp
|
||||
src/app/paths/Paths.hpp
|
||||
src/app/providers/AvatarProvider.hpp
|
||||
src/app/providers/ImageProvider.hpp
|
||||
src/app/providers/ThumbnailProvider.hpp
|
||||
src/app/single-application/SingleApplication.hpp
|
||||
src/app/translator/DefaultTranslator.hpp
|
||||
src/components/assistant/AssistantModel.hpp
|
||||
src/components/authentication/AuthenticationNotifier.hpp
|
||||
src/components/call/CallModel.hpp
|
||||
src/components/calls/CallsListModel.hpp
|
||||
src/components/calls/CallsListProxyModel.hpp
|
||||
src/components/camera/Camera.hpp
|
||||
src/components/camera/CameraPreview.hpp
|
||||
src/components/camera/MSFunctions.hpp
|
||||
src/components/chat/ChatModel.hpp
|
||||
src/components/chat/ChatProxyModel.hpp
|
||||
src/components/codecs/AbstractCodecsModel.hpp
|
||||
src/components/codecs/AudioCodecsModel.hpp
|
||||
src/components/codecs/VideoCodecsModel.hpp
|
||||
src/components/Components.hpp
|
||||
src/components/conference/ConferenceAddModel.hpp
|
||||
src/components/conference/ConferenceHelperModel.hpp
|
||||
src/components/conference/ConferenceModel.hpp
|
||||
src/components/contact/ContactModel.hpp
|
||||
src/components/contact/VcardModel.hpp
|
||||
src/components/contacts/ContactsListModel.hpp
|
||||
src/components/contacts/ContactsListProxyModel.hpp
|
||||
src/components/core/CoreHandlers.hpp
|
||||
src/components/core/CoreManager.hpp
|
||||
src/components/core/event-count-notifier/AbstractEventCountNotifier.hpp
|
||||
src/components/file/FileDownloader.hpp
|
||||
src/components/file/FileExtractor.hpp
|
||||
src/components/notifier/Notifier.hpp
|
||||
src/components/other/clipboard/Clipboard.hpp
|
||||
src/components/other/colors/Colors.hpp
|
||||
src/components/other/desktop-tools/DesktopTools.hpp
|
||||
src/components/other/text-to-speech/TextToSpeech.hpp
|
||||
src/components/other/units/Units.hpp
|
||||
src/components/presence/OwnPresenceModel.hpp
|
||||
src/components/presence/Presence.hpp
|
||||
src/components/settings/AccountSettingsModel.hpp
|
||||
src/components/settings/SettingsModel.hpp
|
||||
src/components/sip-addresses/SipAddressesModel.hpp
|
||||
src/components/sip-addresses/SipAddressesProxyModel.hpp
|
||||
src/components/sip-addresses/SipAddressObserver.hpp
|
||||
src/components/sound-player/SoundPlayer.hpp
|
||||
src/components/telephone-numbers/TelephoneNumbersModel.hpp
|
||||
src/components/timeline/TimelineModel.hpp
|
||||
src/components/url-handlers/UrlHandlers.hpp
|
||||
src/utils/LinphoneUtils.hpp
|
||||
src/utils/MediastreamerUtils.hpp
|
||||
src/utils/QExifImageHeader.hpp
|
||||
src/utils/Utils.hpp
|
||||
)
|
||||
|
||||
set(MAIN_FILE src/app/main.cpp)
|
||||
|
||||
if (APPLE)
|
||||
list(APPEND SOURCES
|
||||
src/app/single-application/SingleApplication.cpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierMacOs.m
|
||||
src/components/other/desktop-tools/DesktopToolsMacOs.cpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverMacOs.m
|
||||
src/components/other/desktop-tools/state-process/StateProcessMacOs.mm
|
||||
)
|
||||
list(APPEND HEADERS
|
||||
src/app/single-application/SingleApplicationPrivate.hpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierMacOs.hpp
|
||||
src/components/other/desktop-tools/DesktopToolsMacOs.hpp
|
||||
)
|
||||
elseif (WIN32)
|
||||
list(APPEND SOURCES
|
||||
src/app/single-application/SingleApplication.cpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.cpp
|
||||
src/components/other/desktop-tools/DesktopToolsWindows.cpp
|
||||
)
|
||||
list(APPEND HEADERS
|
||||
src/app/single-application/SingleApplicationPrivate.hpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.hpp
|
||||
src/components/other/desktop-tools/DesktopToolsWindows.hpp
|
||||
)
|
||||
else ()
|
||||
list(APPEND SOURCES
|
||||
src/app/single-application/SingleApplicationDBus.cpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.cpp
|
||||
src/components/other/desktop-tools/DesktopToolsLinux.cpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverDBus.cpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverXdg.cpp
|
||||
)
|
||||
list(APPEND HEADERS
|
||||
src/app/single-application/SingleApplicationDBusPrivate.hpp
|
||||
src/components/core/event-count-notifier/EventCountNotifierSystemTrayIcon.hpp
|
||||
src/components/other/desktop-tools/DesktopToolsLinux.hpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverDBus.hpp
|
||||
src/components/other/desktop-tools/screen-saver/ScreenSaverXdg.hpp
|
||||
)
|
||||
endif ()
|
||||
|
||||
set(QRC_RESOURCES resources.qrc)
|
||||
|
||||
set(LANGUAGES_DIRECTORY "${ASSETS_DIR}/languages")
|
||||
set(I18N_FILENAME i18n.qrc)
|
||||
set(LANGUAGES de en fr_FR ja lt ru sv tr pt_BR)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
function (PREPEND list prefix)
|
||||
set(new_list "")
|
||||
|
||||
foreach (elem ${${list}})
|
||||
list(APPEND new_list "${prefix}${elem}")
|
||||
endforeach ()
|
||||
|
||||
set(${list} ${new_list} PARENT_SCOPE)
|
||||
endfunction ()
|
||||
|
||||
# Force absolute paths.
|
||||
PREPEND(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/")
|
||||
PREPEND(HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/")
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Compute QML files list.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
set(QML_SOURCES)
|
||||
file(STRINGS ${QRC_RESOURCES} QRC_RESOURCES_CONTENT)
|
||||
foreach (line ${QRC_RESOURCES_CONTENT})
|
||||
set(result)
|
||||
string(REGEX REPLACE
|
||||
"^[ \t]*<[ \t]*file[ \t]*>[ \t]*(.+\\.[a-z]+)[ \t]*<[ \t]*/[ \t]*file[ \t]*>[ \t]*$"
|
||||
"\\1"
|
||||
result
|
||||
"${line}"
|
||||
)
|
||||
string(REGEX MATCH "\\.[a-z]+$" is_ui ${result})
|
||||
if (NOT ${is_ui} STREQUAL "")
|
||||
list(APPEND QML_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/${result}")
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Init git hooks.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
if (NOT WIN32)
|
||||
add_custom_target(
|
||||
check_qml DEPENDS ${QML_SOURCES}
|
||||
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/../tools/check_qml_syntax"
|
||||
)
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../tools/private/pre-commit"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../.git/hooks/pre-commit"
|
||||
)
|
||||
set(_QML_IMPORT_PATHS "")
|
||||
list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/modules")
|
||||
list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/dev-modules")
|
||||
list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/scripts")
|
||||
list(APPEND _QML_IMPORT_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/ui/views")
|
||||
|
||||
|
||||
set(QML_IMPORT_PATH ${_QML_IMPORT_PATHS} CACHE STRING "Path used to locate CMake modules by Qt Creator" FORCE)
|
||||
|
||||
|
||||
if(APPLE)
|
||||
if(MS2_PLUGINS_LOCATION)
|
||||
set(MSPLUGINS_DIR ${MS2_PLUGINS_LOCATION})
|
||||
else()
|
||||
set(MSPLUGINS_DIR "Frameworks/mediastreamer2.framework/Versions/A/Libraries")
|
||||
endif()
|
||||
else()
|
||||
set(MSPLUGINS_DIR "${CMAKE_INSTALL_LIBDIR}/mediastreamer/plugins")
|
||||
endif()
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.cmake" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
|
||||
# ------------------------------------------------------------------------------
|
||||
# Build.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
include_directories(src/)
|
||||
|
||||
find_package(Qt5 COMPONENTS ${QT5_PACKAGES} REQUIRED)
|
||||
find_package(Qt5 COMPONENTS ${QT5_PACKAGES_OPTIONAL} QUIET)
|
||||
|
||||
if (CMAKE_INSTALL_RPATH)
|
||||
#Retrieve lib path from a know QT executable
|
||||
get_target_property(LUPDATE_PATH Qt5::lupdate LOCATION)
|
||||
get_filename_component(LUPDATE_PATH "${LUPDATE_PATH}" DIRECTORY)
|
||||
get_filename_component(QT_PATH "${LUPDATE_PATH}/lib" ABSOLUTE)
|
||||
list(APPEND CMAKE_INSTALL_RPATH "${QT_PATH}")
|
||||
endif ()
|
||||
# Add languages support.
|
||||
add_subdirectory("${LANGUAGES_DIRECTORY}" "assets/languages")
|
||||
list(APPEND SOURCES "${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGES_DIRECTORY}/${I18N_FILENAME}")
|
||||
|
||||
|
||||
# Build and dependencies
|
||||
link_directories("${MINIZIP_PREFIX}/${MINIZIP_LIBRARY_DIRS}")
|
||||
#link_directories("${MINIZIP_PREFIX}/${MINIZIP_LIBRARY_DIRS}")
|
||||
|
||||
|
||||
|
||||
#add_library(${APP_LIBRARY} OBJECT ${SOURCES} ${HEADERS} ${RESOURCES} ${QML_SOURCES})
|
||||
add_library(${APP_LIBRARY} OBJECT ${SOURCES} ${HEADERS} ${QML_SOURCES} ${QRC_RESOURCES})
|
||||
if(TARGET_NAME_ONLY)
|
||||
add_library(${APP_LIBRARY_ONLY} OBJECT EXCLUDE_FROM_ALL ${SOURCES} ${HEADERS} ${QML_SOURCES} ${QRC_RESOURCES})
|
||||
endif()
|
||||
if (WIN32)
|
||||
add_executable(${TARGET_NAME} WIN32 $<TARGET_OBJECTS:${APP_LIBRARY}> ${ASSETS_DIR}/app-icon.rc ${MAIN_FILE})
|
||||
if(TARGET_NAME_ONLY)
|
||||
add_executable(${TARGET_NAME_ONLY} WIN32 EXCLUDE_FROM_ALL $<TARGET_OBJECTS:${APP_LIBRARY_ONLY}> ${ASSETS_DIR}/app-icon.rc ${MAIN_FILE})
|
||||
endif()
|
||||
else ()
|
||||
add_executable(${TARGET_NAME} $<TARGET_OBJECTS:${APP_LIBRARY}> ${MAIN_FILE})
|
||||
if(TARGET_NAME_ONLY)
|
||||
add_executable(${TARGET_NAME_ONLY} EXCLUDE_FROM_ALL $<TARGET_OBJECTS:${APP_LIBRARY_ONLY}> ${MAIN_FILE})
|
||||
endif()
|
||||
endif ()
|
||||
if(TARGET_NAME_ONLY)
|
||||
target_compile_options(${TARGET_NAME_ONLY} PRIVATE -fPIC)
|
||||
set_source_files_properties( ${APP_LIBRARY_ONLY} PROPERTIES EXTERNAL_OBJECT true GENERATED true )
|
||||
set_property(TARGET ${APP_LIBRARY_ONLY} PROPERTY POSITION_INDEPENDENT_CODE ON) #Need by Qt
|
||||
set_property(TARGET ${APP_LIBRARY_ONLY} PROPERTY AUTORCC ON)
|
||||
set_target_properties(${TARGET_NAME_ONLY} PROPERTIES OUTPUT_NAME "${EXECUTABLE_NAME}")
|
||||
endif()
|
||||
set_source_files_properties( ${APP_LIBRARY} PROPERTIES EXTERNAL_OBJECT true GENERATED true )
|
||||
|
||||
set_property(TARGET ${APP_LIBRARY} PROPERTY POSITION_INDEPENDENT_CODE ON) #Need by Qt
|
||||
|
||||
|
||||
#Turn on automatic resources compilation by cmake
|
||||
#Instead of excplicitely calling qt5_add_resources
|
||||
set_property(TARGET ${APP_LIBRARY} PROPERTY AUTORCC ON)
|
||||
|
||||
bc_git_version(${TARGET_NAME} ${PROJECT_VERSION})
|
||||
|
||||
set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME "${EXECUTABLE_NAME}")
|
||||
|
||||
|
||||
#ExternalProject_Get_Property(project_a install_dir)
|
||||
#include_directories(${install_dir}/include)
|
||||
|
||||
#add_dependencies(project_b_exe project_a)
|
||||
#target_link_libraries(project_b_exe ${install_dir}/lib/alib.lib)
|
||||
|
||||
|
||||
set(INCLUDED_DIRECTORIES "${LINPHONECXX_INCLUDE_DIRS}" "${MINIZIP_INCLUDE_DIRS}")
|
||||
set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} ${MINIZIP_LIBRARIES})
|
||||
#set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} "minizip")
|
||||
message("LIBRARIES : ${LIBRARIES}")
|
||||
|
||||
foreach (package ${QT5_PACKAGES})
|
||||
list(APPEND INCLUDED_DIRECTORIES "${Qt5${package}_INCLUDE_DIRS}")
|
||||
# `qt5_create_translation` is provided from `LinguistTools` package.
|
||||
# But the `Qt5::LinguistTools` lib does not exist. Remove it.
|
||||
if (NOT (${package} STREQUAL LinguistTools))
|
||||
list(APPEND LIBRARIES ${Qt5${package}_LIBRARIES})
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
foreach (package ${QT5_PACKAGES_OPTIONAL})
|
||||
if ("${Qt5${package}_FOUND}")
|
||||
message("Optional package ${package} found.")
|
||||
list(APPEND INCLUDED_DIRECTORIES "${Qt5${package}_INCLUDE_DIRS}")
|
||||
list(APPEND LIBRARIES ${Qt5${package}_LIBRARIES})
|
||||
|
||||
string(TOUPPER "${package}" INCLUDE_NAME)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D${INCLUDE_NAME}_ENABLED")
|
||||
else ()
|
||||
message("Optional package ${package} not found.")
|
||||
endif ()
|
||||
endforeach ()
|
||||
|
||||
if (APPLE)
|
||||
list(APPEND LIBRARIES "-framework Cocoa -framework IOKit")
|
||||
# -framework linphone") #This doesn't work yet
|
||||
endif ()
|
||||
|
||||
target_include_directories(${APP_LIBRARY} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES})
|
||||
|
||||
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES})
|
||||
|
||||
if(TARGET_NAME_ONLY)
|
||||
target_include_directories(${APP_LIBRARY_ONLY} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES})
|
||||
target_include_directories(${TARGET_NAME_ONLY} SYSTEM PRIVATE ${INCLUDED_DIRECTORIES})
|
||||
target_link_libraries(${TARGET_NAME_ONLY} ${LIBRARIES})
|
||||
add_dependencies(${APP_LIBRARY_ONLY} update_translations ${TARGET_NAME}-git-version)
|
||||
add_dependencies(${TARGET_NAME_ONLY} update_translations )
|
||||
endif()
|
||||
|
||||
#target_link_libraries(${APP_LIBRARY} ${LIBRARIES})
|
||||
target_link_libraries(${TARGET_NAME} ${LIBRARIES})
|
||||
|
||||
if(WIN32)
|
||||
target_link_libraries(${TARGET_NAME} wsock32 ws2_32)
|
||||
endif()
|
||||
|
||||
add_dependencies(${APP_LIBRARY} update_translations ${TARGET_NAME}-git-version)
|
||||
add_dependencies(${TARGET_NAME} ${APP_LIBRARY})
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
# Install desktop/icon files.
|
||||
configure_file("${ASSETS_DIR}/linphone.desktop.cmake" "${EXECUTABLE_NAME}.desktop" @ONLY)
|
||||
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}.desktop"
|
||||
DESTINATION "${CMAKE_INSTALL_DATADIR}/applications"
|
||||
)
|
||||
install(FILES "${ASSETS_DIR}/images/linphone_logo.svg"
|
||||
DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/"
|
||||
RENAME "${EXECUTABLE_NAME}.svg"
|
||||
)
|
||||
|
||||
set(ICON_DIRS 16x16 22x22 24x24 32x32 64x64 128x128 256x256)
|
||||
foreach (DIR ${ICON_DIRS})
|
||||
install(FILES "${ASSETS_DIR}/icons/hicolor/${DIR}/apps/icon.png"
|
||||
DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/${DIR}/apps/"
|
||||
RENAME "${EXECUTABLE_NAME}.png"
|
||||
)
|
||||
endforeach ()
|
||||
endif ()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# CPack settings & RPM.
|
||||
# ------------------------------------------------------------------------------
|
||||
set(LINPHONE_DESKTOP_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
set(LINPHONE_SDK_DIR "${CMAKE_BINARY_DIR}/linphone-sdk")
|
||||
set(TOOLS_DIR "${CMAKE_BINARY_DIR}/programs")
|
||||
set(LINPHONE_SOURCE_DIR ${EP_linphone_SOURCE_DIR})
|
||||
set(LINPHONE_BUILDER_SIGNING_IDENTITY ${LINPHONE_BUILDER_SIGNING_IDENTITY})
|
||||
set(LINPHONE_SDK_TMP "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}-sdk-tmp")
|
||||
message("LINPHONE_DESKTOP_DIR = ${LINPHONE_DESKTOP_DIR}")
|
||||
|
||||
add_subdirectory(build)
|
||||
add_subdirectory(cmake_builder/linphone_package)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# To start better integration into IDE.
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
source_group(
|
||||
"Qml" REGULAR_EXPRESSION ".+\.qml$"
|
||||
)
|
||||
source_group(
|
||||
"Js" REGULAR_EXPRESSION ".+\.js$"
|
||||
)
|
||||
source_group(
|
||||
"Svg" REGULAR_EXPRESSION ".+\.svg$"
|
||||
)
|
||||
|
||||
|
||||
# ------------------------------
|
||||
# Installation
|
||||
# ------------------------------
|
||||
if(APPLE)
|
||||
target_link_libraries(${TARGET_NAME} "${MINIZIP_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib")
|
||||
execute_process(COMMAND install_name_tool -id "@executable_path/../Frameworks/libminizip.dylib" "${MINIZIP_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libminizip.dylib")
|
||||
elseif(NOT WIN32)
|
||||
# target_link_libraries(${TARGET_NAME} "${MINIZIP_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/libminizip.so")
|
||||
endif()
|
||||
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 402 B After Width: | Height: | Size: 402 B |
|
Before Width: | Height: | Size: 623 B After Width: | Height: | Size: 623 B |
|
Before Width: | Height: | Size: 659 B After Width: | Height: | Size: 659 B |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 954 B After Width: | Height: | Size: 954 B |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 1,023 B After Width: | Height: | Size: 1,023 B |
|
Before Width: | Height: | Size: 1,016 B After Width: | Height: | Size: 1,016 B |
|
Before Width: | Height: | Size: 748 B After Width: | Height: | Size: 748 B |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 938 B After Width: | Height: | Size: 938 B |
|
Before Width: | Height: | Size: 937 B After Width: | Height: | Size: 937 B |
|
Before Width: | Height: | Size: 968 B After Width: | Height: | Size: 968 B |
|
Before Width: | Height: | Size: 937 B After Width: | Height: | Size: 937 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |