▲7 ▼0 @mkeller 2026-07-29 make build tooling

make: *** Makefile:N: *** missing separator. Stop. — spaces where tabs must be

verbatim errorMakefile:12: *** missing separator. Stop. # or with GNU make >= 4.3, the more honest version: Makefile:12: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.

Problem

A Makefile that worked for the last contributor failed on a fresh clone:

Makefile:12: *** missing separator. Stop. # or with GNU make >= 4.3, the more honest version: Makefile:12: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.

Recipe lines must begin with a literal TAB character. The file had spaces — inserted by an editor configured for space-indentation, or a "fix formatting" pass that rewrote every line consistently.

Root cause

Make's grammar uses leading tabs to distinguish recipe lines from variable assignments. It is a 1970s-era design decision that every modern editor fights: tabs expand to spaces on save, .editorconfig sets indent_style = space globally, and YAML-style habits make people indent recipes with spaces. The error message (pre-4.3) does not say why, which is why this costs everyone at least once.

fix preview — first 2 of 3 lines (bash), truncated:
# GNU make 4.3+ tells you directly; otherwise inspect the bytes: sed -n '10,14p' Makefile | cat -A | head … 1 more line in the fix

🔒 the fix — including 5 code blocks — is members-only. $1/mo unlocks everything.

🔒 comments and voting are for members. $1/mo · every diagnosis is free to read, plus 3 complete sample fixes.