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
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>
Autoconf Macro: check_gnu_make
</title>
<link rel="stylesheet" type="text/css" href="autoconf-archive.css">
</head>
<body>
<table summary="web navigation" style="width:100%;">
<tbody>
<tr>
<td style="width:25%;" align="center" valign="top">
<a href="http://autoconf-archive.cryp.to/check_gnu_make.m4">Download M4
Source</a>
</td>
<td style="width:25%;" align="center" valign="top">
<a href=
"http://git.cryp.to/?p=autoconf-archive;a=history;f=check_gnu_make.m4">Macro
History</a>
</td>
<td style="width:25%;" align="center" valign="top">
<a href="macros-by-category.html">Category Index</a>
</td>
<td style="width:25%;" align="center" valign="top">
<form method="get" action="http://www.google.com/search">
<div>
<input name="sitesearch" value="autoconf-archive.cryp.to" type=
"hidden"><a href="http://www.google.com/">Search</a>: <input name="q"
size="10" maxlength="255" type="text">
</div>
</form>
</td>
</tr>
</tbody>
</table>
<hr>
<h1>
check_gnu_make
</h1>
<h2>
Synopsis
</h2>
<p class="indent" style="white-space:nowrap;">
<code>CHECK_GNU_MAKE()</code>
</p>
<h2>
Description
</h2>
<div class="indent">
<p>
This macro searches for a GNU version of make. If a match is found, the
makefile variable `ifGNUmake' is set to the empty string, otherwise it is
set to "#". This is useful for including a special features in a Makefile,
which cannot be handled by other versions of make. The variable
_cv_gnu_make_command is set to the command to invoke GNU make if it exists,
the empty string otherwise.
</p>
<p>
Here is an example of its use:
</p>
<p>
Makefile.in might contain:
</p>
<pre>
# A failsafe way of putting a dependency rule into a makefile
$(DEPEND):
$(CC) -MM $(srcdir)/*.c > $(DEPEND)
@ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
@ifGNUmake@ include $(DEPEND)
@ifGNUmake@ endif
</pre>
<p>
Then configure.in would normally contain:
</p>
<pre>
CHECK_GNU_MAKE()
AC_OUTPUT(Makefile)
</pre>
<p>
Then perhaps to cause gnu make to override any other make, we could do
something like this (note that GNU make always looks for GNUmakefile
first):
</p>
<pre>
if ! test x$_cv_gnu_make_command = x ; then
mv Makefile GNUmakefile
echo .DEFAULT: > Makefile ;
echo \ $_cv_gnu_make_command \$@ >> Makefile;
fi
</pre>
<p>
Then, if any (well almost any) other make is called, and GNU make also
exists, then the other make wraps the GNU make.
</p>
</div>
<h2>
Author
</h2>
<p class="indent">
John Darrington <j.darrington@elvis.murdoch.edu.au>
</p>
<h2>
Last Modified
</h2>
<p class="indent">
2002-01-04
</p>
<h2>
M4 Source Code
</h2>
<div class="indent">
<pre class="m4source">
AC_DEFUN(
[CHECK_GNU_MAKE], [ AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
_cv_gnu_make_command='' ;
dnl Search all the common names for GNU make
for a in "$MAKE" make gmake gnumake ; do
if test -z "$a" ; then continue ; fi ;
if ( sh -c "$a --version" 2> /dev/null | grep GNU 2>&1 > /dev/null ) ; then
_cv_gnu_make_command=$a ;
break;
fi
done ;
) ;
dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' otherwise
if test "x$_cv_gnu_make_command" != "x" ; then
ifGNUmake='' ;
else
ifGNUmake='#' ;
AC_MSG_RESULT("Not found");
fi
AC_SUBST(ifGNUmake)
] )
</pre>
</div>
<h2>
License
</h2>
<div class="indent">
<span style="white-space:nowrap;">Copyright © 2002 John Darrington
<j.darrington@elvis.murdoch.edu.au></span>
<p>
Copying and distribution of this file, with or without modification, are
permitted in any medium without royalty provided the copyright notice and
this notice are preserved.
</p>
</div>
</body>
</html>
|