- Replace ARM tarball download with gcc-arm-none-eabi from apt - Drop TARGETARCH/GCC_VERSION build args — no longer needed - Pin nrfx submodule to v2.9.0 which still bundles mdk/ headers - nrfx 3+ dropped mdk/ from the repo
47 lines
1.7 KiB
Makefile
47 lines
1.7 KiB
Makefile
# ── variables ──────────────────────────────────────────────────────────────
|
|
|
|
image := "ptt-builder"
|
|
build_dir := "build"
|
|
|
|
# podman takes priority over docker
|
|
engine := `command -v podman 2>/dev/null \
|
|
|| command -v docker 2>/dev/null \
|
|
|| { echo "error: podman or docker required" >&2; exit 1; }`
|
|
|
|
# user-namespace mapping: podman rootless vs docker
|
|
user_ns := `command -v podman >/dev/null 2>&1 \
|
|
&& echo "--userns=keep-id" \
|
|
|| echo "--user $(id -u):$(id -g)"`
|
|
|
|
# ── recipes ────────────────────────────────────────────────────────────────
|
|
|
|
# build container image (only rebuilt when Dockerfile changes)
|
|
image-build:
|
|
{{engine}} build -t {{image}} .
|
|
|
|
# compile firmware inside the container
|
|
build: image-build
|
|
{{engine}} run --rm \
|
|
{{user_ns}} \
|
|
-v "{{justfile_directory()}}:/src:z" \
|
|
{{image}} \
|
|
sh -c "cmake -B /src/{{build_dir}} -G Ninja \
|
|
-DCMAKE_BUILD_TYPE=MinSizeRel /src \
|
|
&& ninja -C /src/{{build_dir}}"
|
|
|
|
# flash firmware via pyocd on the host (requires USB / DAPLink)
|
|
flash: build
|
|
pyocd flash --target nrf52840 {{build_dir}}/firmware.hex
|
|
|
|
# start GDB server for debugging
|
|
gdbserver:
|
|
pyocd gdbserver --target nrf52840 --port 3333
|
|
|
|
# remove build artifacts
|
|
clean:
|
|
rm -rf {{build_dir}}
|
|
|
|
# remove build artifacts AND the container image
|
|
clean-all: clean
|
|
{{engine}} rmi {{image}} 2>/dev/null || true
|