/usr/share/doc/make-doc/make.html/Missing.html is in make-doc 4.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file documents the GNU make utility, which determines
automatically which pieces of a large program need to be recompiled,
and issues the commands to recompile them.
This is Edition 0.73, last updated 15 January 2016,
of The GNU Make Manual, for GNU make version 4.1.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007,
2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover Texts being "A GNU Manual,"
and with the Back-Cover Texts as in (a) below. A copy of the
license is included in the section entitled "GNU Free Documentation
License."
(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
modify this GNU manual. Buying copies from the FSF supports it in
developing GNU and promoting software freedom." -->
<!-- Created by GNU Texinfo 6.0, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU make: Missing</title>
<meta name="description" content="GNU make: Missing">
<meta name="keywords" content="GNU make: Missing">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="index.html#Top" rel="up" title="Top">
<link href="Makefile-Conventions.html#Makefile-Conventions" rel="next" title="Makefile Conventions">
<link href="Features.html#Features" rel="prev" title="Features">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space: nowrap}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: serif; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<a name="Missing"></a>
<div class="header">
<p>
Next: <a href="Makefile-Conventions.html#Makefile-Conventions" accesskey="n" rel="next">Makefile Conventions</a>, Previous: <a href="Features.html#Features" accesskey="p" rel="prev">Features</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<a name="Incompatibilities-and-Missing-Features"></a>
<h2 class="chapter">14 Incompatibilities and Missing Features</h2>
<a name="index-incompatibilities"></a>
<a name="index-missing-features"></a>
<a name="index-features_002c-missing"></a>
<p>The <code>make</code> programs in various other systems support a few features
that are not implemented in GNU <code>make</code>. The POSIX.2 standard
(<cite>IEEE Standard 1003.2-1992</cite>) which specifies <code>make</code> does not
require any of these features.
</p>
<ul>
<li> A target of the form ‘<samp><var>file</var>((<var>entry</var>))</samp>’ stands for a member
of archive file <var>file</var>. The member is chosen, not by name, but by
being an object file which defines the linker symbol <var>entry</var>.
<p>This feature was not put into GNU <code>make</code> because of the
non-modularity of putting knowledge into <code>make</code> of the internal
format of archive file symbol tables.
See <a href="Archives.html#Archive-Symbols">Updating Archive Symbol Directories</a>.
</p>
</li><li> Suffixes (used in suffix rules) that end with the character ‘<samp>~</samp>’
have a special meaning to System V <code>make</code>;
they refer to the SCCS file that corresponds
to the file one would get without the ‘<samp>~</samp>’. For example, the
suffix rule ‘<samp>.c~.o</samp>’ would make the file <samp><var>n</var>.o</samp> from
the SCCS file <samp>s.<var>n</var>.c</samp>. For complete coverage, a whole
series of such suffix rules is required.
See <a href="Implicit-Rules.html#Suffix-Rules">Old-Fashioned Suffix Rules</a>.
<p>In GNU <code>make</code>, this entire series of cases is handled by two
pattern rules for extraction from SCCS, in combination with the
general feature of rule chaining.
See <a href="Implicit-Rules.html#Chained-Rules">Chains of Implicit Rules</a>.
</p>
</li><li> In System V and 4.3 BSD <code>make</code>, files found by <code>VPATH</code>
search (see <a href="Rules.html#Directory-Search">Searching Directories for
Prerequisites</a>) have their names changed inside recipes. We feel it
is much cleaner to always use automatic variables and thus make this
feature obsolete.
</li><li> In some Unix <code>make</code>s, the automatic variable <code>$*</code> appearing in
the prerequisites of a rule has the amazingly strange “feature” of
expanding to the full name of the <em>target of that rule</em>. We cannot
imagine what went on in the minds of Unix <code>make</code> developers to do
this; it is utterly inconsistent with the normal definition of <code>$*</code>.
<a name="index-_002a-_0028automatic-variable_0029_002c-unsupported-bizarre-usage"></a>
</li><li> In some Unix <code>make</code>s, implicit rule search (see <a href="Implicit-Rules.html#Implicit-Rules">Using Implicit Rules</a>) is apparently done for <em>all</em>
targets, not just those without recipes. This means you can
do:
<div class="example">
<pre class="example">foo.o:
cc -c foo.c
</pre></div>
<p>and Unix <code>make</code> will intuit that <samp>foo.o</samp> depends on
<samp>foo.c</samp>.
</p>
<p>We feel that such usage is broken. The prerequisite properties of
<code>make</code> are well-defined (for GNU <code>make</code>, at least),
and doing such a thing simply does not fit the model.
</p>
</li><li> GNU <code>make</code> does not include any built-in implicit rules for
compiling or preprocessing EFL programs. If we hear of anyone who is
using EFL, we will gladly add them.
</li><li> It appears that in SVR4 <code>make</code>, a suffix rule can be specified
with no recipe, and it is treated as if it had an empty recipe
(see <a href="Recipes.html#Empty-Recipes">Empty Recipes</a>). For example:
<div class="example">
<pre class="example">.c.a:
</pre></div>
<p>will override the built-in <samp>.c.a</samp> suffix rule.
</p>
<p>We feel that it is cleaner for a rule without a recipe to always simply
add to the prerequisite list for the target. The above example can be
easily rewritten to get the desired behavior in GNU <code>make</code>:
</p>
<div class="example">
<pre class="example">.c.a: ;
</pre></div>
</li><li> Some versions of <code>make</code> invoke the shell with the ‘<samp>-e</samp>’ flag,
except under ‘<samp>-k</samp>’ (see <a href="Running.html#Testing">Testing the Compilation of a
Program</a>). The ‘<samp>-e</samp>’ flag tells the shell to exit as soon as any
program it runs returns a nonzero status. We feel it is cleaner to
write each line of the recipe to stand on its own and not require this
special treatment.
</li></ul>
<hr>
<div class="header">
<p>
Next: <a href="Makefile-Conventions.html#Makefile-Conventions" accesskey="n" rel="next">Makefile Conventions</a>, Previous: <a href="Features.html#Features" accesskey="p" rel="prev">Features</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|