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 (
the DJGPP sites). Another possibility is to open the Makefile in
RHIDE and choose the
Edit->Compact Text option from the menu
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.