Advent of Code 2025, done in C++
1set shell := ["bash", "-eu", "-o", "pipefail", "-c"]
2
3default_day := `date +'%d'`
4
5default: sync build
6
7# Run this whenever you change build files. This generates the latest build config (debug).
8sync:
9 meson setup --reconfigure build/
10
11# Release config for running real inputs.
12sync-release:
13 meson setup --reconfigure build-release/ --buildtype=release
14
15# Build everything Meson knows about.
16build:
17 meson compile -C build/
18
19# Build release artifacts.
20build-release: sync-release
21 meson compile -C build-release/
22
23# Run tests for a specific day. Defaults to today's day-of-month.
24test day=default_day: sync
25 day_raw="{{day}}"; day=$(printf '%02d' "$((10#$day_raw))"); meson test -C build "day${day}"
26
27# Run a day's solution on the "real" data set.
28run day=default_day: sync-release
29 day_raw="{{day}}"; day=$(printf '%02d' "$((10#$day_raw))"); meson compile -C build-release "run-day${day}"
30
31# Clean the build folder. Useful... sometimes.
32clean:
33 if [ -d build ]; then meson setup --wipe build/; fi
34 if [ -d build-release ]; then meson setup --wipe build-release/; fi