make: Error Messages

1 
1 Appendix B Errors Generated by Make
1 ***********************************
1 
1 Here is a list of the more common errors you might see generated by
1 'make', and some information about what they mean and how to fix them.
1 
1    Sometimes 'make' errors are not fatal, especially in the presence of
1 a '-' prefix on a recipe line, or the '-k' command line option.  Errors
1 that are fatal are prefixed with the string '***'.
1 
1    Error messages are all either prefixed with the name of the program
1 (usually 'make'), or, if the error is found in a makefile, the name of
1 the file and line number containing the problem.
1 
1    In the table below, these common prefixes are left off.
1 
1 '[FOO] Error NN'
1 '[FOO] SIGNAL DESCRIPTION'
1      These errors are not really 'make' errors at all.  They mean that a
1      program that 'make' invoked as part of a recipe returned a non-0
1      error code ('Error NN'), which 'make' interprets as failure, or it
1      exited in some other abnormal fashion (with a signal of some type).
1      ⇒Errors in Recipes Errors.
1 
1      If no '***' is attached to the message, then the sub-process failed
1      but the rule in the makefile was prefixed with the '-' special
1      character, so 'make' ignored the error.
1 
1 'missing separator. Stop.'
1 'missing separator (did you mean TAB instead of 8 spaces?). Stop.'
1      This means that 'make' could not understand much of anything about
1      the makefile line it just read.  GNU 'make' looks for various
1      separators (':', '=', recipe prefix characters, etc.)  to indicate
1      what kind of line it's parsing.  This message means it couldn't
1      find a valid one.
1 
1      One of the most common reasons for this message is that you (or
1      perhaps your oh-so-helpful editor, as is the case with many
1      MS-Windows editors) have attempted to indent your recipe lines with
1      spaces instead of a tab character.  In this case, 'make' will use
1      the second form of the error above.  Remember that every line in
1      the recipe must begin with a tab character (unless you set
1      '.RECIPEPREFIX'; ⇒Special Variables).  Eight spaces do not
1      count.  ⇒Rule Syntax.
1 
1 'recipe commences before first target. Stop.'
1 'missing rule before recipe. Stop.'
1      This means the first thing in the makefile seems to be part of a
1      recipe: it begins with a recipe prefix character and doesn't appear
1      to be a legal 'make' directive (such as a variable assignment).
1      Recipes must always be associated with a target.
1 
1      The second form is generated if the line has a semicolon as the
1      first non-whitespace character; 'make' interprets this to mean you
11      left out the "target: prerequisite" section of a rule.  ⇒Rule
      Syntax.
1 
1 'No rule to make target `XXX'.'
1 'No rule to make target `XXX', needed by `YYY'.'
1      This means that 'make' decided it needed to build a target, but
1      then couldn't find any instructions in the makefile on how to do
1      that, either explicit or implicit (including in the default rules
1      database).
1 
1      If you want that file to be built, you will need to add a rule to
1      your makefile describing how that target can be built.  Other
1      possible sources of this problem are typos in the makefile (if that
1      file name is wrong) or a corrupted source tree (if that file is not
1      supposed to be built, but rather only a prerequisite).
1 
1 'No targets specified and no makefile found. Stop.'
1 'No targets. Stop.'
1      The former means that you didn't provide any targets to be built on
1      the command line, and 'make' couldn't find any makefiles to read
1      in.  The latter means that some makefile was found, but it didn't
1      contain any default goal and none was given on the command line.
11      GNU 'make' has nothing to do in these situations.  ⇒Arguments
      to Specify the Makefile Makefile Arguments.
1 
1 'Makefile `XXX' was not found.'
1 'Included makefile `XXX' was not found.'
1      A makefile specified on the command line (first form) or included
1      (second form) was not found.
1 
1 'warning: overriding recipe for target `XXX''
1 'warning: ignoring old recipe for target `XXX''
1      GNU 'make' allows only one recipe to be specified per target
1      (except for double-colon rules).  If you give a recipe for a target
1      which already has been defined to have one, this warning is issued
11      and the second recipe will overwrite the first.  ⇒Multiple
      Rules for One Target Multiple Rules.
1 
1 'Circular XXX <- YYY dependency dropped.'
1      This means that 'make' detected a loop in the dependency graph:
1      after tracing the prerequisite YYY of target XXX, and its
1      prerequisites, etc., one of them depended on XXX again.
1 
1 'Recursive variable `XXX' references itself (eventually). Stop.'
1      This means you've defined a normal (recursive) 'make' variable XXX
1      that, when it's expanded, will refer to itself (XXX).  This is not
1      allowed; either use simply-expanded variables (':=' or '::=') or
11      use the append operator ('+=').  ⇒How to Use Variables Using
      Variables.
1 
1 'Unterminated variable reference. Stop.'
1      This means you forgot to provide the proper closing parenthesis or
1      brace in your variable or function reference.
1 
1 'insufficient arguments to function `XXX'. Stop.'
1      This means you haven't provided the requisite number of arguments
1      for this function.  See the documentation of the function for a
11      description of its arguments.  ⇒Functions for Transforming
      Text Functions.
1 
1 'missing target pattern. Stop.'
1 'multiple target patterns. Stop.'
1 'target pattern contains no `%'. Stop.'
1 'mixed implicit and static pattern rules. Stop.'
1      These are generated for malformed static pattern rules.  The first
1      means there's no pattern in the target section of the rule; the
1      second means there are multiple patterns in the target section; the
1      third means the target doesn't contain a pattern character ('%');
1      and the fourth means that all three parts of the static pattern
1      rule contain pattern characters ('%')-only the first two parts
1      should.  If you see these errors and you aren't trying to create a
1      static pattern rule, check the value of any variables in your
1      target and prerequisite lists to be sure they do not contain
1      colons.  ⇒Syntax of Static Pattern Rules Static Usage.
1 
1 'warning: -jN forced in submake: disabling jobserver mode.'
1      This warning and the next are generated if 'make' detects error
1      conditions related to parallel processing on systems where
11      sub-'make's can communicate (⇒Communicating Options to a
      Sub-'make' Options/Recursion.).  This warning is generated if a
1      recursive invocation of a 'make' process is forced to have '-jN' in
1      its argument list (where N is greater than one).  This could
1      happen, for example, if you set the 'MAKE' environment variable to
1      'make -j2'.  In this case, the sub-'make' doesn't communicate with
1      other 'make' processes and will simply pretend it has two jobs of
1      its own.
1 
1 'warning: jobserver unavailable: using -j1. Add `+' to parent make rule.'
1      In order for 'make' processes to communicate, the parent will pass
1      information to the child.  Since this could result in problems if
1      the child process isn't actually a 'make', the parent will only do
1      this if it thinks the child is a 'make'.  The parent uses the
11      normal algorithms to determine this (⇒How the 'MAKE' Variable
      Works MAKE Variable.).  If the makefile is constructed such that
1      the parent doesn't know the child is a 'make' process, then the
1      child will receive only part of the information necessary.  In this
1      case, the child will generate this warning message and proceed with
1      its build in a sequential manner.
1