Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
bc2740b
build: add cmake build system alongside autotools
fanquake Aug 28, 2024
accc1bc
build: fix CMake build failures against the Dash sources
PastaPastaPasta Jul 25, 2026
85dd6ce
build: restore Dash-specific feature detection under CMake
PastaPastaPasta Jul 25, 2026
79a06f8
build: report the git description in CMake builds
PastaPastaPasta Jul 25, 2026
e9080d8
test: fix CMake test wiring
PastaPastaPasta Jul 25, 2026
576b14c
ci: keep the Autotools invocations working while CMake is optional
PastaPastaPasta Jul 25, 2026
0dee109
doc: adapt the new MSVC build guide to Dash
PastaPastaPasta Jul 25, 2026
c4640d4
build: suppress -Wdeprecated-literal-operator under Clang WERROR builds
PastaPastaPasta Jul 25, 2026
53b82e0
build: make a WERROR CMake build possible
PastaPastaPasta Jul 25, 2026
aafe24c
ci: add a linux64_cmake job that builds the full stack with CMake
PastaPastaPasta Jul 25, 2026
a5f45c6
build: restore Dash Windows resources and installer packaging
PastaPastaPasta Jul 25, 2026
4e467ca
build: restore Dash executable names and chainstate installation
PastaPastaPasta Jul 25, 2026
ae4646a
build: keep the Qt masternode model available without a wallet
PastaPastaPasta Jul 25, 2026
d73e2ca
build: restore the public libdashconsensus CMake target
PastaPastaPasta Jul 25, 2026
c048853
build: drop the multiprocess IPC test block Dash cannot build
PastaPastaPasta Jul 25, 2026
5c87e54
doc: correct the CMake build documentation
PastaPastaPasta Jul 25, 2026
597e35b
ci: give linux64_cmake the depends artifact fallback and hardened che…
PastaPastaPasta Aug 1, 2026
8cd8b6b
build: target the same Windows API level as Autotools
PastaPastaPasta Aug 1, 2026
f0d02b6
build: define DEBUG_CORE and Boost multi_index safe mode like Autotools
PastaPastaPasta Aug 1, 2026
422bb55
build: keep the Doxyfile template usable by Autotools
PastaPastaPasta Aug 1, 2026
aba9f4d
build: drop the broken Qt plugin staging for test_dash-qt
PastaPastaPasta Aug 1, 2026
a1985af
build: adapt CMake sources to current develop
PastaPastaPasta Aug 9, 2026
52ef5b2
test: restore omitted CMake test sources
PastaPastaPasta Aug 11, 2026
826f472
build: resync CMake source lists with develop
UdjinM6 Sep 1, 2026
3575340
build: restore CMake parity with Autotools for stacktraces
UdjinM6 Sep 1, 2026
e58c249
build: pass the Dash environment names to util_test_runner
PastaPastaPasta Sep 2, 2026
24829ec
build: bump the CMake CLIENT_VERSION_BUILD to match configure.ac
PastaPastaPasta Sep 2, 2026
27e4201
doc: derive VCPKG_ROOT from the Visual Studio installation
PastaPastaPasta Sep 2, 2026
2b75d95
build: apply appended C flags before creating source targets
PastaPastaPasta Sep 8, 2026
65d2c98
build: omit the URL helper from libevent-free utility builds
PastaPastaPasta Sep 8, 2026
f748c3d
build: preserve the installed macOS consensus library identity
PastaPastaPasta Sep 8, 2026
9f53775
build: derive consensus availability after fuzz target overrides
PastaPastaPasta Sep 8, 2026
6a5e95b
docs: disable the GUI in the headless MSVC build recipe
PastaPastaPasta Sep 8, 2026
ea9120c
docs: name the Qt platform used by CMake CI tests
PastaPastaPasta Sep 8, 2026
c99c99b
build: scope CMake crash-hook wrapping to its implementation
PastaPastaPasta Sep 16, 2026
fe5f194
build: restore Dash kernel linkage for CMake chainstate
PastaPastaPasta Sep 16, 2026
cb38755
ci: cover CMake chainstate and crash-hook builds
PastaPastaPasta Sep 16, 2026
43d2122
build: propagate USDT headers to the CMake kernel
PastaPastaPasta Sep 16, 2026
a597ea6
build: preserve consensus-only dependencies and MinGW ABI
PastaPastaPasta Sep 16, 2026
8001c98
build: fix CMake maintenance checks
PastaPastaPasta Sep 16, 2026
7732e7f
build: resync CMake source lists with develop again
PastaPastaPasta Oct 5, 2026
1c88a3a
build: follow develop's build configuration in CMake
PastaPastaPasta Oct 5, 2026
99f5d61
build: resync CMake source lists with develop 23479b95d7
PastaPastaPasta Oct 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 141 additions & 0 deletions .github/workflows/build-src-cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
name: Build source (CMake)

on:
workflow_call:
inputs:
build-target:
description: "Target name as defined by inputs.sh"
required: true
type: string
container-path:
description: "Path to built container at registry"
required: true
type: string
depends-key:
description: "Key needed to access cached depends"
required: true
type: string
depends-host:
description: "Host triplet from depends build"
required: true
type: string
depends-dep-opts:
description: "DEP_OPTS used to build depends"
required: false
type: string
default: ""
depends-artifact:
description: "Artifact holding freshly built depends, used if the cache restore misses"
required: false
type: string
default: ""
runs-on:
description: "Runner label to use (e.g., ubuntu-24.04 or ubuntu-24.04-arm)"
required: true
type: string

# Builds the tree with CMake on top of the depends prefix produced for the
# Autotools jobs, which is what makes this a full-stack check: depends emits
# toolchain.cmake, CMake consumes it, and the unit tests run against the
# result, followed by a short functional smoke list. The full functional suite
# stays with the Autotools jobs, so this job does not bundle artifacts.
jobs:
build-src-cmake:
name: Build source (CMake)
runs-on: ${{ inputs.runs-on }}
container:
image: ${{ inputs.container-path }}
options: --user root
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
allow-unsafe-pr-checkout: true
persist-credentials: false
fetch-depth: 50

- name: Initial setup
run: |
git config --global --add safe.directory "$PWD"
shell: bash

- name: Restore depends cache
id: depends-cache
uses: actions/cache/restore@v5
with:
path: depends/built/${{ inputs.depends-host }}
key: ${{ inputs.depends-key }}

- name: Download built depends
# Same-run handoff from build-depends.yml: pull_request_target runs
# have read-only cache tokens (GitHub change, June 2026), so freshly
# built depends arrive as an artifact instead of a cache entry. Also
# covers trusted runs whose cache save was denied (save only warns).
if: steps.depends-cache.outputs.cache-hit != 'true' && inputs.depends-artifact != ''
uses: actions/download-artifact@v8
with:
name: ${{ inputs.depends-artifact }}
path: depends/built/${{ inputs.depends-host }}

- name: Check built depends are present
if: steps.depends-cache.outputs.cache-hit != 'true' && inputs.depends-artifact == ''
run: |
echo "::error::Depends cache restore missed and no built depends artifact was provided"
exit 1
shell: bash

- name: Rebuild depends prefix
run: |
# Use the HOST and DEP_OPTS from the depends build, not this build-target
# This ensures the build_id matches the cached packages, and it is what
# writes depends/${HOST}/toolchain.cmake.
make -j$(nproc) -C depends HOST="${{ inputs.depends-host }}" ${{ inputs.depends-dep-opts }}
shell: bash

- name: Restore ccache cache
uses: actions/cache/restore@v5
with:
path: |
/cache/ccache
key: ccache-${{ hashFiles('contrib/containers/ci/ci.Dockerfile', 'depends/packages/*') }}-${{ inputs.build-target }}-${{ github.sha }}
restore-keys: |
ccache-${{ hashFiles('contrib/containers/ci/ci.Dockerfile', 'depends/packages/*') }}-${{ inputs.build-target }}-

- name: Build source
run: |
CCACHE_MAXSIZE="600M"
CACHE_DIR="/cache"
mkdir /output
BASE_OUTDIR="/output"
BUILD_TARGET="${{ inputs.build-target }}"
source ./ci/dash/matrix.sh
./ci/dash/build_src_cmake.sh
ccache -X 9
ccache -c
du -hd0 "${BASE_OUTDIR}"
shell: bash

- name: Save ccache cache
if: |
github.event_name == 'push' &&
github.ref_name == github.event.repository.default_branch
uses: actions/cache/save@v5
with:
path: |
/cache/ccache
key: ccache-${{ hashFiles('contrib/containers/ci/ci.Dockerfile', 'depends/packages/*') }}-${{ inputs.build-target }}-${{ github.sha }}

- name: Run unit tests
run: |
BUILD_TARGET="${{ inputs.build-target }}"
source ./ci/dash/matrix.sh
./ci/dash/test_unittests_cmake.sh
shell: bash

- name: Run functional smoke tests
run: |
BUILD_TARGET="${{ inputs.build-target }}"
source ./ci/dash/matrix.sh
./ci/dash/test_integrationtests_cmake.sh
shell: bash
17 changes: 16 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ jobs:
if: |
vars.SKIP_LINUX64 == '' ||
vars.SKIP_LINUX64_ASAN == '' ||
vars.SKIP_LINUX64_CMAKE == '' ||
vars.SKIP_LINUX64_FUZZ == '' ||
vars.SKIP_LINUX64_SQLITE == ''
with:
Expand Down Expand Up @@ -298,6 +299,20 @@ jobs:
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}
secrets: *remote-ccache-auth

src-linux64_cmake:
name: linux64_cmake-build
uses: ./.github/workflows/build-src-cmake.yml
needs: [check-skip, container, depends-linux64]
if: ${{ vars.SKIP_LINUX64_CMAKE == '' }}
with:
build-target: linux64_cmake
container-path: ${{ needs.container.outputs.path }}
depends-key: ${{ needs.depends-linux64.outputs.key }}
depends-host: ${{ needs.depends-linux64.outputs.host }}
depends-dep-opts: ${{ needs.depends-linux64.outputs.dep-opts }}
depends-artifact: ${{ needs.depends-linux64.outputs.built-artifact }}
runs-on: ${{ needs.check-skip.outputs['runner-amd64'] }}

src-linux64_fuzz:
name: linux64_fuzz-build
uses: ./.github/workflows/build-src.yml
Expand Down Expand Up @@ -477,7 +492,7 @@ jobs:
name: Prune old ccache generations
# Each develop push saves a new ccache/ctcache entry per target; keep only
# the newest so the 10 GB repository cache stops evicting fresh ones.
needs: [src-aarch64-linux, src-linux64, src-linux64_asan, src-linux64_fuzz, src-linux64_multiprocess, src-linux64_nowallet, src-linux64_sqlite, src-linux64_tsan, src-mac, src-win64]
needs: [src-aarch64-linux, src-linux64, src-linux64_asan, src-linux64_cmake, src-linux64_fuzz, src-linux64_multiprocess, src-linux64_nowallet, src-linux64_sqlite, src-linux64_tsan, src-mac, src-win64]
if: |
!cancelled() &&
github.event_name == 'push' &&
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
todo.txt
reset-files.bash

# Build subdirectories.
/*build*
!/build-aux
!/build_msvc

*.tar.gz

*.exe
Expand Down
Loading
Loading