mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 03:18:07 +00:00
Fix Windows CI build on vs2022
This commit is contained in:
parent
22246a679c
commit
117df75343
2 changed files with 118 additions and 80 deletions
|
|
@ -2,39 +2,32 @@
|
|||
# BUILD
|
||||
#################################################
|
||||
|
||||
.windows-vs2019:
|
||||
extends: .job-prepare
|
||||
.windows-vs:
|
||||
extends: .prepare
|
||||
stage: build
|
||||
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: -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
||||
CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON -DCMAKE_PREFIX_PATH="C:/Qt/$QT5_WIN_VER_VS2022/msvc2019_64"
|
||||
LINPHONESDK_PLATFORM: Desktop
|
||||
OUTPUT_ZIP_FOLDER: win64
|
||||
MINGW_TYPE: mingw64
|
||||
CMAKE_GENERATOR: "Visual Studio 16 2019"
|
||||
CMAKE_ARCHITECTURE : -A x64
|
||||
BUILD_TARGET: install
|
||||
CMAKE_C_COMPILER : cl.exe
|
||||
CMAKE_CXX_COMPILER : cl.exe
|
||||
CMAKE_RC_COMPILER : rc.exe
|
||||
|
||||
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\" + $MINGW_TYPE + "\bin;" + $env:SIGNTOOL_ROOT + "\x64;C:\msys64;C:\msys64\usr\bin;")
|
||||
- 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\" + $env:QT5_WIN_VER + "\msvc2019_64\bin")} Else {$env:Path = ($env:Path + ";C:\Qt\" + $env:QT5_WIN_VER + "\msvc2019\bin")}
|
||||
- if ($MAKE_RELEASE_FILE_URL) { } else { $RELEASE_FILE = "" }
|
||||
- $env:Path = ($env:Path + ";C:\Qt\" + $env:QT5_WIN_VER_VS2022 + "\msvc2019_64\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
|
||||
- sccache --show-stats
|
||||
- sccache --zero-stats
|
||||
- Write-Output $QT_WIN_VER
|
||||
- Write-Output $CMAKE_ARCHITECTURE
|
||||
- Write-Output $SCHEDULE_CMAKE_OPTIONS
|
||||
- Write-Output $MAKEFILE_JOBS
|
||||
|
|
@ -76,17 +69,14 @@
|
|||
# /!\ 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 ($EXITS_ON_ERROR_MSBUILD) { Invoke-Expression "$EXITS_ON_ERROR_MSBUILD" } else { Write-Output "EXITS_ON_ERROR_MSBUILD 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
|
||||
- sccache --show-stats
|
||||
|
||||
################
|
||||
artifacts:
|
||||
|
|
@ -95,22 +85,38 @@
|
|||
- build-desktop\ninja_buildlog.txt
|
||||
- build-desktop\invertSearch.ps1
|
||||
- build-desktop\OUTPUT\*
|
||||
- build-desktop\linphone-sdk\openh264-prefix\src\openh264-stamp\*
|
||||
- build-desktop\external\linphone-sdk\openh264-prefix\src\openh264-stamp\*
|
||||
when: always
|
||||
expire_in: 1 week
|
||||
|
||||
.windows-vs2019-msvc:
|
||||
extends: .windows-vs2019
|
||||
variables:
|
||||
CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=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
|
||||
|
||||
.windows-vs2022:
|
||||
extends: .windows-vs
|
||||
tags: [ "windows-powershell-vs-17-2022" ]
|
||||
|
||||
.windows-msbuild-variables:
|
||||
variables:
|
||||
PARALLEL_OPTIONS: "-- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false"
|
||||
EXITS_ON_ERROR_MSBUILD: 'if (-not ($$LastExitCode -eq 0)) {throw "Error: Build failed"}'
|
||||
CMAKE_ARCHITECTURE : -A x64
|
||||
|
||||
.windows-ninja-variables:
|
||||
variables:
|
||||
CLI_OUTPUT_INFO_NINJA: Write-Output -NoEnumerate "Building with Ninja. See ninja_buildlog.txt to get details before completing the build."
|
||||
NINJA_BUILD_PARALLEL_LEVEL: -DCMAKE_BUILD_PARALLEL_LEVEL=$WINDOWS_PARALLEL_JOBS
|
||||
PARALLEL_OPTIONS: "--parallel $WINDOWS_PARALLEL_JOBS"
|
||||
NINJA_OPTIMIZATION: "| find /V \"inclusion du fichier\" > ninja_buildlog.txt; cmd /c \"exit /b 0\""
|
||||
NINJA_EXPLICIT_COMPILER_SET: -DCMAKE_C_COMPILER="$CMAKE_C_COMPILER" -DCMAKE_CXX_COMPILER="$CMAKE_CXX_COMPILER" -DCMAKE_RC_COMPILER="$CMAKE_RC_COMPILER"
|
||||
DISPLAY_NINJA_LOG: Get-Content ninja_buildlog.txt
|
||||
SEARCH_NINJA_ERROR: 'Write-Output "`$$isFound = (Select-String -Pattern `"build stopped: subcommand failed`" -SimpleMatch -Quiet -Path ninja_buildlog.txt)" > invertSearch.ps1'
|
||||
DISPLAY_SEARCH_STATUS: Write-Output 'echo $$isFound' >> invertSearch.ps1
|
||||
SET_EXIT_CODE_BASED_ON_SEARCH_STATUS: Write-Output -NoEnumerate "If (`$(echo `$$isFound) -eq `"True`") {throw `"There was an error in the build`"} else {exit 0}" >> invertSearch.ps1
|
||||
SHOW_SEARCH_STATUS_SCRIPT: Get-Content invertSearch.ps1
|
||||
LAUNCH_SEARCH_STATUS_SCRIPT: .\invertSearch.ps1
|
||||
CMAKE_GENERATOR: "Ninja"
|
||||
|
||||
.windows-msbuild-scheduled:
|
||||
extends: .windows-msbuild-variables
|
||||
rules:
|
||||
- if: $NIGHTLY_MASTER
|
||||
- if: $NIGHTLY_RELEASE
|
||||
|
|
@ -120,15 +126,26 @@
|
|||
- Set-Variable -Name "CLCACHE_DISABLE" -Value 1
|
||||
|
||||
######################################################
|
||||
# JOBS
|
||||
# On each push
|
||||
######################################################
|
||||
|
||||
vs2019-msvc-win64-windows:
|
||||
extends: .windows-vs2019-msvc
|
||||
variables:
|
||||
CMAKE_C_COMPILER : cl.exe
|
||||
CMAKE_CXX_COMPILER : cl.exe
|
||||
CMAKE_RC_COMPILER : rc.exe
|
||||
.win64-mr-rules:
|
||||
rules:
|
||||
- if: ($CI_PIPELINE_SOURCE == "merge_request_event") && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
|
||||
|
||||
win64-msbuild-vs2022-windows:
|
||||
rules:
|
||||
- !reference [.rules-merge-request-manual, rules]
|
||||
extends:
|
||||
- .windows-vs2022
|
||||
- .windows-msbuild-variables
|
||||
- .win64-mr-rules
|
||||
|
||||
win64-ninja-vs2022-windows:
|
||||
extends:
|
||||
- .windows-vs2022
|
||||
- .windows-ninja-variables
|
||||
- .win64-mr-rules
|
||||
|
||||
######################################################
|
||||
# NIGHTLY
|
||||
|
|
@ -136,21 +153,26 @@ vs2019-msvc-win64-windows:
|
|||
|
||||
## ON SCHEDULE ##
|
||||
|
||||
vs2019-win64-scheduled-windows:
|
||||
extends: .windows-vs2019-scheduled
|
||||
.vs-scheduled-windows:
|
||||
rules:
|
||||
- !reference [.rules-merge-request-manual, rules]
|
||||
- if: $NIGHTLY_MASTER
|
||||
- if: $NIGHTLY_RELEASE
|
||||
- if: $DEPLOY_PLUGINS
|
||||
- if: $DEPLOY_RUN_WINDOWS
|
||||
|
||||
win64-ninja-vs2022-scheduled-windows:
|
||||
extends:
|
||||
- win64-ninja-vs2022-windows
|
||||
- .vs-scheduled-windows
|
||||
|
||||
#################################################
|
||||
# PACKAGE
|
||||
#################################################
|
||||
|
||||
#Remove . when packaging process is ready to use
|
||||
vs2019-win64-package:
|
||||
|
||||
.vs-win64-package:
|
||||
stage: package
|
||||
extends: .windows-vs2019-msvc
|
||||
dependencies: []
|
||||
rules:
|
||||
- !reference [.rules-merge-request-manual, rules]
|
||||
|
|
@ -161,48 +183,48 @@ vs2019-win64-package:
|
|||
variables:
|
||||
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON
|
||||
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER
|
||||
|
||||
|
||||
win64-ninja-vs2022-package-windows:
|
||||
variables:
|
||||
CMAKE_GENERATOR: "Ninja"
|
||||
CMAKE_ARCHITECTURE: ""
|
||||
PARALLEL_OPTIONS: ""
|
||||
extends:
|
||||
- .windows-vs2022
|
||||
- .windows-ninja-variables
|
||||
- .vs-win64-package
|
||||
|
||||
#################################################
|
||||
# DEPLOY
|
||||
#################################################
|
||||
|
||||
vs2019-win64-upload:
|
||||
.win64-upload:
|
||||
stage: deploy
|
||||
tags: [ "deploy"]
|
||||
tags: [ "windows-powershell" ]
|
||||
rules:
|
||||
- !reference [.rules-merge-request-manual, rules]
|
||||
- if: $NIGHTLY_MASTER
|
||||
- if: $DEPLOY_WINDOWS
|
||||
needs:
|
||||
- vs2019-win64-package
|
||||
script:
|
||||
# Going to folder in order to avoid having path in checksum
|
||||
- |-
|
||||
cd build-desktop/OUTPUT/Packages/
|
||||
for file in $(find . -type f -name '*.exe' -exec basename {} \;)
|
||||
do
|
||||
rsync -rlv --ignore-existing $file $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$WINDOWS_PLATFORM/$APP_FOLDER
|
||||
sha512sum $file > $file.sha512
|
||||
rsync -rlv --ignore-existing $file.sha512 $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$WINDOWS_PLATFORM/$APP_FOLDER
|
||||
done
|
||||
cd ../../..
|
||||
- |-
|
||||
if [[ $MAKE_RELEASE_FILE_URL != "" ]]; then
|
||||
rsync -rlv build-desktop/OUTPUT/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$WINDOWS_PLATFORM
|
||||
rsync -rlv build-desktop/OUTPUT/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$WINDOWS_PLATFORM
|
||||
fi
|
||||
|
||||
vs2019-win64-plugins-upload:
|
||||
script:
|
||||
- scp -pr build-desktop/OUTPUT/Packages/*.exe ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/${APP_FOLDER}
|
||||
- if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/RELEASE ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
|
||||
- if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/RELEASE ${MAIN_DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
|
||||
|
||||
win64-ninja-vs2022-upload:
|
||||
extends:
|
||||
- .win64-upload
|
||||
needs:
|
||||
- win64-ninja-vs2022-package-windows
|
||||
|
||||
.win64-plugins-upload:
|
||||
stage: deploy
|
||||
tags: [ "windows"]
|
||||
tags: [ "windows" ]
|
||||
rules:
|
||||
- if: $DEPLOY_PLUGINS
|
||||
needs:
|
||||
- vs2019-win64-scheduled-windows
|
||||
script:
|
||||
- scp "build-desktop/OUTPUT/plugins/app/*.dll" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%/plugins"
|
||||
- scp "build-desktop/OUTPUT/plugins/app/*.dll" "%MAIN_DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%/plugins"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
win64-ninja-vs2022-plugins-upload:
|
||||
extends: .win64-plugins-upload
|
||||
needs:
|
||||
- win64-ninja-vs2022-scheduled-windows
|
||||
|
|
|
|||
|
|
@ -40,6 +40,22 @@ if(ENABLE_BUILD_VERBOSE)
|
|||
message("User Args : ${USER_ARGS}")
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0149)
|
||||
# VS generator looks for most recent Windows SDK, ignoring
|
||||
# CMAKE_SYSTEM_VERSION and allowing override by WindowsSDKVersion
|
||||
# environment variable. New in 3.27. This is to allow override
|
||||
# in the Windows CI builds.
|
||||
# This MUST be set before any project() or or enable_language() command.
|
||||
cmake_policy(SET CMP0149 NEW)
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0141)
|
||||
# Changes the way debug info on Windows are stored (forces /Z7)
|
||||
# This is a requirement to use build cache on Windows, since /Zi is another Microsoft cache, incompatible with any third party cache known to date
|
||||
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
|
||||
cmake_policy(SET CMP0141 NEW)
|
||||
endif()
|
||||
|
||||
project(linphoneqt)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue