make: Missing

1 
1 15 Incompatibilities and Missing Features
1 *****************************************
1 
1 The 'make' programs in various other systems support a few features that
1 are not implemented in GNU 'make'.  The POSIX.2 standard ('IEEE Standard
1 1003.2-1992') which specifies 'make' does not require any of these
1 features.
1 
1    * A target of the form 'FILE((ENTRY))' stands for a member of archive
1      file FILE.  The member is chosen, not by name, but by being an
1      object file which defines the linker symbol ENTRY.
1 
1      This feature was not put into GNU 'make' because of the
1      non-modularity of putting knowledge into 'make' of the internal
11      format of archive file symbol tables.  ⇒Updating Archive
      Symbol Directories Archive Symbols.
1 
1    * Suffixes (used in suffix rules) that end with the character '~'
1      have a special meaning to System V 'make'; they refer to the SCCS
1      file that corresponds to the file one would get without the '~'.
1      For example, the suffix rule '.c~.o' would make the file 'N.o' from
1      the SCCS file 's.N.c'.  For complete coverage, a whole series of
11      such suffix rules is required.  ⇒Old-Fashioned Suffix Rules
      Suffix Rules.
1 
1      In GNU 'make', this entire series of cases is handled by two
1      pattern rules for extraction from SCCS, in combination with the
11      general feature of rule chaining.  ⇒Chains of Implicit Rules
      Chained Rules.
1 
1    * In System V and 4.3 BSD 'make', files found by 'VPATH' search
1      (⇒Searching Directories for Prerequisites Directory Search.)
1      have their names changed inside recipes.  We feel it is much
1      cleaner to always use automatic variables and thus make this
1      feature obsolete.
1 
1    * In some Unix 'make's, the automatic variable '$*' appearing in the
1      prerequisites of a rule has the amazingly strange "feature" of
1      expanding to the full name of the _target of that rule_.  We cannot
1      imagine what went on in the minds of Unix 'make' developers to do
1      this; it is utterly inconsistent with the normal definition of
1      '$*'.
1 
11    * In some Unix 'make's, implicit rule search (⇒Using Implicit
      Rules Implicit Rules.) is apparently done for _all_ targets, not
1      just those without recipes.  This means you can do:
1 
1           foo.o:
1                   cc -c foo.c
1 
1      and Unix 'make' will intuit that 'foo.o' depends on 'foo.c'.
1 
1      We feel that such usage is broken.  The prerequisite properties of
1      'make' are well-defined (for GNU 'make', at least), and doing such
1      a thing simply does not fit the model.
1 
1    * GNU 'make' does not include any built-in implicit rules for
1      compiling or preprocessing EFL programs.  If we hear of anyone who
1      is using EFL, we will gladly add them.
1 
1    * It appears that in SVR4 'make', a suffix rule can be specified with
11      no recipe, and it is treated as if it had an empty recipe (⇒
      Empty Recipes).  For example:
1 
1           .c.a:
1 
1      will override the built-in '.c.a' suffix rule.
1 
1      We feel that it is cleaner for a rule without a recipe to always
1      simply add to the prerequisite list for the target.  The above
1      example can be easily rewritten to get the desired behavior in GNU
1      'make':
1 
1           .c.a: ;
1 
1    * Some versions of 'make' invoke the shell with the '-e' flag, except
1      under '-k' (⇒Testing the Compilation of a Program Testing.).
1      The '-e' flag tells the shell to exit as soon as any program it
1      runs returns a nonzero status.  We feel it is cleaner to write each
1      line of the recipe to stand on its own and not require this special
1      treatment.
1