RetroShare/.github/workflows/windows-cmake.yml
jolavillette f3e5f8541d refactor(cmake): rename "monorepo" -> super-project terminology
The root build is a modular super-project: libretroshare, retroshare-gui,
retroshare-service, retroshare-friendserver and plugins are each a standalone
CMake project that the top-level CMakeLists.txt only aggregates (and they live
in separate git repos pulled as submodules). Rename project(retroshare-monorepo)
-> project(retroshare-superproject) and reword the CI header comments. Purely
cosmetic: the old name was referenced nowhere.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 19:41:45 +02:00

109 lines
3.8 KiB
YAML

# Windows (MSYS2 / UCRT64) CMake CI for the RetroShare super-project.
#
# CMake counterpart of the legacy qmake ci-ucrt64.yml. Unlike that one (GUI-only,
# sam3 disabled, mingw32-make), this builds the WHOLE tree with the same feature
# set as the Linux/macOS CMake CIs, using Ninja and the user's validated local
# Windows command (shared libretroshare).
#
# Submodules are initialised WITHOUT --remote (identical to ubuntu-cmake.yml) so
# libretroshare stays on its pinned, CMake-enabled commit. On WIN32 libretroshare
# pulls restbed via FetchContent, so the restbed submodule is unused there.
#
# SPDX-License-Identifier: AGPL-3.0-or-later
name: Windows UCRT64 CMake C/C++ CI
on:
push:
paths-ignore:
- '**/*.md'
pull_request:
paths-ignore:
- '**/*.md'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
build:
name: Windows UCRT64 / Qt5 / CMake
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
persist-credentials: false
- name: Setup MSYS2 (UCRT64)
uses: msys2/setup-msys2@40677d36a502eb2cf0fb808cc9dec31bf6152638 # v2.28.0
with:
msystem: UCRT64
update: true
install: >-
base-devel
git
perl
ruby
mingw-w64-ucrt-x86_64-toolchain
mingw-w64-ucrt-x86_64-doxygen
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-ninja
mingw-w64-ucrt-x86_64-python
mingw-w64-ucrt-x86_64-qt5-base
mingw-w64-ucrt-x86_64-qt5-multimedia
mingw-w64-ucrt-x86_64-qt5-svg
mingw-w64-ucrt-x86_64-qt5-tools
mingw-w64-ucrt-x86_64-openssl
mingw-w64-ucrt-x86_64-libbotan
mingw-w64-ucrt-x86_64-sqlcipher
mingw-w64-ucrt-x86_64-miniupnpc
mingw-w64-ucrt-x86_64-json-c
mingw-w64-ucrt-x86_64-rapidjson
mingw-w64-ucrt-x86_64-asio
mingw-w64-ucrt-x86_64-libxml2
mingw-w64-ucrt-x86_64-libxslt
mingw-w64-ucrt-x86_64-speex
mingw-w64-ucrt-x86_64-speexdsp
mingw-w64-ucrt-x86_64-ffmpeg
mingw-w64-ucrt-x86_64-bzip2
mingw-w64-ucrt-x86_64-zlib
# Same pinned-commit init as the Ubuntu/macOS CMake CI (no --remote); librnp
# needs --recursive for its nested src/libsexpp.
- name: Init submodules (pinned commits)
run: |
git submodule update --init \
libbitdht/ libretroshare/ openpgpsdk/ retroshare-webui/
git submodule update --init --recursive \
supportlibs/librnp
git submodule update --init \
supportlibs/restbed supportlibs/libsam3 \
supportlibs/udp-discovery-cpp supportlibs/rapidjson
git --no-pager -C libretroshare log --max-count 1 --oneline
# Mirrors the validated local Windows command (Ninja, shared libretroshare).
- name: CMake configure
run: >
cmake -G Ninja -B Build-cmake -S .
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
-DCMAKE_BUILD_TYPE=Release
-DRS_LIBRETROSHARE_STATIC=OFF -DRS_LIBRETROSHARE_SHARED=ON
-DRS_RNPLIB=ON -DRS_JSON_API=ON -DRS_WEBUI=ON
-DRS_GUI=ON -DRS_SERVICE=ON -DRS_FRIENDSERVER=ON
-DRS_PLUGINS=ON -DRS_FORUM_DEEP_INDEX=OFF
-DRS_USE_I2P_SAM3=ON -DRS_BITDHT=ON -DRS_MINIUPNPC=ON
-DRS_BRODCAST_DISCOVERY=ON -DRS_SQLCIPHER=ON
-DCMAKE_C_FLAGS="-include string.h -include stdint.h"
-DCMAKE_CXX_FLAGS="-include cstring -include cstdint -Wno-template-body"
- name: CMake build
run: cmake --build Build-cmake -j3