Node:Missing separator, Next:, Previous:LFN, Up:Miscellany

22.17 Make says "missing separator"

Q: When I invoke Make, it refuses to do anything and prints a cryptic message: "makefile:10: *** missing separator. Stop." Now what kind of excuse is that?

A: Unlike most other DOS Make programs which accept any whitespace character at the beginning of a command in a rule, GNU Make insists that every such line begins with a TAB. (Most other Unix Make programs also require TABs, and the Posix standard requires it as well.) Make sure that the line whose number is printed in the error message (in this case, line 10) begins with a TAB.

Beginning with version 3.78, GNU Make prints a message that hints at a possible SPACEs-vs-TAB problem, like this:

*** missing separator (did you mean TAB instead of 8 spaces?).  Stop.

If you need to repair a Makefile that uses spaces, one way of converting leading spaces into TABs is to use the unexpand program from the GNU Textutils package (v2gnu/ from the DJGPP sites). Another possibility is to open the Makefile in RHIDE and choose the Edit->Compact Text option from the menu bar.

Note that there are editors that automatically replace TABs with spaces, so even a Makefile that used to work can become unworkable if you edit them with such an editor. Don't use such editors.

Another, more rare, cause of the above error message is if you use static pattern rules (with the % character) incorrectly. Read the documentation that comes with Make carefully and try to find the error.