Backdate the .xbkp file on clean exist (#6955) (#6960) #1410
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Windows CMake CI | |
| # Builds xLights with CMake + Ninja using the vendored libs (no vcpkg). | |
| # Ninja advantages over the VS generator: | |
| # - CMAKE_CXX_COMPILER_LAUNCHER=sccache works natively (no cl.bat shim). | |
| # - Faster configure and incremental builds. | |
| # - Single-config — no /p:Configuration= indirection through MSBuild. | |
| # | |
| # curl: linked directly from the vendored lib\windows64\libcurl.dll.a | |
| # (CMakeLists.txt falls back to it when no .lib is present). | |
| on: | |
| push: | |
| branches: [ master ] | |
| paths-ignore: | |
| - '.github/workflows/*.yml' | |
| - '.github/ISSUE_TEMPLATE/*.md' | |
| - 'build_scripts/**' | |
| - 'ci_scripts/**' | |
| - 'cmudict/**' | |
| - 'documentation/**' | |
| - 'download/**' | |
| - 'resources/**' | |
| - 'lib/windows/**' | |
| - 'lib/windows64/**' | |
| - 'songs/**' | |
| - 'TipOfDay/**' | |
| - 'xlDo/**' | |
| - '*.md' | |
| - '*.yml' | |
| - '*.txt' | |
| - '*.docx' | |
| - 'README.*' | |
| pull_request: | |
| branches: [ master ] | |
| paths-ignore: | |
| - '.github/workflows/*.yml' | |
| - '.github/ISSUE_TEMPLATE/*.md' | |
| - 'build_scripts/**' | |
| - 'ci_scripts/**' | |
| - 'cmudict/**' | |
| - 'documentation/**' | |
| - 'download/**' | |
| - 'resources/**' | |
| - 'songs/**' | |
| - 'TipOfDay/**' | |
| - 'xlDo/**' | |
| - '*.md' | |
| - '*.yml' | |
| - '*.txt' | |
| - '*.docx' | |
| - 'README.*' | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| cmake-windows: | |
| name: CMake / Ninja / Windows x64 | |
| runs-on: windows-latest | |
| env: | |
| SCCACHE_GHA_ENABLED: "true" | |
| BUILD_DIR: cmake_ninja | |
| steps: | |
| # ── Checkout ────────────────────────────────────────────────────────── | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| # ── MSVC environment ────────────────────────────────────────────────── | |
| # Ninja drives cl.exe directly — the MSVC dev environment must be active. | |
| - name: Setup MSVC (x64) | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: x64 | |
| # ── ISPC ────────────────────────────────────────────────────────────── | |
| - name: Install ISPC | |
| uses: ispc/install-ispc-action@main | |
| with: | |
| version: 1.31.0 | |
| # glslc (ships in the Vulkan SDK's Bin) compiles the .comp compute kernels | |
| # to SPIR-V headers. The CMake Vulkan block is mandatory on Windows and | |
| # aborts with FATAL_ERROR if glslc is missing, so the SDK must be present | |
| # before Configure. The action exports VULKAN_SDK and adds Bin to PATH, so | |
| # the CMakeLists find_program(glslc) HINT resolves. | |
| - name: Install Vulkan SDK | |
| uses: jakoch/install-vulkan-sdk-action@v1 | |
| with: | |
| install_runtime: false | |
| cache: true | |
| # ── sccache ─────────────────────────────────────────────────────────── | |
| # Ninja supports CMAKE_CXX_COMPILER_LAUNCHER natively — no cl.bat shim. | |
| - name: Setup sccache | |
| uses: mozilla-actions/sccache-action@v0.0.10 | |
| - name: Configure sccache | |
| shell: bash | |
| run: | | |
| if ! sccache --zero-stats; then | |
| echo "::warning::sccache GHA backend unavailable; falling back to local disk" | |
| echo "SCCACHE_GHA_ENABLED=" >> "$GITHUB_ENV" | |
| sccache --stop-server 2>/dev/null || true | |
| fi | |
| # ── wxWidgets ───────────────────────────────────────────────────────── | |
| - name: Get wxWidgets HEAD SHA | |
| id: wx-sha | |
| shell: bash | |
| run: | | |
| sha=$(git ls-remote https://github.com/xLightsSequencer/wxWidgets.git HEAD \ | |
| | cut -f1 | head -c 12) | |
| echo "sha=$sha" >> "$GITHUB_OUTPUT" | |
| - name: Cache wxWidgets | |
| id: cache-wx | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ github.workspace }}\wxWidgets | |
| key: wxwidgets-msvc2022-x64-ninja-${{ steps.wx-sha.outputs.sha }} | |
| - name: Checkout wxWidgets | |
| if: steps.cache-wx.outputs.cache-hit != 'true' | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: xLightsSequencer/wxWidgets | |
| path: wxWidgets | |
| submodules: recursive | |
| - name: Build wxWidgets (Release) | |
| if: steps.cache-wx.outputs.cache-hit != 'true' | |
| working-directory: ${{ github.workspace }}\wxWidgets | |
| run: msbuild /m .\build\msw\wx_vc17.sln /p:Configuration="Release" /p:Platform="x64" | |
| # ── Configure ───────────────────────────────────────────────────────── | |
| - name: Configure CMake | |
| shell: cmd | |
| run: | | |
| cmake -S . -B %BUILD_DIR% ^ | |
| -G Ninja ^ | |
| -DCMAKE_BUILD_TYPE=Release ^ | |
| -DCMAKE_C_COMPILER=cl ^ | |
| -DCMAKE_CXX_COMPILER=cl ^ | |
| -DCMAKE_C_COMPILER_LAUNCHER=sccache ^ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=sccache ^ | |
| -DwxWidgets_ROOT_DIR=${{ github.workspace }}\wxWidgets | |
| # ── Build ───────────────────────────────────────────────────────────── | |
| - name: Build | |
| shell: cmd | |
| run: cmake --build %BUILD_DIR% --parallel 8 | |
| - name: sccache stats | |
| run: sccache --show-stats | |
| # ── Upload artifact ─────────────────────────────────────────────────── | |
| - name: Upload xLights exe | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: xLights_Exe | |
| path: bin\** | |
| retention-days: 7 |