ci: Add jobs for FASTBuild generator on Linux, macOS, and Windows

This commit is contained in:
Brad King
2025-07-28 13:59:26 -04:00
committed by Eduard Voronkin
parent 01147454e7
commit 94113ac687
15 changed files with 143 additions and 0 deletions

View File

@@ -315,6 +315,16 @@ t:fedora42-makefiles-nospace:
CMAKE_CI_BUILD_NAME: fedora42_makefiles_nospace
CMAKE_CI_JOB_NIGHTLY: "true"
t:fedora42-fastbuild:
extends:
- .fedora42_fastbuild
- .cmake_test_linux_release
- .linux_x86_64_v3_tags
- .run_dependent
- .needs_centos7_x86_64
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
t:nvhpc24.9-ninja:
extends:
- .nvhpc_ninja
@@ -1053,6 +1063,18 @@ t:macos-arm64-xcode:
needs:
- t:macos-arm64-ninja
t:macos-arm64-fastbuild:
extends:
- .macos_arm64_fastbuild
- .cmake_test_macos_external
- .macos_arm64_tags_ext
- .cmake_junit_artifacts
- .run_dependent
needs:
- t:macos-arm64-ninja
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
t:macos-arm64-xcode-symlinked:
extends:
- .macos_arm64_xcode_symlinked
@@ -1241,6 +1263,18 @@ t:windows-vs2022-x64-jom:
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
t:windows-vs2022-x64-fastbuild:
extends:
- .windows_vs2022_x64_fastbuild
- .cmake_test_windows_external
- .windows_x86_64_tags_concurrent_vs2022
- .cmake_junit_artifacts
- .run_dependent
needs:
- t:windows-vs2022-x64-ninja
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
t:windows-borland5.5:
extends:
- .windows_borland5.5

1
.gitlab/.gitignore vendored
View File

@@ -3,6 +3,7 @@
/bcc*
/cmake*
/emsdk
/fastbuild
/iar
/intel
/ispc*

View File

@@ -0,0 +1 @@
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@@ -0,0 +1,2 @@
include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@@ -0,0 +1 @@
include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_common.cmake")

View File

@@ -0,0 +1 @@
source .gitlab/ci/fastbuild-env.sh

View File

@@ -0,0 +1 @@
. .gitlab/ci/fastbuild-env.sh

View File

@@ -0,0 +1,2 @@
. .gitlab/ci/fastbuild-env.ps1
Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1

View File

@@ -0,0 +1,4 @@
$pwdpath = $pwd.Path
& "$pwsh" -File ".gitlab/ci/fastbuild.ps1"
Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\fastbuild;$env:PATH"
Write-Host "fbuild version: $(fbuild -version)"

View File

@@ -0,0 +1,3 @@
.gitlab/ci/fastbuild.sh
export PATH=$PWD/.gitlab/fastbuild:$PATH
fbuild -version

24
.gitlab/ci/fastbuild.ps1 Normal file
View File

@@ -0,0 +1,24 @@
$erroractionpreference = "stop"
if ("$env:PROCESSOR_ARCHITECTURE" -eq "AMD64") {
$sha256sum = "65EA2572275CD326116F39047F60008D8F90373AF1EB419C1CF1DE65379321AC"
$filename = "FASTBuild-Windows-x64-v1.15"
} else {
throw ('unknown PROCESSOR_ARCHITECTURE: ' + "$env:PROCESSOR_ARCHITECTURE")
}
$tarball = "$filename.zip"
$outdir = $pwd.Path
$outdir = "$outdir\.gitlab"
$ProgressPreference = 'SilentlyContinue'
# This URL is only visible inside of Kitware's network. See above filename table.
Invoke-WebRequest -Uri "https://cmake.org/files/dependencies/internal/$tarball" -OutFile "$outdir\$tarball"
$hash = Get-FileHash "$outdir\$tarball" -Algorithm SHA256
if ($hash.Hash -ne $sha256sum) {
exit 1
}
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::ExtractToDirectory("$outdir\$tarball", "$outdir\fastbuild")
Remove-Item "$outdir\$tarball"

37
.gitlab/ci/fastbuild.sh Executable file
View File

@@ -0,0 +1,37 @@
#!/bin/sh
set -e
case "$(uname -s)-$(uname -m)" in
Linux-x86_64)
shatool="sha256sum"
sha256sum="2c7b4c833c7f2846119aaa72bfa92df5b7da1aa17a0e62187ac0bbcbbf5cce8e"
filename="FASTBuild-Linux-x64-v1.15"
exenames="fastbuild/fbuild fastbuild/fbuildworker"
;;
Darwin-*)
shatool="shasum -a 256"
sha256sum="875fedc71a2b479b22e90fcc77db75513b1d88794fd71cfe3889f41b225efbaa"
filename="FASTBuild-OSX-x64+ARM-v1.15"
exenames="fastbuild/FBuild fastbuild/FBuildWorker"
;;
*)
echo "Unrecognized platform $(uname -s)-$(uname -m)"
exit 1
;;
esac
readonly shatool
readonly sha256sum
readonly tarball="$filename.zip"
cd .gitlab
echo "$sha256sum $tarball" > fastbuild.sha256sum
# This URL is only visible inside of Kitware's network. See above filename table.
curl -OL "https://cmake.org/files/dependencies/internal/$tarball"
$shatool --check fastbuild.sha256sum
mkdir -p fastbuild
unzip -d fastbuild -q "$tarball"
chmod +x $exenames
rm "$tarball" fastbuild.sha256sum

View File

@@ -235,6 +235,14 @@
CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build"
.fedora42_fastbuild:
extends: .fedora42
variables:
CMAKE_CONFIGURATION: fedora42_fastbuild
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "FASTBuild"
### Clang Compiler
.debian12_makefiles_clang:

View File

@@ -130,6 +130,14 @@
CMAKE_CONFIGURATION: macos_x86_64_ninja_ub
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_fastbuild:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_fastbuild
CMAKE_GENERATOR: FASTBuild
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
## Tags
.macos_x86_64_tags:

View File

@@ -189,6 +189,14 @@
CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_fastbuild:
extends: .windows
variables:
CMAKE_GENERATOR: "FASTBuild"
CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_vs2022_x64_nmake:
extends:
- .windows_nmake
@@ -213,6 +221,14 @@
variables:
CMAKE_CONFIGURATION: windows_vs2022_x64_ninja_multi
.windows_vs2022_x64_fastbuild:
extends:
- .windows_fastbuild
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_vs2022_x64_fastbuild
.windows_clang_ninja:
extends:
- .windows_ninja