File: check_gnu_make.html

package info (click to toggle)
autoconf-archive 20070512-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 6,712 kB
  • ctags: 20
  • sloc: sh: 615; makefile: 43
file content (152 lines) | stat: -rw-r--r-- 4,435 bytes parent folder | download
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 &gt; $(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: &gt; Makefile ;
            echo \  $_cv_gnu_make_command \$@ &gt;&gt; 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 &lt;j.darrington@elvis.murdoch.edu.au&gt;
  </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&gt; /dev/null | grep GNU  2&gt;&amp;1 &gt; /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 &copy; 2002 John Darrington
   &lt;j.darrington@elvis.murdoch.edu.au&gt;</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>