mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
- Windows : convert cmd into powershell and build for x64 with msvc2019
- Fix Qt deploy on Windows where some files weren't deployed.
This commit is contained in:
parent
b206e2bf6a
commit
975a672280
6 changed files with 250 additions and 155 deletions
|
|
@ -2,124 +2,188 @@
|
|||
# BUILD
|
||||
#################################################
|
||||
|
||||
#Remove MinGW of MSYS from PATH and add MINGW_TYPE for MSYS2
|
||||
.build_all_windows_script: &build_all_windows_script |
|
||||
SET PATH_TEMP=%PATH:C:\MinGW\bin;=%
|
||||
SET PATH_TEMP=%PATH_TEMP:C:\Strawberry\c\bin;=%
|
||||
SET PATH_TEMP=%PATH_TEMP:C:\Strawberry\perl\bin;=%
|
||||
SET PATH_TEMP=%PATH_TEMP:C:\Program Files\NASM=%
|
||||
SET Qt5_DIR=C:\Qt\5.14.2\msvc2017\lib\cmake
|
||||
SET PATH=%PATH_TEMP%;C:\Qt\5.14.2\msvc2017\bin;C:\msys64;C:\msys64\usr\bin;C:\msys64\%MINGW_TYPE%\bin;%SIGNTOOL_ROOT%\x86
|
||||
IF EXIST build RMDIR /S /Q build
|
||||
mkdir build
|
||||
cd build
|
||||
mkdir OUTPUT
|
||||
C:\PROGRA~1\Python37\Scripts\cl -s
|
||||
cmake .. -G "Visual Studio 15 2017" -DLINPHONESDK_PLATFORM=Desktop -DCMAKE_BUILD_TYPE=%CI_BUILD_TYPE% %DEFAULT_WINDOWS_CMAKE_OPTIONS% %CMAKE_OPTIONS%
|
||||
cmake --build . --target install --config %CI_BUILD_TYPE% %LBC_NODEBUG_OPTIONS% -- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false
|
||||
C:\PROGRA~1\Python37\Scripts\cl -s
|
||||
|
||||
.job-windows-vs2017:
|
||||
.windows-vs2019:
|
||||
extends: .job-prepare
|
||||
stage: build
|
||||
tags: [ "windows" ]
|
||||
tags: [ "windows-powershell" ]
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
|
||||
variables:
|
||||
CMAKE_OPTIONS: -DENABLE_LIME_X3DH=NO -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON
|
||||
MINGW_TYPE: mingw32
|
||||
CMAKE_OPTIONS: -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON
|
||||
LINPHONESDK_PLATFORM: Desktop
|
||||
OUTPUT_ZIP_FOLDER: win64
|
||||
MINGW_TYPE: mingw64
|
||||
CMAKE_GENERATOR: "Visual Studio 16 2019"
|
||||
CMAKE_ARCHITECTURE : -A x64
|
||||
script:
|
||||
- *build_all_windows_script
|
||||
- Set-Variable -Name "PATH_TEMP" -Value ($(Get-ChildItem -Path Env:\PATH).value)
|
||||
- echo $env:Path
|
||||
#Remove MinGW of MSYS from PATH and add MINGW_TYPE for MSYS2
|
||||
# We double the "\" to escape paths as -replace uses regular expressions
|
||||
- $PATH_TEMP = $PATH_TEMP -replace "C:\\MinGW\\bin;" -replace "C:\\Strawberry\\c\\bin;" -replace "C:\\Program Files\\NASM"
|
||||
- echo $PATH_TEMP
|
||||
- $env:Path = ($PATH_TEMP + ";C:\msys64;C:\msys64\usr\bin;C:\msys64\" + $MINGW_TYPE + "\bin;" + $env:SIGNTOOL_ROOT + "\x64")
|
||||
- If ($MINGW_TYPE -eq "mingw64") {Import-BatchEnvironment "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"} Else {Import-BatchEnvironment "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat"}
|
||||
- If ($MINGW_TYPE -eq "mingw64") {$env:Path = ($env:Path + ";C:\Qt\5.15.2\msvc2019_64\bin")} Else {$env:Path = ($env:Path + ";C:\Qt\5.14.2\msvc2019\bin")}
|
||||
- echo $env:Path
|
||||
- If ( Test-Path -Path "build-desktop" ) {Remove-Item -recurse -force -path "build-desktop" }
|
||||
- mkdir build-desktop
|
||||
- cd build-desktop
|
||||
#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
|
||||
- Write-Output $CMAKE_ARCHITECTURE
|
||||
- Write-Output $SCHEDULE_CMAKE_OPTIONS
|
||||
- Write-Output $MAKEFILE_JOBS
|
||||
- Write-Output $CMAKE_C_COMPILER
|
||||
- Write-Output $CMAKE_CXX_COMPILER
|
||||
- Write-Output $CMAKE_RC_COMPILER
|
||||
- Write-Output $DEFAULT_CMAKE_OPTIONS
|
||||
- Write-Output $CMAKE_OPTIONS
|
||||
- Write-Output $CMAKE_ARCHITECTURE
|
||||
- Write-Output $SCHEDULE_CMAKE_OPTIONS
|
||||
- Write-Output $CMAKE_GENERATOR
|
||||
- Write-Output $LINPHONESDK_PLATFORM
|
||||
- Write-Output $MINGW_TYPE
|
||||
- Write-Output $CLI_OUTPUT_INFO_NINJA
|
||||
- Write-Output $Write-Output
|
||||
- Write-Output $NINJA_BUILD_PARALLEL_LEVEL
|
||||
- Write-Output $PARALLEL_OPTIONS
|
||||
- Write-Output $NINJA_OPTIMIZATION
|
||||
- Write-Output $NINJA_EXPLICIT_COMPILER_SET
|
||||
- Write-Output $DISPLAY_NINJA_LOG
|
||||
- Write-Output $SEARCH_NINJA_ERROR
|
||||
- Write-Output $DISPLAY_SEARCH_STATUS
|
||||
- Write-Output $SET_EXIT_CODE_BASED_ON_SEARCH_STATUS
|
||||
- Write-Output $SHOW_SEARCH_STATUS_SCRIPT
|
||||
- Write-Output $LAUNCH_SEARCH_STATUS_SCRIPT
|
||||
#We are forced to use Invoke-Expression to explain to powershell that we don't want it to touch to spaces in arguments
|
||||
#If we don't use it, '-A Win32' will be interpreted as "-A ' Win32'" thus making the build fail
|
||||
- echo $LastExitCode
|
||||
- Invoke-Expression "& cmake .. -G '$CMAKE_GENERATOR' -DLINPHONESDK_PLATFORM=$LINPHONESDK_PLATFORM -DENABLE_CSHARP_WRAPPER=YES -DCMAKE_BUILD_TYPE=$CI_BUILD_TYPE $NINJA_BUILD_PARALLEL_LEVEL $NINJA_EXPLICIT_COMPILER_SET $DEFAULT_CMAKE_OPTIONS $DEFAULT_WINDOWS_CMAKE_OPTIONS $CMAKE_OPTIONS $CMAKE_ARCHITECTURE $SCHEDULE_CMAKE_OPTIONS"
|
||||
- echo $LastExitCode
|
||||
- 'if (-not ($LastExitCode -eq 0)) {throw "Error: Configure failed"}'
|
||||
- $CLI_OUTPUT_INFO_NINJA
|
||||
#Warning : Ninja doesn't return an error code on Linker error.
|
||||
#Store outputs in a file log
|
||||
#Only in powershell 7 (Gitlab 14+)
|
||||
# - cmake --build . --target install --config RelWithDebInfo --parallel $MAKEFILE_JOBS | Select-String -NotMatch -Raw -Pattern "inclusion du fichier"
|
||||
- Write-Output $PARALLEL_OPTIONS
|
||||
- Write-Output $NINJA_OPTIMIZATION
|
||||
# /!\ By design, we must keep $NINJA_OPTIMIZATION as the last option of the line, because it contains an output redirect
|
||||
- echo $LastExitCode
|
||||
- Invoke-Expression "cmake --build . --target $BUILD_TARGET --config $CI_BUILD_TYPE $PARALLEL_OPTIONS $NINJA_OPTIMIZATION"
|
||||
- if ($EXITS_ON_ERROR_MSVC) { Invoke-Expression "$EXITS_ON_ERROR_MSVC" } else { Write-Output "EXITS_ON_ERROR_MSVC is null" }
|
||||
- if ($DISPLAY_NINJA_LOG) { Invoke-Expression "$DISPLAY_NINJA_LOG" } else { Write-Output "DISPLAY_NINJA_LOG is null" }
|
||||
- if ($SEARCH_NINJA_ERROR) { Invoke-Expression "$SEARCH_NINJA_ERROR" } else { Write-Output "SEARCH_NINJA_ERROR is null" }
|
||||
- if ($DISPLAY_SEARCH_STATUS) { Invoke-Expression "$DISPLAY_SEARCH_STATUS" } else { Write-Output "DISPLAY_SEARCH_STATUS is null" }
|
||||
- if ($SET_EXIT_CODE_BASED_ON_SEARCH_STATUS) { Invoke-Expression "$SET_EXIT_CODE_BASED_ON_SEARCH_STATUS" } else { Write-Output "SET_EXIT_CODE_BASED_ON_SEARCH_STATUS is null" }
|
||||
- if ($SHOW_SEARCH_STATUS_SCRIPT) { Invoke-Expression "$SHOW_SEARCH_STATUS_SCRIPT" } else { Write-Output "SHOW_SEARCH_STATUS_SCRIPT is null" }
|
||||
- if ($LAUNCH_SEARCH_STATUS_SCRIPT) { Invoke-Expression "$LAUNCH_SEARCH_STATUS_SCRIPT" -ErrorAction stop } else { Write-Output "LAUNCH_SEARCH_STATUS_SCRIPT is null" }
|
||||
- C:\PROGRA~1\Python37\Scripts\cl -s
|
||||
- cd linphone-sdk
|
||||
- mkdir $OUTPUT_ZIP_FOLDER
|
||||
- Copy-Item -Path "*.zip" -Destination "$CI_PROJECT_DIR/build-desktop/linphone-sdk/$OUTPUT_ZIP_FOLDER" -Recurse
|
||||
|
||||
################
|
||||
artifacts:
|
||||
paths:
|
||||
- build\OUTPUT
|
||||
- build-desktop\ninja_buildlog.txt
|
||||
- build-desktop\ninja_buildlog.txt
|
||||
- build-desktop\invertSearch.ps1
|
||||
- build-desktop\OUTPUT\*
|
||||
when: always
|
||||
expire_in: 2 days
|
||||
expire_in: 1 week
|
||||
|
||||
job-windows-vs2017:
|
||||
except:
|
||||
refs:
|
||||
- schedules
|
||||
extends: .job-windows-vs2017
|
||||
|
||||
|
||||
#################################################
|
||||
# NIGHTLY
|
||||
#################################################
|
||||
|
||||
.job-windows-vs2017-scheduled:
|
||||
only:
|
||||
variables:
|
||||
- $NIGHTLY_MASTER
|
||||
- $NIGHTLY_RELEASE
|
||||
- $DEPLOY_PLUGINS
|
||||
before_script:
|
||||
#cache disabled on scheduled builds since we dot not need the fastest build
|
||||
- set "CLCACHE_DISABLE=1"
|
||||
extends: .job-windows-vs2017
|
||||
|
||||
job-windows-vs2017-scheduled:
|
||||
extends: .job-windows-vs2017-scheduled
|
||||
|
||||
job-windows-vs2017-novideo:
|
||||
extends: .job-windows-vs2017-scheduled
|
||||
except:
|
||||
variables:
|
||||
- $DEPLOY_PLUGINS
|
||||
.windows-vs2019-msvc:
|
||||
extends: .windows-vs2019
|
||||
variables:
|
||||
CMAKE_OPTIONS: -DENABLE_LIME_X3DH=NO -DENABLE_VIDEO=NO
|
||||
CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON
|
||||
LINPHONESDK_PLATFORM: Desktop
|
||||
CMAKE_GENERATOR: "Visual Studio 16 2019"
|
||||
BUILD_TARGET: install
|
||||
PARALLEL_OPTIONS: "-- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false"
|
||||
EXITS_ON_ERROR_MSVC: 'if (-not ($$LastExitCode -eq 0)) {throw "Error: Build failed"}'
|
||||
|
||||
.windows-vs2019-scheduled:
|
||||
extends: .windows-vs2019-msvc
|
||||
rules:
|
||||
- if: $NIGHTLY_MASTER
|
||||
- if: $NIGHTLY_RELEASE
|
||||
- if: $ENABLE_WINDOWS_TESTS
|
||||
before_script:
|
||||
#cache disabled on scheduled builds since we dot not need the fastest build
|
||||
- Set-Variable -Name "CLCACHE_DISABLE" -Value 1
|
||||
|
||||
######################################################
|
||||
# JOBS
|
||||
######################################################
|
||||
|
||||
vs2019-msvc-win64-windows:
|
||||
extends: .windows-vs2019-msvc
|
||||
variables:
|
||||
CMAKE_C_COMPILER : cl.exe
|
||||
CMAKE_CXX_COMPILER : cl.exe
|
||||
CMAKE_RC_COMPILER : rc.exe
|
||||
|
||||
######################################################
|
||||
# NIGHTLY
|
||||
######################################################
|
||||
|
||||
## ON SCHEDULE ##
|
||||
|
||||
vs2019-win64-scheduled-windows:
|
||||
extends: .windows-vs2019-scheduled
|
||||
rules:
|
||||
- if: $NIGHTLY_MASTER
|
||||
- if: $NIGHTLY_RELEASE
|
||||
- if: $DEPLOY_RUN_WINDOWS
|
||||
|
||||
#################################################
|
||||
# PACKAGE
|
||||
#################################################
|
||||
|
||||
#Remove . when packaging process is ready to use
|
||||
job-windows-vs2017-package:
|
||||
vs2019-win64-package:
|
||||
stage: package
|
||||
tags: [ "windows" ]
|
||||
extends: .windows-vs2019-msvc
|
||||
dependencies: []
|
||||
only:
|
||||
variables:
|
||||
- $NIGHTLY_MASTER
|
||||
- $PACKAGE_WINDOWS
|
||||
- $DEPLOY_WINDOWS
|
||||
rules:
|
||||
- if: $NIGHTLY_MASTER
|
||||
- if: $NIGHTLY_RELEASE
|
||||
- if: $PACKAGE_WINDOWS
|
||||
- if: $DEPLOY_WINDOWS
|
||||
variables:
|
||||
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON
|
||||
MINGW_TYPE: mingw32
|
||||
script:
|
||||
- *build_all_windows_script
|
||||
- C:\PROGRA~1\Python37\Scripts\cl -s
|
||||
artifacts:
|
||||
paths:
|
||||
- build\OUTPUT
|
||||
when: always
|
||||
expire_in: 1 weeks
|
||||
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DENABLE_G729=ON
|
||||
|
||||
|
||||
#################################################
|
||||
# DEPLOY
|
||||
#################################################
|
||||
|
||||
job-windows-vs2017-win32-upload:
|
||||
vs2019-win64-upload:
|
||||
stage: deploy
|
||||
tags: [ "windows"]
|
||||
only:
|
||||
variables:
|
||||
- $NIGHTLY_MASTER
|
||||
- $DEPLOY_WINDOWS
|
||||
rules:
|
||||
- if: $NIGHTLY_MASTER
|
||||
- if: $DEPLOY_WINDOWS
|
||||
needs:
|
||||
- job-windows-vs2017-package
|
||||
- vs2019-win64-package
|
||||
script:
|
||||
- scp "build/OUTPUT/Packages/*.exe" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%"
|
||||
- scp "build-desktop/OUTPUT/Packages/*.exe" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%"
|
||||
|
||||
|
||||
job-windows-vs2017-plugins-upload:
|
||||
vs2019-win64-plugins-upload:
|
||||
stage: deploy
|
||||
tags: [ "windows"]
|
||||
only:
|
||||
variables:
|
||||
- $DEPLOY_PLUGINS
|
||||
rules:
|
||||
- if: $DEPLOY_PLUGINS
|
||||
needs:
|
||||
- job-windows-vs2017-scheduled
|
||||
- vs2019-win64-scheduled-windows
|
||||
script:
|
||||
- scp "build/OUTPUT/plugins/app/*.dll" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%/plugins"
|
||||
- scp "build-desktop/OUTPUT/plugins/app/*.dll" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%/plugins"
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,16 @@ variables:
|
|||
DEBIAN_10_IMAGE_VERSION: 20210217_python3
|
||||
UBUNTU_ROLLING_IMAGE_VERSION: 20211012_add_qtwebview
|
||||
|
||||
|
||||
workflow:
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
|
||||
when: never
|
||||
#Launch merge request pipeline is there is a merge request open
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TITLE !~ /^Draft:.*/
|
||||
#Launch pipeline if there is a schedule event
|
||||
- if: $CI_PIPELINE_SOURCE == "schedule"
|
||||
|
||||
#################################################
|
||||
# Platforms to test
|
||||
#################################################
|
||||
|
|
@ -38,26 +48,11 @@ variables:
|
|||
include:
|
||||
- '.gitlab-ci-files/job-linux-prepare.yml'
|
||||
- '.gitlab-ci-files/job-linux-desktop.yml'
|
||||
#- '.gitlab-ci-files/job-linux-desktop-debian8.yml' #Removed as there is 5.10 and not at least 5.12
|
||||
- '.gitlab-ci-files/job-linux-desktop-debian9.yml'
|
||||
## - '.gitlab-ci-files/job-linux-desktop-debian10.yml'
|
||||
# - '.gitlab-ci-files/job-linux-desktop-ubuntu-rolling.yml' #Removed as there is no QtWebengine in image
|
||||
# - '.gitlab-ci-files/job-linux-desktop-archlinux-latest.yml' #Removed as there is no QtWebengine in image
|
||||
# - '.gitlab-ci-files/job-linux-desktop-centos7.yml' #QtWebengine cannot be build (support for C++14 is not found in configuration)
|
||||
- '.gitlab-ci-files/job-windows-desktop.yml'
|
||||
- '.gitlab-ci-files/job-macosx-desktop.yml'
|
||||
|
||||
|
||||
# - '.gitlab-ci-files/job-linux.yml'
|
||||
# - '.gitlab-ci-files/job-linux-archlinux.yml'
|
||||
# - '.gitlab-ci-files/job-linux-centos7.yml'
|
||||
# - '.gitlab-ci-files/job-linux-debian8.yml'
|
||||
# - '.gitlab-ci-files/job-linux-debian9.yml'
|
||||
|
||||
# - '.gitlab-ci-files/job-macosx.yml'
|
||||
# - '.gitlab-ci-files/job-windows.yml'
|
||||
|
||||
|
||||
stages:
|
||||
- build
|
||||
- package
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- New event on new messages in chat and a shortcut to go to the end of chat if last message is not shown.
|
||||
- Shortcut in Reply to message's origin.
|
||||
- Based on Linphone SDK 5.1
|
||||
- 64bits application on Windows
|
||||
|
||||
### Fixed
|
||||
- Simplify filtering timelines with 2 modes (minimal or exhaustive) and on 3 kind of search : security level, simple/group chats, ephemerals.
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ include(CheckCXXCompilerFlag)
|
|||
|
||||
|
||||
set(TARGET_NAME linphone-qt)
|
||||
set(LINPHONE_QML_DIR "WORK/qml_files/ui")
|
||||
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS true)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
|
|
@ -623,6 +624,13 @@ add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E m
|
|||
add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${APP_PLUGIN}> "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/")
|
||||
add_custom_command(TARGET ${APP_PLUGIN} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_LINKER_FILE:${APP_PLUGIN}> "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/")
|
||||
#add_custom_command(TARGET ${TARGET_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/include/LinphoneApp/*" "${CMAKE_INSTALL_PREFIX}/include/LinphoneApp/")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/*" "${CMAKE_INSTALL_PREFIX}/include/LinphoneApp/" COPYONLY)
|
||||
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include" DESTINATION ".")
|
||||
|
||||
|
|
@ -630,6 +638,8 @@ install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include" DESTINATION ".")
|
|||
add_subdirectory(build)
|
||||
add_subdirectory(cmake_builder/linphone_package)
|
||||
|
||||
deployqt_hack(${TARGET_NAME} ${LINPHONE_QML_DIR})
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# To start better integration into IDE.
|
||||
|
|
|
|||
|
|
@ -33,16 +33,9 @@ if (POLICY CMP0079)
|
|||
cmake_policy(SET CMP0079 NEW)
|
||||
endif ()
|
||||
|
||||
set(LINPHONE_QML_DIR "WORK/qml_files/ui")
|
||||
|
||||
set(QT_PATH "${Qt5Core_DIR}/../../..")
|
||||
install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" \"-E\" \"copy_directory\" \"${CMAKE_CURRENT_SOURCE_DIR}/../../ui\" \"${LINPHONE_QML_DIR}\" WORKING_DIRECTORY \"${CMAKE_INSTALL_PREFIX}/..\")")
|
||||
if(NOT ENABLE_APP_WEBVIEW)
|
||||
set(RM_COMMAND "rm")
|
||||
if(CMAKE_VERSION VERSION_LESS 3.17)
|
||||
set(RM_COMMAND "remove")
|
||||
endif()
|
||||
install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" \"-E\" \"${RM_COMMAND}\" \"-f\" \"${LINPHONE_QML_DIR}/views/App/Main/Assistant/CreateAppSipAccountWithWebView.qml\" WORKING_DIRECTORY \"${CMAKE_INSTALL_PREFIX}/..\")")
|
||||
endif()
|
||||
|
||||
# ==============================================================================
|
||||
# Build package version.
|
||||
# ==============================================================================
|
||||
|
|
@ -112,10 +105,7 @@ endif ()
|
|||
# ==============================================================================
|
||||
set(APP_QT_CONF_DPI "1")
|
||||
if (WIN32)
|
||||
find_program(DEPLOYQT_PROGRAM windeployqt)
|
||||
if (NOT DEPLOYQT_PROGRAM)
|
||||
message(FATAL_ERROR "Could not find the windeployqt program. Make sure it is in the PATH.")
|
||||
endif ()
|
||||
|
||||
file(GLOB LIB_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_LIBDIR}/*.dll")
|
||||
install(FILES ${LIB_FILES} DESTINATION "${CMAKE_INSTALL_BINDIR}/")
|
||||
file(GLOB LIB_FILES "${LINPHONE_OUTPUT_DIR}/${CMAKE_INSTALL_BINDIR}/*.dll")
|
||||
|
|
@ -155,23 +145,33 @@ if (WIN32)
|
|||
LIBRARY DESTINATION "${LIBDIR}"
|
||||
RUNTIME DESTINATION "${LIBDIR}"
|
||||
)
|
||||
#Workaround windeployqt bug on webview plugin : folder "webview" can be in bin/ where it should be in bin/plugins. Else, we got "Webview plugin not found" => use of --plugindir
|
||||
install(CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \"\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/${EXECUTABLE_NAME}.exe\" --qmldir=${LINPHONE_QML_DIR} --plugindir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/plugins --compiler-runtime)")# -verbose=2)" COMPONENT binary_application)
|
||||
|
||||
##############################
|
||||
|
||||
|
||||
#On Windows, OpenLDAP couldn't be build with static libraries. Add them in installation for deployment.
|
||||
set(BIN_ARCH "win32")
|
||||
if(MSVC)
|
||||
set(MSVC_ARCH ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID})# ${MSVC_ARCH} MATCHES "X64"
|
||||
string(TOUPPER ${MSVC_ARCH} MSVC_ARCH)
|
||||
if(${MSVC_ARCH} MATCHES "X64")
|
||||
set(MINGW_PACKAGE_PREFIX "mingw-w64-x86_64-")
|
||||
set(MINGW_TYPE "mingw64")
|
||||
set(BIN_ARCH "win64")
|
||||
else()
|
||||
set(MINGW_PACKAGE_PREFIX "mingw-w64-i686-")
|
||||
set(MINGW_TYPE "mingw32")
|
||||
endif()
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
|
||||
set(MINGW_PACKAGE_PREFIX "mingw-w64-x86_64-")
|
||||
set(MINGW_TYPE "mingw64")
|
||||
set(BIN_ARCH "win64")
|
||||
else()
|
||||
set(MINGW_PACKAGE_PREFIX "mingw-w64-i686-")
|
||||
set(MINGW_TYPE "mingw32")
|
||||
endif()
|
||||
find_program(MSYS2_PROGRAM
|
||||
NAMES msys2_shell.cmd
|
||||
HINTS "C:/msys64/"
|
||||
)
|
||||
get_filename_component(MSYS2_PATH ${MSYS2_PROGRAM} PATH )
|
||||
set(MSVC_ARCH ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID})# ${MSVC_ARCH} MATCHES "X64"
|
||||
string(TOUPPER ${MSVC_ARCH} MSVC_ARCH)
|
||||
if(${MSVC_ARCH} MATCHES "X64")
|
||||
set(MSYS2_MINGW "mingw64")
|
||||
else()
|
||||
set(MSYS2_MINGW "mingw32")
|
||||
endif()
|
||||
|
||||
# list(REMOVE_ITEM SHARE_CONTENT "${CMAKE_INSTALL_DATAROOTDIR}/belr" "${CMAKE_INSTALL_DATAROOTDIR}/Belr" "${CMAKE_INSTALL_DATAROOTDIR}/images" "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}" "${CMAKE_INSTALL_DATAROOTDIR}/${APPLICATION_NAME}" "${CMAKE_INSTALL_DATAROOTDIR}/sounds")
|
||||
# foreach (ITEM IN LISTS SHARE_CONTENT)
|
||||
|
|
@ -222,13 +222,6 @@ elseif (APPLE)
|
|||
install(CODE "execute_process(COMMAND install_name_tool -add_rpath \"@executable_path/../Frameworks/\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/MacOS/${EXECUTABLE_NAME}\")")
|
||||
install(CODE "execute_process(COMMAND install_name_tool -add_rpath \"@executable_path/../lib/\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/MacOS/${EXECUTABLE_NAME}\")")
|
||||
|
||||
find_program(DEPLOYQT_PROGRAM macdeployqt)
|
||||
if (NOT DEPLOYQT_PROGRAM)
|
||||
message(FATAL_ERROR "Could not find the macdeployqt program. Make sure it is in the PATH.")
|
||||
endif()
|
||||
|
||||
install(CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app -qmldir=${LINPHONE_QML_DIR} -no-strip )")
|
||||
|
||||
if (LINPHONE_BUILDER_SIGNING_IDENTITY)
|
||||
install(CODE "file(GLOB FRAMEWORKS_NAMES \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/Frameworks/*\")
|
||||
foreach (FRAMEWORK \${FRAMEWORKS_NAMES})
|
||||
|
|
@ -386,34 +379,15 @@ if(${ENABLE_APP_PACKAGING})
|
|||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}")
|
||||
message(STATUS "Set AppImage CPack generator in OUTPUT/Packages")
|
||||
else()
|
||||
|
||||
set(CPACK_GENERATOR "NSIS")
|
||||
set(DO_GENERATOR YES)
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}-win32")
|
||||
string(COMPARE EQUAL ${CPACK_GENERATOR} "NSIS" IS_NSIS)
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${PACKAGE_VERSION}-${BIN_ARCH}")
|
||||
if (${IS_NSIS})
|
||||
find_program(NSIS_PROGRAM makensis)
|
||||
if(NOT NSIS_PROGRAM)
|
||||
if(MSVC)
|
||||
set(MSVC_ARCH ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID})# ${MSVC_ARCH} MATCHES "X64"
|
||||
string(TOUPPER ${MSVC_ARCH} MSVC_ARCH)
|
||||
if(${MSVC_ARCH} MATCHES "X64")
|
||||
set(MINGW_PACKAGE_PREFIX "mingw-w64-x86_64-")
|
||||
set(MINGW_TYPE "mingw64")
|
||||
else()
|
||||
set(MINGW_PACKAGE_PREFIX "mingw-w64-i686-")
|
||||
set(MINGW_TYPE "mingw32")
|
||||
endif()
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
|
||||
set(MINGW_PACKAGE_PREFIX "mingw-w64-x86_64-")
|
||||
set(MINGW_TYPE "mingw64")
|
||||
else()
|
||||
set(MINGW_PACKAGE_PREFIX "mingw-w64-i686-")
|
||||
set(MINGW_TYPE "mingw32")
|
||||
endif()
|
||||
find_program(MSYS2_PROGRAM
|
||||
NAMES msys2_shell.cmd
|
||||
HINTS "C:/msys64/"
|
||||
)
|
||||
|
||||
message(STATUS "Installing windows tools for nsis")
|
||||
execute_process(
|
||||
COMMAND "${MSYS2_PROGRAM}" "-${MINGW_TYPE}" "-here" "-full-path" "-defterm" "-shell" "sh" "-l" "-c" "pacman -Sy ${MINGW_PACKAGE_PREFIX}nsis --noconfirm --needed"
|
||||
|
|
@ -487,3 +461,54 @@ if(${ENABLE_APP_PACKAGING})
|
|||
install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/packaging.cmake")
|
||||
include(CPack)
|
||||
endif()
|
||||
|
||||
|
||||
function(deployqt_hack target qml_dir)
|
||||
find_package(Qt5 COMPONENTS Core REQUIRED)
|
||||
get_target_property(qmake_executable Qt5::qmake IMPORTED_LOCATION)
|
||||
get_filename_component(_qt_bin_dir "${qmake_executable}" DIRECTORY)
|
||||
#Note: CMAKE_CURRENT_SOURCE_DIR point to linphone-app because deployqt_hack is called there.
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" "-E" "copy_directory" "${CMAKE_CURRENT_SOURCE_DIR}/ui" "${qml_dir}"
|
||||
WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}/..")
|
||||
if(NOT ENABLE_APP_WEBVIEW)
|
||||
set(RM_COMMAND "rm")
|
||||
if(CMAKE_VERSION VERSION_LESS 3.17)
|
||||
set(RM_COMMAND "remove")
|
||||
endif()
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" "-E" "${RM_COMMAND}" "-f" "${qml_dir}/views/App/Main/Assistant/CreateAppSipAccountWithWebView.qml"
|
||||
WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}/..")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
#Windeployqt hack for CPack. WindeployQt cannot be used only with a simple 'install(CODE "execute_process' or CPack will not have all required files.
|
||||
find_program(DEPLOYQT_PROGRAM windeployqt HINTS "${_qt_bin_dir}")
|
||||
if (NOT DEPLOYQT_PROGRAM)
|
||||
message(FATAL_ERROR "Could not find the windeployqt program. Make sure it is in the PATH.")
|
||||
endif ()
|
||||
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/winqt/"
|
||||
COMMAND "${CMAKE_COMMAND}" -E
|
||||
env PATH="${_qt_bin_dir}" "${DEPLOYQT_PROGRAM}"
|
||||
--qmldir "${qml_dir}"
|
||||
--plugindir "${CMAKE_CURRENT_BINARY_DIR}/winqt/plugins"
|
||||
--verbose 0
|
||||
--no-compiler-runtime
|
||||
--dir "${CMAKE_CURRENT_BINARY_DIR}/winqt/"
|
||||
"$<TARGET_FILE:${target}>"
|
||||
COMMENT "Deploying Qt..."
|
||||
WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}/.."
|
||||
)
|
||||
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/winqt/" DESTINATION bin)
|
||||
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
|
||||
include(InstallRequiredSystemLibraries)
|
||||
elseif(APPLE)
|
||||
find_program(DEPLOYQT_PROGRAM macdeployqt HINTS "${_qt_bin_dir}")
|
||||
if (NOT DEPLOYQT_PROGRAM)
|
||||
message(FATAL_ERROR "Could not find the macdeployqt program. Make sure it is in the PATH.")
|
||||
endif()
|
||||
install(CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app -qmldir=${qml_dir} -no-strip )")
|
||||
endif()
|
||||
endfunction()
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 6e2b508e404b95d04439d2f76f0d24b36fb911d2
|
||||
Subproject commit 49f9a1ace8dc5e092d9d176004bc314e5a011c20
|
||||
Loading…
Add table
Reference in a new issue