Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
42 changes: 42 additions & 0 deletions DEVLOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,47 @@
# Dev Log

## 2026-06-10 — S30.01 getting-started doc + integration manifest

First story of E30 (#566, frictionless integration). Docs-only, authored against
the current tree, zero build change → zero CI risk. The driving goal is the
non-CMake beta (FreeRTOS + lwIP + Mbed TLS + FatFs, IAR) being able to integrate
from docs alone.

### Decisions
- **New `docs/getting-started.md` is the integrator front door**, distinct from
`builds.md` (now explicitly the contributor/maintainer preset catalogue). The
capability matrix from #566 is reproduced trimmed to integrator-facing columns
(provider / files / upstream dep / config / pool tunable), split into
Networking / TLS+at-rest / OS+storage+SD / BYO-callback tables.
- **Two consumption paths documented.** Path A (CMake) is the placeholder
env-var/auto-detect path today, with a note that S30.02 makes it one-line via
`SolidSyslog::` umbrella targets. Path B (non-CMake) is the file/include/`-D`
manifest: everything-is-source, with the `Core/Interface` + `Core/Source` +
per-adapter `Interface`+`Source` include-path rule made explicit (adapter `.c`
files include their own `*Private.h` from `Source/`).
- **Worked beta manifest is copy-pasteable** — exact Core + lwIP (numeric, DNS
omitted so no `LWIP_DNS`) + Mbed TLS + FreeRTOS + FatFs `.c` lists, include
dirs, the single required `-D` (user tunables file), the five config headers the
integrator owns, and the BYO callbacks (Sleep/Clock/Hostname/ProcessId).
- **IWYU is advisory, not dropped.** The epic/handoff note called the IWYU
references "stale (IWYU dropped)", but `builds.md` had *zero* IWYU references and
the `analyze-iwyu*` lanes still run (advisory, S24.13). Documented `iwyu`
accurately as an advisory preset rather than claiming it was removed. Also added
the previously-missing `c99` and `freertos-cross-lwip` preset sections to
`builds.md`.
- **README cross-links getting-started** as the front door above the (reframed)
Building-and-testing pointer.

### Deferred
- Manifest generation from CMake (S30.03 #569) replaces the hand-authored lists.
- Consumer-friendly umbrella targets + dogfooded CI (S30.02 #568).
- BYO-callback provider authoring (later epic) — recorded in the matrix so it's
discoverable, not implemented.

### Open questions
- None blocking. If the team does decide to fully retire IWYU later, the `iwyu`
sections in `builds.md`/`local-checks.md`/`ci.md` come out together.

## 2026-06-09 — S12.34 drain full lwIP RX pbuf chain

`LwipRawTcpStream_DrainHeadBytes` read only the head link (`head->len`) then
Expand Down
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,19 @@ scenarios driven through QEMU's UART
- Comprehensive error guards still rolling out
([E12 #31](https://github.com/DavidCozens/solid-syslog/issues/31)).

## Getting started

New to SolidSyslog? Start at [Getting started](docs/getting-started.md) — the
integrator front door. It covers picking your stack from the capability matrix,
both consumption paths (CMake and non-CMake / IAR / Keil source integration), a
copy-pasteable manifest for an embedded stack, the tunables, and a minimal "your
first log" walkthrough.

## Building and testing

See [Building and testing](docs/builds.md).
Developing the library itself? See [Building and testing](docs/builds.md) — the
contributor/maintainer preset catalogue. (Consuming the library in your product
is the [Getting started](docs/getting-started.md) path above.)

## Architecture

Expand Down
50 changes: 50 additions & 0 deletions docs/builds.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Building and Testing

> **This is the contributor / maintainer build doc** — the CMake preset catalogue
> for developing the library and reproducing CI lanes locally. If you are
> *consuming* SolidSyslog in your own product (CMake or non-CMake), start at
> [Getting started](getting-started.md) instead.

All builds use CMake presets. Output goes to `build/<preset>/`.

## TDD loop — `debug` / `clang-debug`
Expand Down Expand Up @@ -28,6 +33,17 @@ docker compose -f .devcontainer/docker-compose.yml run --rm clang cmake --build
When using the `clang` devcontainer, Ctrl+Shift+B builds with `clang-debug` directly.
See [Container images](containers.md) for how to switch.

## C99 portability — `c99`

Compiles the library with `CMAKE_C_STANDARD=99` (and `HAVE_STDATOMIC_H=OFF`,
`BUILD_TESTING=OFF`) to enforce the C99 baseline — catches accidental use of
later-standard features in production source. Library only; tests are not built.

```bash
cmake --preset c99
cmake --build --preset c99
```

## Sanitizers — `sanitize`

Catches memory errors, use-after-free, and undefined behaviour at runtime.
Expand Down Expand Up @@ -68,6 +84,25 @@ cmake --preset cppcheck
cmake --build --preset cppcheck
```

## Include-what-you-use — `iwyu` (advisory)

Runs include-what-you-use over the source set to flag missing or unused
`#include` directives. It inherits `clang-debug`, so use the `clang` (or
`cpputest-freertos`) image — not the `gcc` image.

```bash
cmake --preset iwyu
cmake --build --preset iwyu --target iwyu
```

Note the `--target iwyu` — building the bare preset does not run the tool.

**IWYU is advisory, not a gate** (S24.13 / E24). The CI lanes (`analyze-iwyu`,
`analyze-iwyu-freertos-plustcp`, `analyze-iwyu-freertos-lwip`) run on every PR but
do not block the build; their findings land in the `iwyu-report*` artifacts. Sweep
those at release cleanup. See [local-checks.md](local-checks.md) for the FreeRTOS
variants and the full pre-PR check budget.

## Windows build — `msvc-debug`

Builds with MSVC as a portability check against GCC and Clang. Requires a Windows
Expand Down Expand Up @@ -112,6 +147,21 @@ See [`Bdd/Targets/FreeRtos/README.md`](../Bdd/Targets/FreeRtos/README.md) for ru
GDB-attach instructions and [`Bdd/README.md`](../Bdd/README.md) for driving
it under Behave + the syslog-ng oracle.

## FreeRTOS + lwIP cross — `freertos-cross-lwip`

The lwIP-networking twin of `freertos-cross`: same ARM Cortex-M3 / mps2-an385
cross-build, but with `SOLIDSYSLOG_FREERTOS_NET=LWIP` (instead of the default
FreeRTOS-Plus-TCP) and the `Bdd/Targets/FreeRtosLwip/` tunables. Drives the
`bdd-freertos-qemu-lwip` CI lane.

```bash
cmake --preset freertos-cross-lwip
cmake --build --preset freertos-cross-lwip --target SolidSyslogBddTargetLwip
```

The ELF lands at
`build/freertos-cross-lwip/Bdd/Targets/FreeRtosLwip/SolidSyslogBddTargetLwip.elf`.

## Installing the library

```bash
Expand Down
Loading
Loading