From 94113ac687aa84a9c585db599911407f0cf223a4 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 28 Jul 2025 13:59:26 -0400 Subject: ci: Add jobs for FASTBuild generator on Linux, macOS, and Windows --- .gitlab-ci.yml | 34 ++++++++++++++++++++ .gitlab/.gitignore | 1 + .gitlab/ci/configure_fedora42_fastbuild.cmake | 1 + .gitlab/ci/configure_macos_arm64_fastbuild.cmake | 2 ++ .../configure_windows_vs2022_x64_fastbuild.cmake | 1 + .gitlab/ci/env_fedora42_fastbuild.sh | 1 + .gitlab/ci/env_macos_arm64_fastbuild.sh | 1 + .gitlab/ci/env_windows_vs2022_x64_fastbuild.ps1 | 2 ++ .gitlab/ci/fastbuild-env.ps1 | 4 +++ .gitlab/ci/fastbuild-env.sh | 3 ++ .gitlab/ci/fastbuild.ps1 | 24 ++++++++++++++ .gitlab/ci/fastbuild.sh | 37 ++++++++++++++++++++++ .gitlab/os-linux.yml | 8 +++++ .gitlab/os-macos.yml | 8 +++++ .gitlab/os-windows.yml | 16 ++++++++++ 15 files changed, 143 insertions(+) create mode 100644 .gitlab/ci/configure_fedora42_fastbuild.cmake create mode 100644 .gitlab/ci/configure_macos_arm64_fastbuild.cmake create mode 100644 .gitlab/ci/configure_windows_vs2022_x64_fastbuild.cmake create mode 100644 .gitlab/ci/env_fedora42_fastbuild.sh create mode 100644 .gitlab/ci/env_macos_arm64_fastbuild.sh create mode 100644 .gitlab/ci/env_windows_vs2022_x64_fastbuild.ps1 create mode 100644 .gitlab/ci/fastbuild-env.ps1 create mode 100644 .gitlab/ci/fastbuild-env.sh create mode 100644 .gitlab/ci/fastbuild.ps1 create mode 100755 .gitlab/ci/fastbuild.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f2f4772..608071f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/.gitlab/.gitignore b/.gitlab/.gitignore index 848d72f..1afc482 100644 --- a/.gitlab/.gitignore +++ b/.gitlab/.gitignore @@ -3,6 +3,7 @@ /bcc* /cmake* /emsdk +/fastbuild /iar /intel /ispc* diff --git a/.gitlab/ci/configure_fedora42_fastbuild.cmake b/.gitlab/ci/configure_fedora42_fastbuild.cmake new file mode 100644 index 0000000..20863a2 --- /dev/null +++ b/.gitlab/ci/configure_fedora42_fastbuild.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_macos_arm64_fastbuild.cmake b/.gitlab/ci/configure_macos_arm64_fastbuild.cmake new file mode 100644 index 0000000..1b976d2 --- /dev/null +++ b/.gitlab/ci/configure_macos_arm64_fastbuild.cmake @@ -0,0 +1,2 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_windows_vs2022_x64_fastbuild.cmake b/.gitlab/ci/configure_windows_vs2022_x64_fastbuild.cmake new file mode 100644 index 0000000..166690a --- /dev/null +++ b/.gitlab/ci/configure_windows_vs2022_x64_fastbuild.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_common.cmake") diff --git a/.gitlab/ci/env_fedora42_fastbuild.sh b/.gitlab/ci/env_fedora42_fastbuild.sh new file mode 100644 index 0000000..5e8b2df --- /dev/null +++ b/.gitlab/ci/env_fedora42_fastbuild.sh @@ -0,0 +1 @@ +source .gitlab/ci/fastbuild-env.sh diff --git a/.gitlab/ci/env_macos_arm64_fastbuild.sh b/.gitlab/ci/env_macos_arm64_fastbuild.sh new file mode 100644 index 0000000..6b25127 --- /dev/null +++ b/.gitlab/ci/env_macos_arm64_fastbuild.sh @@ -0,0 +1 @@ +. .gitlab/ci/fastbuild-env.sh diff --git a/.gitlab/ci/env_windows_vs2022_x64_fastbuild.ps1 b/.gitlab/ci/env_windows_vs2022_x64_fastbuild.ps1 new file mode 100644 index 0000000..803fefc --- /dev/null +++ b/.gitlab/ci/env_windows_vs2022_x64_fastbuild.ps1 @@ -0,0 +1,2 @@ +. .gitlab/ci/fastbuild-env.ps1 +Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1 diff --git a/.gitlab/ci/fastbuild-env.ps1 b/.gitlab/ci/fastbuild-env.ps1 new file mode 100644 index 0000000..9b7cc8f --- /dev/null +++ b/.gitlab/ci/fastbuild-env.ps1 @@ -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)" diff --git a/.gitlab/ci/fastbuild-env.sh b/.gitlab/ci/fastbuild-env.sh new file mode 100644 index 0000000..2bdf524 --- /dev/null +++ b/.gitlab/ci/fastbuild-env.sh @@ -0,0 +1,3 @@ +.gitlab/ci/fastbuild.sh +export PATH=$PWD/.gitlab/fastbuild:$PATH +fbuild -version diff --git a/.gitlab/ci/fastbuild.ps1 b/.gitlab/ci/fastbuild.ps1 new file mode 100644 index 0000000..ac74fcb --- /dev/null +++ b/.gitlab/ci/fastbuild.ps1 @@ -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" diff --git a/.gitlab/ci/fastbuild.sh b/.gitlab/ci/fastbuild.sh new file mode 100755 index 0000000..3a6625d --- /dev/null +++ b/.gitlab/ci/fastbuild.sh @@ -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 diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index 4436240..47403df 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -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: diff --git a/.gitlab/os-macos.yml b/.gitlab/os-macos.yml index 41a417d..29bc9cb 100644 --- a/.gitlab/os-macos.yml +++ b/.gitlab/os-macos.yml @@ -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: diff --git a/.gitlab/os-windows.yml b/.gitlab/os-windows.yml index a37733e..71c1454 100644 --- a/.gitlab/os-windows.yml +++ b/.gitlab/os-windows.yml @@ -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 -- cgit v0.12