瀏覽代碼

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

Brad King 3 月之前
父節點
當前提交
94113ac687

+ 34 - 0
.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

+ 1 - 0
.gitlab/.gitignore

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

+ 1 - 0
.gitlab/ci/configure_fedora42_fastbuild.cmake

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

+ 2 - 0
.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")

+ 1 - 0
.gitlab/ci/configure_windows_vs2022_x64_fastbuild.cmake

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

+ 1 - 0
.gitlab/ci/env_fedora42_fastbuild.sh

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

+ 1 - 0
.gitlab/ci/env_macos_arm64_fastbuild.sh

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

+ 2 - 0
.gitlab/ci/env_windows_vs2022_x64_fastbuild.ps1

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

+ 4 - 0
.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)"

+ 3 - 0
.gitlab/ci/fastbuild-env.sh

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

+ 24 - 0
.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"

+ 37 - 0
.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

+ 8 - 0
.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:

+ 8 - 0
.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:

+ 16 - 0
.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