aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/fmt/.github/workflows
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2025-11-07 14:49:13 +0100
committerGitHub Enterprise <[email protected]>2025-11-07 14:49:13 +0100
commit24e43a913f29ac3b314354e8ce5175f135bcc64f (patch)
treeca442937ceeb63461012b33a4576e9835099f106 /thirdparty/fmt/.github/workflows
parentget oplog attachments (#622) (diff)
downloadzen-24e43a913f29ac3b314354e8ce5175f135bcc64f.tar.xz
zen-24e43a913f29ac3b314354e8ce5175f135bcc64f.zip
switch to xmake for package management (#611)
This change removes our dependency on vcpkg for package management, in favour of bringing some code in-tree in the `thirdparty` folder as well as using the xmake build-in package management feature. For the latter, all the package definitions are maintained in the zen repo itself, in the `repo` folder. It should now also be easier to build the project as it will no longer depend on having the right version of vcpkg installed, which has been a common problem for new people coming in to the codebase. Now you should only need xmake to build. * Bumps xmake requirement on github runners to 2.9.9 to resolve an issue where xmake on Windows invokes cmake with `v144` toolchain which does not exist * BLAKE3 is now in-tree at `thirdparty/blake3` * cpr is now in-tree at `thirdparty/cpr` * cxxopts is now in-tree at `thirdparty/cxxopts` * fmt is now in-tree at `thirdparty/fmt` * robin-map is now in-tree at `thirdparty/robin-map` * ryml is now in-tree at `thirdparty/ryml` * sol2 is now in-tree at `thirdparty/sol2` * spdlog is now in-tree at `thirdparty/spdlog` * utfcpp is now in-tree at `thirdparty/utfcpp` * xmake package repo definitions is in `repo` * implemented support for sanitizers. ASAN is supported on windows, TSAN, UBSAN, MSAN etc are supported on Linux/MacOS though I have not yet tested it extensively on MacOS * the zencore encryption implementation also now supports using mbedTLS which is used on MacOS, though for now we still use openssl on Linux * crashpad * bumps libcurl to 8.11.0 (from 8.8.0) which should address a rare build upload bug
Diffstat (limited to 'thirdparty/fmt/.github/workflows')
-rw-r--r--thirdparty/fmt/.github/workflows/cifuzz.yml32
-rw-r--r--thirdparty/fmt/.github/workflows/doc.yml42
-rw-r--r--thirdparty/fmt/.github/workflows/lint.yml28
-rw-r--r--thirdparty/fmt/.github/workflows/linux.yml176
-rw-r--r--thirdparty/fmt/.github/workflows/macos.yml58
-rw-r--r--thirdparty/fmt/.github/workflows/scorecard.yml65
-rw-r--r--thirdparty/fmt/.github/workflows/windows.yml91
7 files changed, 492 insertions, 0 deletions
diff --git a/thirdparty/fmt/.github/workflows/cifuzz.yml b/thirdparty/fmt/.github/workflows/cifuzz.yml
new file mode 100644
index 000000000..3769e2a8f
--- /dev/null
+++ b/thirdparty/fmt/.github/workflows/cifuzz.yml
@@ -0,0 +1,32 @@
+name: CIFuzz
+on: [pull_request]
+
+permissions:
+ contents: read
+
+jobs:
+ Fuzzing:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Build fuzzers
+ id: build
+ uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@92182553173581f871130c71c71b17f003d47b0a
+ with:
+ oss-fuzz-project-name: 'fmt'
+ dry-run: false
+ language: c++
+
+ - name: Run fuzzers
+ uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@92182553173581f871130c71c71b17f003d47b0a
+ with:
+ oss-fuzz-project-name: 'fmt'
+ fuzz-seconds: 300
+ dry-run: false
+ language: c++
+
+ - name: Upload crash
+ uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
+ if: failure() && steps.build.outcome == 'success'
+ with:
+ name: artifacts
+ path: ./out/artifacts
diff --git a/thirdparty/fmt/.github/workflows/doc.yml b/thirdparty/fmt/.github/workflows/doc.yml
new file mode 100644
index 000000000..5f772dab1
--- /dev/null
+++ b/thirdparty/fmt/.github/workflows/doc.yml
@@ -0,0 +1,42 @@
+name: doc
+
+on: [push, pull_request]
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+
+ steps:
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Add Ubuntu mirrors
+ run: |
+ # Github Actions caching proxy is at times unreliable
+ # see https://github.com/actions/runner-images/issues/7048
+ printf 'http://azure.archive.ubuntu.com/ubuntu\tpriority:1\n' | sudo tee /etc/apt/mirrors.txt
+ curl http://mirrors.ubuntu.com/mirrors.txt | sudo tee --append /etc/apt/mirrors.txt
+ sudo sed -i 's~http://azure.archive.ubuntu.com/ubuntu/~mirror+file:/etc/apt/mirrors.txt~' /etc/apt/sources.list
+
+ - name: Create build environment
+ run: |
+ sudo apt update
+ sudo apt install doxygen
+ pip install mkdocs-material==9.5.25 mkdocstrings==0.26.1 mike==2.1.1
+ cmake -E make_directory ${{runner.workspace}}/build
+ # Workaround https://github.com/actions/checkout/issues/13:
+ git config --global user.name "$(git --no-pager log --format=format:'%an' -n 1)"
+ git config --global user.email "$(git --no-pager log --format=format:'%ae' -n 1)"
+
+ - name: Build
+ working-directory: ${{runner.workspace}}/build
+ run: $GITHUB_WORKSPACE/support/mkdocs deploy dev
+
+ - name: Deploy
+ env:
+ KEY: "${{secrets.KEY}}"
+ if: env.KEY != '' && github.ref == 'refs/heads/master'
+ working-directory: ${{runner.workspace}}/fmt/build/fmt.dev
+ run: git push https://[email protected]/fmtlib/fmt.dev.git
diff --git a/thirdparty/fmt/.github/workflows/lint.yml b/thirdparty/fmt/.github/workflows/lint.yml
new file mode 100644
index 000000000..1e1dea621
--- /dev/null
+++ b/thirdparty/fmt/.github/workflows/lint.yml
@@ -0,0 +1,28 @@
+name: lint
+
+on:
+ pull_request:
+ paths:
+ - '**.h'
+ - '**.cc'
+
+permissions:
+ contents: read
+
+jobs:
+ format_code:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Install clang-format
+ run: |
+ wget https://apt.llvm.org/llvm.sh
+ sudo bash ./llvm.sh 17
+ sudo apt install clang-format-17
+
+ - name: Run clang-format
+ run: |
+ find include src -name '*.h' -o -name '*.cc' | \
+ xargs clang-format-17 -i -style=file -fallback-style=none
+ git diff --exit-code
diff --git a/thirdparty/fmt/.github/workflows/linux.yml b/thirdparty/fmt/.github/workflows/linux.yml
new file mode 100644
index 000000000..4fed9c0fc
--- /dev/null
+++ b/thirdparty/fmt/.github/workflows/linux.yml
@@ -0,0 +1,176 @@
+name: linux
+
+on: [push, pull_request]
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ runs-on: ubuntu-22.04
+ strategy:
+ matrix:
+ cxx: [g++-4.9, g++-11, clang++-3.6, clang++-11]
+ build_type: [Debug, Release]
+ std: [11]
+ shared: [""]
+ include:
+ - cxx: g++-4.9
+ - cxx: clang++-3.6
+ - cxx: g++-11
+ build_type: Debug
+ std: 14
+ install: sudo apt install g++-11
+ - cxx: g++-11
+ build_type: Debug
+ std: 17
+ - cxx: g++-11
+ build_type: Debug
+ std: 20
+ install: sudo apt install g++-11
+ - cxx: g++-13
+ build_type: Release
+ std: 23
+ install: sudo apt install g++-13
+ shared: -DBUILD_SHARED_LIBS=ON
+ - cxx: clang++-11
+ build_type: Debug
+ std: 17
+ cxxflags: -stdlib=libc++
+ install: sudo apt install clang-11 libc++-11-dev libc++abi-11-dev
+ - cxx: clang++-11
+ install: sudo apt install clang-11
+ - cxx: clang++-11
+ build_type: Debug
+ fuzz: -DFMT_FUZZ=ON -DFMT_FUZZ_LINKMAIN=ON
+ std: 17
+ install: sudo apt install clang-11
+ - cxx: clang++-14
+ build_type: Debug
+ std: 20
+ - cxx: clang++-14
+ build_type: Debug
+ std: 20
+ cxxflags: -stdlib=libc++
+ install: sudo apt install libc++-14-dev libc++abi-14-dev
+
+ steps:
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Set timezone
+ run: sudo timedatectl set-timezone 'Europe/Kyiv'
+
+ - name: Install GCC 4.9
+ run: |
+ sudo apt update
+ sudo apt install libatomic1 libc6-dev libgomp1 libitm1 libmpc3
+ # https://launchpad.net/ubuntu/xenial/amd64/g++-4.9/4.9.3-13ubuntu2
+ wget --no-verbose \
+ http://launchpadlibrarian.net/230069137/libmpfr4_3.1.3-2_amd64.deb \
+ http://launchpadlibrarian.net/253728424/libasan1_4.9.3-13ubuntu2_amd64.deb \
+ http://launchpadlibrarian.net/445346135/libubsan0_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/445346112/libcilkrts5_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/253728426/libgcc-4.9-dev_4.9.3-13ubuntu2_amd64.deb \
+ http://launchpadlibrarian.net/253728432/libstdc++-4.9-dev_4.9.3-13ubuntu2_amd64.deb \
+ http://launchpadlibrarian.net/253728314/gcc-4.9-base_4.9.3-13ubuntu2_amd64.deb \
+ http://launchpadlibrarian.net/445345919/gcc-5-base_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/253728399/cpp-4.9_4.9.3-13ubuntu2_amd64.deb \
+ http://launchpadlibrarian.net/253728404/gcc-4.9_4.9.3-13ubuntu2_amd64.deb \
+ http://launchpadlibrarian.net/253728401/g++-4.9_4.9.3-13ubuntu2_amd64.deb
+ sudo dpkg -i \
+ libmpfr4_3.1.3-2_amd64.deb \
+ libasan1_4.9.3-13ubuntu2_amd64.deb \
+ libubsan0_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ libcilkrts5_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ libgcc-4.9-dev_4.9.3-13ubuntu2_amd64.deb \
+ libstdc++-4.9-dev_4.9.3-13ubuntu2_amd64.deb \
+ gcc-4.9-base_4.9.3-13ubuntu2_amd64.deb \
+ gcc-5-base_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ cpp-4.9_4.9.3-13ubuntu2_amd64.deb \
+ gcc-4.9_4.9.3-13ubuntu2_amd64.deb \
+ g++-4.9_4.9.3-13ubuntu2_amd64.deb
+ if: ${{ matrix.cxx == 'g++-4.9' }}
+
+ - name: Install Clang 3.6
+ run: |
+ sudo apt update
+ sudo apt install libtinfo5
+ # https://code.launchpad.net/ubuntu/xenial/amd64/clang-3.6/1:3.6.2-3ubuntu2
+ wget --no-verbose \
+ http://launchpadlibrarian.net/230019046/libffi6_3.2.1-4_amd64.deb \
+ http://launchpadlibrarian.net/445346109/libasan2_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/445346135/libubsan0_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/445346112/libcilkrts5_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/445346128/libmpx0_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/445346113/libgcc-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/445346131/libstdc++-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/445346022/libobjc-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/254405108/libllvm3.6v5_3.6.2-3ubuntu2_amd64.deb \
+ http://launchpadlibrarian.net/254405097/libclang-common-3.6-dev_3.6.2-3ubuntu2_amd64.deb \
+ http://launchpadlibrarian.net/254405101/libclang1-3.6_3.6.2-3ubuntu2_amd64.deb \
+ http://launchpadlibrarian.net/445345919/gcc-5-base_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ http://launchpadlibrarian.net/254405091/clang-3.6_3.6.2-3ubuntu2_amd64.deb
+ sudo dpkg -i \
+ libffi6_3.2.1-4_amd64.deb \
+ libasan2_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ libubsan0_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ libcilkrts5_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ libmpx0_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ libgcc-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ libstdc++-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ libobjc-5-dev_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ libllvm3.6v5_3.6.2-3ubuntu2_amd64.deb \
+ libclang-common-3.6-dev_3.6.2-3ubuntu2_amd64.deb \
+ libclang1-3.6_3.6.2-3ubuntu2_amd64.deb \
+ gcc-5-base_5.4.0-6ubuntu1~16.04.12_amd64.deb \
+ clang-3.6_3.6.2-3ubuntu2_amd64.deb
+ if: ${{ matrix.cxx == 'clang++-3.6' }}
+
+ - name: Add repositories for newer GCC
+ run: |
+ sudo apt-add-repository ppa:ubuntu-toolchain-r/test
+ if: ${{ matrix.cxx == 'g++-13' }}
+
+ - name: Add Ubuntu mirrors
+ run: |
+ # GitHub Actions caching proxy is at times unreliable
+ # see https://github.com/actions/runner-images/issues/7048.
+ mirrors=/etc/apt/mirrors.txt
+ printf 'http://azure.archive.ubuntu.com/ubuntu\tpriority:1\n' | \
+ sudo tee $mirrors
+ curl http://mirrors.ubuntu.com/mirrors.txt | sudo tee --append $mirrors
+ sudo sed -i \
+ "s~http://azure.archive.ubuntu.com/ubuntu/~mirror+file:$mirrors~" \
+ /etc/apt/sources.list
+
+ - name: Create build environment
+ run: |
+ sudo apt update
+ ${{matrix.install}}
+ sudo apt install locales-all
+ cmake -E make_directory ${{runner.workspace}}/build
+
+ - name: Configure
+ working-directory: ${{runner.workspace}}/build
+ env:
+ CXX: ${{matrix.cxx}}
+ CXXFLAGS: ${{matrix.cxxflags}}
+ run: |
+ cmake -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
+ -DCMAKE_CXX_STANDARD=${{matrix.std}} \
+ -DCMAKE_CXX_VISIBILITY_PRESET=hidden \
+ -DCMAKE_VISIBILITY_INLINES_HIDDEN=ON \
+ -DFMT_DOC=OFF -DFMT_PEDANTIC=ON -DFMT_WERROR=ON \
+ ${{matrix.fuzz}} ${{matrix.shared}} $GITHUB_WORKSPACE
+
+ - name: Build
+ working-directory: ${{runner.workspace}}/build
+ run: |
+ threads=`nproc`
+ cmake --build . --config ${{matrix.build_type}} --parallel $threads
+
+ - name: Test
+ working-directory: ${{runner.workspace}}/build
+ run: ctest -C ${{matrix.build_type}}
+ env:
+ CTEST_OUTPUT_ON_FAILURE: True
diff --git a/thirdparty/fmt/.github/workflows/macos.yml b/thirdparty/fmt/.github/workflows/macos.yml
new file mode 100644
index 000000000..0ac76cec4
--- /dev/null
+++ b/thirdparty/fmt/.github/workflows/macos.yml
@@ -0,0 +1,58 @@
+name: macos
+
+on: [push, pull_request]
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ strategy:
+ matrix:
+ os: [macos-13, macos-14]
+ build_type: [Debug, Release]
+ std: [11, 17, 20]
+ shared: [""]
+ exclude:
+ - { os: macos-13, std: 11 }
+ - { os: macos-13, std: 17 }
+ include:
+ - os: macos-14
+ std: 23
+ build_type: Release
+ shared: -DBUILD_SHARED_LIBS=ON
+
+ runs-on: '${{ matrix.os }}'
+
+ steps:
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Set timezone
+ run: sudo systemsetup -settimezone 'Europe/Minsk'
+
+ - name: Select Xcode 14.3 (macOS 13)
+ run: sudo xcode-select -s "/Applications/Xcode_14.3.app"
+ if: ${{ matrix.os == 'macos-13' }}
+
+ - name: Create Build Environment
+ run: cmake -E make_directory ${{runner.workspace}}/build
+
+ - name: Configure
+ working-directory: ${{runner.workspace}}/build
+ run: |
+ cmake -DCMAKE_BUILD_TYPE=${{matrix.build_type}} ${{matrix.shared}} \
+ -DCMAKE_CXX_STANDARD=${{matrix.std}} \
+ -DCMAKE_CXX_VISIBILITY_PRESET=hidden -DCMAKE_VISIBILITY_INLINES_HIDDEN=ON \
+ -DFMT_DOC=OFF -DFMT_PEDANTIC=ON -DFMT_WERROR=ON $GITHUB_WORKSPACE
+
+ - name: Build
+ working-directory: ${{runner.workspace}}/build
+ run: |
+ threads=`sysctl -n hw.logicalcpu`
+ cmake --build . --config ${{matrix.build_type}} --parallel $threads
+
+ - name: Test
+ working-directory: ${{runner.workspace}}/build
+ run: ctest -C ${{matrix.build_type}}
+ env:
+ CTEST_OUTPUT_ON_FAILURE: True
diff --git a/thirdparty/fmt/.github/workflows/scorecard.yml b/thirdparty/fmt/.github/workflows/scorecard.yml
new file mode 100644
index 000000000..fe9a742bf
--- /dev/null
+++ b/thirdparty/fmt/.github/workflows/scorecard.yml
@@ -0,0 +1,65 @@
+# This workflow uses actions that are not certified by GitHub. They are provided
+# by a third-party and are governed by separate terms of service, privacy
+# policy, and support documentation.
+
+name: Scorecard supply-chain security
+on:
+ # For Branch-Protection check. Only the default branch is supported. See
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
+ branch_protection_rule:
+ # To guarantee Maintained check is occasionally updated. See
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
+ schedule:
+ - cron: '26 14 * * 5'
+ push:
+ branches: [ "master" ]
+
+# Declare default permissions as read only.
+permissions: read-all
+
+jobs:
+ analysis:
+ name: Scorecard analysis
+ runs-on: ubuntu-latest
+ permissions:
+ # Needed to upload the results to code-scanning dashboard.
+ security-events: write
+ # Needed to publish results and get a badge (see publish_results below).
+ id-token: write
+
+ steps:
+ - name: "Checkout code"
+ uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+ with:
+ persist-credentials: false
+
+ - name: "Run analysis"
+ uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
+ with:
+ results_file: results.sarif
+ results_format: sarif
+ # (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
+ # - you want to enable the Branch-Protection check on a *public* repository, or
+ # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
+ # repo_token: ${{ secrets.SCORECARD_TOKEN }}
+
+ # Public repositories:
+ # - Publish results to OpenSSF REST API for easy access by consumers
+ # - Allows the repository to include the Scorecard badge.
+ # - See https://github.com/ossf/scorecard-action#publishing-results.
+ publish_results: true
+
+ # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
+ # format to the repository Actions tab.
+ - name: "Upload artifact"
+ uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
+ with:
+ name: SARIF file
+ path: results.sarif
+ retention-days: 5
+
+ # Upload the results to GitHub's code scanning dashboard.
+ - name: "Upload to code-scanning"
+ uses: github/codeql-action/upload-sarif@51f77329afa6477de8c49fc9c7046c15b9a4e79d # v3.29.5
+ with:
+ sarif_file: results.sarif
diff --git a/thirdparty/fmt/.github/workflows/windows.yml b/thirdparty/fmt/.github/workflows/windows.yml
new file mode 100644
index 000000000..3fbe7fd8c
--- /dev/null
+++ b/thirdparty/fmt/.github/workflows/windows.yml
@@ -0,0 +1,91 @@
+name: windows
+
+on: [push, pull_request]
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ runs-on: ${{matrix.os}}
+ strategy:
+ matrix:
+ # windows-2022 has MSVC 2022 installed:
+ # https://github.com/actions/virtual-environments.
+ os: [windows-2022]
+ platform: [Win32, x64]
+ toolset: [v142]
+ standard: [14, 17, 20]
+ shared: ["", -DBUILD_SHARED_LIBS=ON]
+ build_type: [Debug, Release]
+ exclude:
+ - { toolset: v142, standard: 14 }
+ - { platform: Win32, standard: 14 }
+ - { platform: Win32, standard: 20 }
+ - { platform: x64, standard: 14, shared: -DBUILD_SHARED_LIBS=ON }
+ - { platform: x64, standard: 20, shared: -DBUILD_SHARED_LIBS=ON }
+ include:
+ - os: windows-2022
+ platform: x64
+ toolset: v143
+ build_type: Debug
+ standard: 20
+
+ steps:
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Set timezone
+ run: tzutil /s "FLE Standard Time"
+
+ - name: Create Build Environment
+ run: cmake -E make_directory ${{runner.workspace}}/build
+
+ - name: Configure
+ # Use a bash shell for $GITHUB_WORKSPACE.
+ shell: bash
+ working-directory: ${{runner.workspace}}/build
+ run: |
+ cmake -A ${{matrix.platform}} -T ${{matrix.toolset}} \
+ -DCMAKE_CXX_STANDARD=${{matrix.standard}} \
+ ${{matrix.shared}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
+ $GITHUB_WORKSPACE
+
+ - name: Build
+ working-directory: ${{runner.workspace}}/build
+ run: |
+ $threads = (Get-CimInstance Win32_ComputerSystem).NumberOfLogicalProcessors
+ cmake --build . --config ${{matrix.build_type}} --parallel $threads
+
+ - name: Test
+ working-directory: ${{runner.workspace}}/build
+ run: ctest -C ${{matrix.build_type}} -V
+ env:
+ CTEST_OUTPUT_ON_FAILURE: True
+
+ mingw:
+ runs-on: windows-latest
+ defaults:
+ run:
+ shell: msys2 {0}
+ strategy:
+ matrix:
+ sys: [ mingw64, ucrt64 ]
+ steps:
+ - name: Set timezone
+ run: tzutil /s "FLE Standard Time"
+ shell: cmd
+ - uses: msys2/setup-msys2@40677d36a502eb2cf0fb808cc9dec31bf6152638 # v2.28.0
+ with:
+ release: false
+ msystem: ${{matrix.sys}}
+ pacboy: cc:p cmake:p ninja:p lld:p
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+ - name: Configure
+ run: cmake -B ../build -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Debug
+ env: { LDFLAGS: -fuse-ld=lld }
+ - name: Build
+ run: cmake --build ../build
+ - name: Test
+ run: ctest -j `nproc` --test-dir ../build
+ env:
+ CTEST_OUTPUT_ON_FAILURE: True