Imported Upstream version 4.4
[platform/upstream/make.git] / README
1 This directory contains the 4.4 release of GNU Make.
2
3 See the file NEWS for the user-visible changes from previous releases.
4 In addition, there have been bugs fixed.
5
6 Please check the system-specific notes below for any caveats related to your
7 operating system.
8
9 If you are trying to build GNU Make from a Git clone rather than a downloaded
10 source distribution, see the README.git file for instructions.
11
12 For source distribution building and installation instructions, see the file
13 INSTALL.
14
15 If you need to build GNU Make and have no other 'make' program to use, you can
16 use the shell script 'build.sh' instead.  To do this, first run 'configure' as
17 described in INSTALL.  Then, instead of typing 'make' to build the program,
18 type 'sh build.sh'.  This will compile the program in the current directory.
19 Then you will have a 'make' program that you can use for './make install', or
20 whatever else.
21
22 Some systems' 'make' programs cannot process the Makefile for GNU Make.
23 If you get errors from your system's 'make' when building GNU Make, try using
24 'build.sh' instead.
25
26
27 GNU Make is free software.  See the file COPYING for copying conditions.
28 GNU Make is copyright by the Free Software Foundation.  Copyright notices
29 condense sequential years into a range; e.g. "1987-1994" means all years
30 from 1987 to 1994 inclusive.
31
32 Downloading
33 -----------
34
35 GNU Make can be obtained in many different ways.  See a description here:
36
37   https://www.gnu.org/software/software.html
38
39
40 Documentation
41 -------------
42
43 GNU Make is fully documented in the GNU Make manual, which is contained in
44 this distribution as the file make.texi.  You can also find on-line and
45 preformatted (PostScript and DVI) versions at the FSF's web site.  There is
46 information there about ordering hardcopy documentation.
47
48   https://www.gnu.org/
49   https://www.gnu.org/doc/doc.html
50   https://www.gnu.org/manual/manual.html
51
52
53 Development
54 -----------
55
56 GNU Make development is hosted by Savannah, the FSF's online development
57 management tool.  Savannah is here:
58
59   https://savannah.gnu.org
60
61 And the GNU Make development page is here:
62
63   https://savannah.gnu.org/projects/make/
64
65 You can find most information concerning the development of GNU Make at
66 this site.
67
68
69 Regression Tests
70 ----------------
71
72 GNU Make contains a suite of regression tests.  To run them use "make check"
73 after building GNU Make.  If they fail a tar package will be created
74 containing useful information, which can be emailed (as an attachment) to
75 the <bug-make@gnu.org> mailing list.
76
77 Please note that since these tests rely on known-good-output comparisons,
78 they can show spurious failures on some systems (particularly non-POSIX systems
79 such as Windows).
80
81
82 Bug Reporting
83 -------------
84
85 If you need help using GNU Make, try asking on <help-make@gnu.org>.
86
87 If you found a bug, you can send a bug reports to <bug-make@gnu.org>.
88 Please see the section of the GNU Make manual entitled 'Problems and Bugs'
89 for information on submitting useful and complete bug reports.
90
91 You do not need to subscribe to these lists first.
92
93 You can also use the online bug tracking system in the Savannah GNU Make
94 project to submit new problem reports or search for existing ones:
95
96   https://savannah.gnu.org/bugs/?group=make
97
98 We prefer to use the bug tracking system ONLY for bugs or enhancements,
99 not for help requests: please use the mailing lists to get help.
100
101
102 Submitting Patches
103 ------------------
104
105 If you'd like to propose a change to GNU Make, you can provide a patch with
106 your changes.  If you are making your changes in a Git workspace you can run
107 "git format-patch" to create a patch file.  If not, you can use the diff(1)
108 utility to create a patch file; please use "diff -u".
109
110 Once you have a patch you can submit it in any of these ways:
111
112   * Create a bug on Savannah and add the patch as an attachment:
113       https://savannah.gnu.org/bugs/?group=make&func=additem
114
115   * Send the patch via email to <bug-make@gnu.org>: be sure to add it as an
116     attachment to avoid interference by email processors.
117
118 All non-trivial changes require FSF copyright paperwork to be completed
119 before they can be accepted.  Contact <bug-make@gnu.org> for help.
120
121
122 Git Access
123 ----------
124
125 The GNU Make source repository is available via Git from the GNU Savannah Git
126 server; look here for details:
127
128   https://savannah.gnu.org/git/?group=make
129
130 Please note: you won't be able to build GNU Make from Git without installing
131 appropriate maintainer's tools, such as GNU m4, automake, autoconf, Perl, GNU
132 make, and GCC.
133
134 See the README.git file for instructions on how to build GNU Make once these
135 tools are available.  We make no guarantees about the contents or quality of
136 the latest code in the Git repository: it is not unheard of for code that is
137 known to be broken to be checked in.  Use at your own risk.
138
139
140 System-specific Notes
141 ---------------------
142
143 It has been reported that the XLC 1.2 compiler on AIX 3.2 is buggy such
144 that if you compile make with 'cc -O' on AIX 3.2, it will not work
145 correctly.  It is said that using 'cc' without '-O' does work.
146
147 The standard /bin/sh on SunOS 4.1.3_U1 and 4.1.4 is broken and cannot be
148 used to configure GNU Make.  Please install a different shell such as
149 bash or pdksh in order to run "configure".  See this message for more
150 information:
151   https://mail.gnu.org/archive/html/bug-autoconf/2003-10/msg00190.html
152
153 One area that is often a problem in configuration and porting is the code
154 to check the system's current load average.  To make it easier to test and
155 debug this code, you can do 'make check-loadavg' to see if it works
156 properly on your system.  (You must run 'configure' beforehand, but you
157 need not build 'make' itself to run this test.)
158
159 Another potential source of porting problems is the support for large
160 files (LFS) in configure for those operating systems that provide it.
161 Please report any bugs that you find in this area.  If you run into
162 difficulties, then as a workaround you should be able to disable LFS by
163 adding the '--disable-largefile' option to the 'configure' script.
164
165 On systems that support micro- and nano-second timestamp values and
166 where stat(2) provides this information, GNU Make will use it when
167 comparing timestamps to get the most accurate possible result.  However,
168 note that many current implementations of tools that *set* timestamps do
169 not preserve micro- or nano-second granularity.  This means that "cp -p"
170 and other similar tools (tar, etc.) may not exactly duplicate timestamps
171 with micro- and nano-second granularity on some systems.  If your build
172 system contains rules that depend on proper behavior of tools like "cp
173 -p", you should consider using the .LOW_RESOLUTION_TIME pseudo-target to
174 force make to treat them properly.  See the manual for details.
175
176
177 Ports
178 -----
179
180   - See README.customs for details on integrating GNU Make with the
181     Customs distributed build environment from the Pmake distribution.
182
183   - See README.VMS for details about GNU Make on OpenVMS.
184
185   - See README.Amiga for details about GNU Make on AmigaDOS.
186
187   - See README.W32 for details about GNU Make on Windows NT, 95, or 98.
188
189   - See README.DOS for compilation instructions on MS-DOS and MS-Windows
190     using DJGPP tools.
191
192     A precompiled binary of the MSDOS port of GNU Make is available as part
193     of DJGPP; see the WWW page https://www.delorie.com/djgpp/ for more
194     information.
195
196     The Cygwin project maintains its own port of GNU Make.  That port may have
197     patches which are not present in this version.  If you are using Cygwin
198     you should use their version of GNU Make, and if you have questions about
199     it you should start by asking on those mailing lists and forums.
200
201 Please note there are two _separate_ ports of GNU Make for Microsoft
202 systems: a native Windows tool built with (for example) MSVC or Cygwin,
203 and a DOS-based tool built with DJGPP.  Please be sure you are looking
204 at the right README!
205
206 \f
207 -------------------------------------------------------------------------------
208 Copyright (C) 1988-2022 Free Software Foundation, Inc.
209 This file is part of GNU Make.
210
211 GNU Make is free software; you can redistribute it and/or modify it under the
212 terms of the GNU General Public License as published by the Free Software
213 Foundation; either version 3 of the License, or (at your option) any later
214 version.
215
216 GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
217 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
218 A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
219
220 You should have received a copy of the GNU General Public License along with
221 this program.  If not, see <https://www.gnu.org/licenses/>.