mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-11-28 09:25:17 +00:00
Fixed a number of documentation bugs, plus some build/install issues:
16304, 16468, 16577, 17701, 17880, 16051, 16652, 16698 Plus some from the mailing list. Imported a patch from Eli to allow Cygwin builds to support DOS-style pathnames.
This commit is contained in:
parent
c25294ad3b
commit
7595f38f62
19 changed files with 214 additions and 74 deletions
66
ChangeLog
66
ChangeLog
|
@ -1,3 +1,69 @@
|
||||||
|
2006-09-30 Paul Smith <psmith@paulandlesley.org>
|
||||||
|
|
||||||
|
* doc/make.texi (MAKEFILE_LIST Variable): Modify reference to
|
||||||
|
point to lastword since the example was updated.
|
||||||
|
Fixes Savannah bug #16304.
|
||||||
|
(Secondary Expansion): Correct example description.
|
||||||
|
Fixes Savannah bug #16468.
|
||||||
|
(Makefile Contents): Clarify that comments cannot appear within
|
||||||
|
variable references or function calls.
|
||||||
|
Fixes Savannah bug #16577.
|
||||||
|
(Special Targets): Clarify how .NOTPARALLEL works in recursion.
|
||||||
|
Fixes Savannah bug #17701.
|
||||||
|
Reported by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>:
|
||||||
|
(Prerequisite Types): Added an example of using order-only
|
||||||
|
prerequisites. Fixes Savannah bug #17880.
|
||||||
|
(Rule Syntax): "lise" -> "list"
|
||||||
|
(Multiple Rules): ... -> @dots{}
|
||||||
|
(Splitting Lines): ditto.
|
||||||
|
|
||||||
|
* remake.c (update_file_1): Prereqs that don't exist should be
|
||||||
|
considered changed, for the purposes of $?.
|
||||||
|
Fixes Savannah bug #16051.
|
||||||
|
|
||||||
|
* make.1: Remove extraneous "+".
|
||||||
|
Fixes Savannah bug #16652.
|
||||||
|
|
||||||
|
2006-09-06 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* configure.in: Include sys/types.h when checking for sys/wait.h.
|
||||||
|
|
||||||
|
2006-08-18 Eli Zaretskii <eliz@gnu.org>
|
||||||
|
|
||||||
|
* configure.in (PATH_SEPARATOR_CHAR): Define to the value of
|
||||||
|
$PATH_SEPARATOR.
|
||||||
|
|
||||||
|
* make.h (PATH_SEPARATOR_CHAR): Define only if still undefined.
|
||||||
|
Normally, it is defined in config.h.
|
||||||
|
|
||||||
|
* config/dospaths.m4 <ac_cv_dos_paths>: Define to yes on Cygwin as
|
||||||
|
well.
|
||||||
|
|
||||||
|
* job.c (construct_command_argv_internal) [HAVE_DOS_PATHS]: Define
|
||||||
|
sh_chars_sh for Windows platforms that emulate Unix.
|
||||||
|
|
||||||
|
2006-05-07 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* README.OS2.template: Updates provided by Andreas Buening
|
||||||
|
<andreas.buening@nexgo.de>.
|
||||||
|
|
||||||
|
2006-04-30 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* make.h: Include <direct.h> if HAVE_DIRECT_H.
|
||||||
|
* config.h.W32.template (HAVE_DIRECT_H): Set it if it's available.
|
||||||
|
|
||||||
|
2006-04-26 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* README.cvs: Add a reminder to notify the GNU translation robot.
|
||||||
|
|
||||||
|
* doc/make.texi: Change @direcategory (requested by Karl Berry).
|
||||||
|
|
||||||
|
2006-04-20 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* maintMakefile (po-check): Use Perl instead of grep -E, for systems
|
||||||
|
that don't have extended grep.
|
||||||
|
(cvsclean): Use $(PERL) instead of perl.
|
||||||
|
|
||||||
2006-04-09 Paul D. Smith <psmith@gnu.org>
|
2006-04-09 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* maintMakefile: Add some extra warning options (GCC 4.1 only?)
|
* maintMakefile: Add some extra warning options (GCC 4.1 only?)
|
||||||
|
|
|
@ -13,7 +13,7 @@ GNU make supports both shell types. The following list defines the order
|
||||||
that is used to determine the shell:
|
that is used to determine the shell:
|
||||||
|
|
||||||
1. The shell specified by the environment variable MAKESHELL.
|
1. The shell specified by the environment variable MAKESHELL.
|
||||||
2. The shell specified by the SHELL variable within a Makefile. As on
|
2. The shell specified by the SHELL variable within a Makefile. Like
|
||||||
Unix, SHELL is NOT taken from the environment.
|
Unix, SHELL is NOT taken from the environment.
|
||||||
3. The shell specified by the COMSPEC environment variable.
|
3. The shell specified by the COMSPEC environment variable.
|
||||||
4. The shell specified by the OS2_SHELL environment variable.
|
4. The shell specified by the OS2_SHELL environment variable.
|
||||||
|
@ -64,7 +64,7 @@ A standard Unix like build environment:
|
||||||
- GNU texinfo (you can use 3.1 (gnuinfo.zip), but I recommend 4.0)
|
- GNU texinfo (you can use 3.1 (gnuinfo.zip), but I recommend 4.0)
|
||||||
|
|
||||||
If you want to recreate the configuration files (developers only!)
|
If you want to recreate the configuration files (developers only!)
|
||||||
you need also: GNU m4 1.4, autoconf 2.59, automake 1.8.2 (or compatible)
|
you need also: GNU m4 1.4, autoconf 2.59, automake 1.9.6 (or compatible)
|
||||||
|
|
||||||
|
|
||||||
III. ***** COMPILATION AND INSTALLATION *****
|
III. ***** COMPILATION AND INSTALLATION *****
|
||||||
|
@ -83,7 +83,7 @@ b) Installation into x:/usr
|
||||||
|
|
||||||
Note: Although it is possible to compile make using "./configure",
|
Note: Although it is possible to compile make using "./configure",
|
||||||
"make", "make install" this is not recommended. In particular,
|
"make", "make install" this is not recommended. In particular,
|
||||||
you must ALWAYS use LDFLAGS="-Zstack 0x8000" because the default
|
you must ALWAYS use LDFLAGS="-Zstack 0x6000" because the default
|
||||||
stack size is far to small and make will not work properly!
|
stack size is far to small and make will not work properly!
|
||||||
|
|
||||||
Recommended environment variables and installation options:
|
Recommended environment variables and installation options:
|
||||||
|
@ -91,13 +91,13 @@ Recommended environment variables and installation options:
|
||||||
export ac_executable_extensions=".exe"
|
export ac_executable_extensions=".exe"
|
||||||
export CPPFLAGS="-D__ST_MT_ERRNO__"
|
export CPPFLAGS="-D__ST_MT_ERRNO__"
|
||||||
export CFLAGS="-O2 -Zomf -Zmt"
|
export CFLAGS="-O2 -Zomf -Zmt"
|
||||||
export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
|
export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
|
||||||
export RANLIB="echo"
|
export RANLIB="echo"
|
||||||
./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext
|
./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext
|
||||||
make AR=emxomfar
|
make AR=emxomfar
|
||||||
make install
|
make install
|
||||||
|
|
||||||
Note: If you use gcc 2.9.x or higher I recommend to set also LIBS="-lgcc"
|
Note: If you use gcc 2.9.x I recommend to set also LIBS="-lgcc"
|
||||||
|
|
||||||
Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS.
|
Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS.
|
||||||
See section I. for details.
|
See section I. for details.
|
||||||
|
@ -148,15 +148,15 @@ To run the testsuite do the following:
|
||||||
|
|
||||||
export CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2"
|
export CPPFLAGS="-D__ST_MT_ERRNO__ -DNO_CMD_DEFAULT -DNO_CHDIR2"
|
||||||
export CFLAGS="-Zomf -O2 -Zmt"
|
export CFLAGS="-Zomf -O2 -Zmt"
|
||||||
export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x8000"
|
export LDFLAGS="-Zcrtdll -s -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000"
|
||||||
export RANLIB="echo"
|
export RANLIB="echo"
|
||||||
./configure --prefix=x:/usr --disable-nls
|
./configure --prefix=x:/usr --disable-nls
|
||||||
make AR=emxomfar
|
make AR=emxomfar
|
||||||
make check
|
make check
|
||||||
|
|
||||||
All tests should work fine with the exception of "default_names" which
|
All tests should work fine with the exception of one of the "INCLUDE_DIRS"
|
||||||
is because OS/2 file systems are not case sensitive ("makefile" and
|
tests which will fail if your /usr/include directory is on a drive different
|
||||||
"Makefile" specify the same file).
|
from the make source tree.
|
||||||
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
|
@ -169,6 +169,13 @@ what you do:
|
||||||
It will ask for the GPG passphrase _THREE_ times. Sigh.
|
It will ask for the GPG passphrase _THREE_ times. Sigh.
|
||||||
|
|
||||||
|
|
||||||
|
For both final releases and pre-releases, send an email with the URL of
|
||||||
|
the package to the GNU translation robot to allow the translators to
|
||||||
|
work on it:
|
||||||
|
|
||||||
|
<translation@iro.umontreal.ca>
|
||||||
|
|
||||||
|
|
||||||
Where to Announce
|
Where to Announce
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */
|
||||||
*/
|
*/
|
||||||
#define HAVE_DIRENT_H 1
|
#define HAVE_DIRENT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <direct.h> header file, and it defines getcwd()
|
||||||
|
and chdir().
|
||||||
|
*/
|
||||||
|
#if (defined(_MSC_VER) || defined(__BORLANDC__)) && !defined(__INTERIX)
|
||||||
|
# define HAVE_DIRECT_H 1
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
|
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
|
||||||
/* #undef HAVE_DOPRNT */
|
/* #undef HAVE_DOPRNT */
|
||||||
|
|
||||||
|
|
|
@ -3,5 +3,9 @@ config.*
|
||||||
mkinstalldirs
|
mkinstalldirs
|
||||||
texinfo.tex
|
texinfo.tex
|
||||||
mdate-sh
|
mdate-sh
|
||||||
|
compile
|
||||||
|
depcomp
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
|
||||||
Makefile Makefile.in
|
Makefile Makefile.in
|
||||||
|
|
|
@ -22,7 +22,7 @@ AC_DEFUN([pds_AC_DOS_PATHS],
|
||||||
AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths],
|
AC_CACHE_CHECK([whether system uses MSDOS-style paths], [ac_cv_dos_paths],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([
|
AC_COMPILE_IFELSE([
|
||||||
#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__
|
#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__
|
||||||
neither MSDOS nor Windows nor OS2
|
neither MSDOS nor Windows nor OS2
|
||||||
#endif
|
#endif
|
||||||
],
|
],
|
||||||
|
|
|
@ -191,7 +191,7 @@ AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , ,
|
||||||
|
|
||||||
|
|
||||||
# Check out the wait reality.
|
# Check out the wait reality.
|
||||||
AC_CHECK_HEADERS(sys/wait.h)
|
AC_CHECK_HEADERS(sys/wait.h,,,[[#include <sys/types.h>]])
|
||||||
AC_CHECK_FUNCS(waitpid wait3)
|
AC_CHECK_FUNCS(waitpid wait3)
|
||||||
AC_MSG_CHECKING(for union wait)
|
AC_MSG_CHECKING(for union wait)
|
||||||
AC_CACHE_VAL(make_cv_union_wait, [dnl
|
AC_CACHE_VAL(make_cv_union_wait, [dnl
|
||||||
|
@ -381,6 +381,8 @@ case "$host" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
AC_DEFINE_UNQUOTED(PATH_SEPARATOR_CHAR,'$PATH_SEPARATOR',[Define to the character that separates directories in PATH.])
|
||||||
|
|
||||||
# Include the Maintainer's Makefile section, if it's here.
|
# Include the Maintainer's Makefile section, if it's here.
|
||||||
|
|
||||||
MAINT_MAKEFILE=/dev/null
|
MAINT_MAKEFILE=/dev/null
|
||||||
|
|
|
@ -50,7 +50,7 @@ Software Foundation raise funds for GNU development.''
|
||||||
@c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz
|
@c ISPELL CHECK: done, 2000-06-25 --Martin Buchholz
|
||||||
|
|
||||||
|
|
||||||
@dircategory GNU Packages
|
@dircategory Software development
|
||||||
@direntry
|
@direntry
|
||||||
* Make: (make). Remake files automatically.
|
* Make: (make). Remake files automatically.
|
||||||
@end direntry
|
@end direntry
|
||||||
|
@ -1009,6 +1009,10 @@ it) is effectively blank, and is ignored. If you want a literal
|
||||||
appear on any line in the makefile, although they are treated
|
appear on any line in the makefile, although they are treated
|
||||||
specially in certain situations.
|
specially in certain situations.
|
||||||
|
|
||||||
|
You cannot use comments within variable references or function calls:
|
||||||
|
any instance of @code{#} will be treated literally (rather than as the
|
||||||
|
start of a comment) inside a variable reference or function call.
|
||||||
|
|
||||||
Within a command script (if the line begins with a TAB character) the
|
Within a command script (if the line begins with a TAB character) the
|
||||||
entire line is passed to the shell, just as with any other line that
|
entire line is passed to the shell, just as with any other line that
|
||||||
begins with a TAB. The shell decides how to interpret the text:
|
begins with a TAB. The shell decides how to interpret the text:
|
||||||
|
@ -1251,10 +1255,10 @@ name2 = inc.mk
|
||||||
@end group
|
@end group
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@xref{Text Functions}, for more information on the @code{word} and
|
@xref{Text Functions}, for more information on the @code{lastword}
|
||||||
@code{words} functions used above. @xref{Flavors, The Two Flavors of
|
function used above. @xref{Flavors, The Two Flavors of Variables},
|
||||||
Variables}, for more information on simply-expanded (@code{:=})
|
for more information on simply-expanded (@code{:=}) variable
|
||||||
variable definitions.
|
definitions.
|
||||||
|
|
||||||
@node Special Variables, Remaking Makefiles, MAKEFILE_LIST Variable, Makefiles
|
@node Special Variables, Remaking Makefiles, MAKEFILE_LIST Variable, Makefiles
|
||||||
@comment node-name, next, previous, up
|
@comment node-name, next, previous, up
|
||||||
|
@ -1744,7 +1748,7 @@ In the first prerequisite list, all three variables (@code{$$<},
|
||||||
second, they will have values @code{foo.1}, @code{foo.1 bar.1}, and
|
second, they will have values @code{foo.1}, @code{foo.1 bar.1}, and
|
||||||
@code{foo.1 bar.1} respectively. In the third they will have values
|
@code{foo.1 bar.1} respectively. In the third they will have values
|
||||||
@code{foo.1}, @code{foo.1 bar.1 foo.2 bar.2}, and @code{foo.1 bar.1
|
@code{foo.1}, @code{foo.1 bar.1 foo.2 bar.2}, and @code{foo.1 bar.1
|
||||||
foo.2 bar.2} respectively.
|
foo.2 bar.2 foo.1 foo.1 bar.1 foo.1 bar.1} respectively.
|
||||||
|
|
||||||
Rules undergo secondary expansion in makefile order, except that
|
Rules undergo secondary expansion in makefile order, except that
|
||||||
the rule with the command script is always evaluated last.
|
the rule with the command script is always evaluated last.
|
||||||
|
@ -1937,7 +1941,7 @@ references, if you really want a dollar sign in a target or
|
||||||
prerequisite you must write two of them, @samp{$$} (@pxref{Using
|
prerequisite you must write two of them, @samp{$$} (@pxref{Using
|
||||||
Variables, ,How to Use Variables}). If you have enabled secondary
|
Variables, ,How to Use Variables}). If you have enabled secondary
|
||||||
expansion (@pxref{Secondary Expansion}) and you want a literal dollar
|
expansion (@pxref{Secondary Expansion}) and you want a literal dollar
|
||||||
sign in the prerequisites lise, you must actually write @emph{four}
|
sign in the prerequisites list, you must actually write @emph{four}
|
||||||
dollar signs (@samp{$$$$}).
|
dollar signs (@samp{$$$$}).
|
||||||
|
|
||||||
You may split a long line by inserting a backslash followed by a
|
You may split a long line by inserting a backslash followed by a
|
||||||
|
@ -2000,10 +2004,41 @@ symbol are normal; any prerequisites to the right are order-only:
|
||||||
|
|
||||||
The normal prerequisites section may of course be empty. Also, you
|
The normal prerequisites section may of course be empty. Also, you
|
||||||
may still declare multiple lines of prerequisites for the same target:
|
may still declare multiple lines of prerequisites for the same target:
|
||||||
they are appended appropriately. Note that if you declare the same
|
they are appended appropriately (normal prerequisites are appended to
|
||||||
file to be both a normal and an order-only prerequisite, the normal
|
the list of normal prerequisites; order-only prerequisites are
|
||||||
prerequisite takes precedence (since they are a strict superset of the
|
appended to the list of order-only prerequisites). Note that if you
|
||||||
behavior of an order-only prerequisite).
|
declare the same file to be both a normal and an order-only
|
||||||
|
prerequisite, the normal prerequisite takes precedence (since they
|
||||||
|
have a strict superset of the behavior of an order-only prerequisite).
|
||||||
|
|
||||||
|
Consider an example where your targets are to be placed in a separate
|
||||||
|
directory, and that directory might not exist before @code{make} is
|
||||||
|
run. In this situation, you want the directory to be created before
|
||||||
|
any targets are placed into it but, because the timestamps on
|
||||||
|
directories change whenever a file is added, removed, or renamed, we
|
||||||
|
certainly don't want to rebuild all the targets whenever the
|
||||||
|
directory's timestamp changes. One way to manage this is with
|
||||||
|
order-only prerequisites: make the directory an order-only
|
||||||
|
prerequisite on all the targets:
|
||||||
|
|
||||||
|
@example
|
||||||
|
OBJDIR := objdir
|
||||||
|
OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o)
|
||||||
|
|
||||||
|
$(OBJDIR)/%.o : %.c
|
||||||
|
$(COMPILE.c) $(OUTPUT_OPTION) $<
|
||||||
|
|
||||||
|
all: $(OBJS)
|
||||||
|
|
||||||
|
$(OBJS): | $(OBJDIR)
|
||||||
|
|
||||||
|
$(OBJDIR):
|
||||||
|
mkdir $(OBJDIR)
|
||||||
|
@end example
|
||||||
|
|
||||||
|
Now the rule to create the @file{objdir} directory will be run, if
|
||||||
|
needed, before any @samp{.o} is built, but no @samp{.o} will be built
|
||||||
|
because the @file{objdir} directory timestamp changed.
|
||||||
|
|
||||||
@node Wildcards, Directory Search, Prerequisite Types, Rules
|
@node Wildcards, Directory Search, Prerequisite Types, Rules
|
||||||
@section Using Wildcard Characters in File Names
|
@section Using Wildcard Characters in File Names
|
||||||
|
@ -2995,11 +3030,11 @@ Sub-@code{make}}.
|
||||||
@item .NOTPARALLEL
|
@item .NOTPARALLEL
|
||||||
@cindex parallel execution, overriding
|
@cindex parallel execution, overriding
|
||||||
|
|
||||||
If @code{.NOTPARALLEL} is mentioned as a target, then this invocation of
|
If @code{.NOTPARALLEL} is mentioned as a target, then this invocation
|
||||||
@code{make} will be run serially, even if the @samp{-j} option is
|
of @code{make} will be run serially, even if the @samp{-j} option is
|
||||||
given. Any recursively invoked @code{make} command will still be run in
|
given. Any recursively invoked @code{make} command will still run
|
||||||
parallel (unless its makefile contains this target). Any prerequisites
|
commands in parallel (unless its makefile also contains this target).
|
||||||
on this target are ignored.
|
Any prerequisites on this target are ignored.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
Any defined implicit rule suffix also counts as a special target if it
|
Any defined implicit rule suffix also counts as a special target if it
|
||||||
|
@ -3093,7 +3128,7 @@ more than one rule gives commands for the same file, @code{make} uses
|
||||||
the last set given and prints an error message. (As a special case,
|
the last set given and prints an error message. (As a special case,
|
||||||
if the file's name begins with a dot, no error message is printed.
|
if the file's name begins with a dot, no error message is printed.
|
||||||
This odd behavior is only for compatibility with other implementations
|
This odd behavior is only for compatibility with other implementations
|
||||||
of @code{make}... you should avoid using it). Occasionally it is
|
of @code{make}@dots{} you should avoid using it). Occasionally it is
|
||||||
useful to have the same target invoke multiple commands which are
|
useful to have the same target invoke multiple commands which are
|
||||||
defined in different parts of your makefile; you can use
|
defined in different parts of your makefile; you can use
|
||||||
@dfn{double-colon rules} (@pxref{Double-Colon}) for this.
|
@dfn{double-colon rules} (@pxref{Double-Colon}) for this.
|
||||||
|
@ -3652,11 +3687,12 @@ hello world
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
Notice how the backslash/newline pair was removed inside the string quoted
|
Notice how the backslash/newline pair was removed inside the string
|
||||||
with double quotes (@code{"..."}), but not from the string quoted with single
|
quoted with double quotes (@code{"@dots{}"}), but not from the string
|
||||||
quotes (@code{'...'}). This is the way the default shell (@file{/bin/sh})
|
quoted with single quotes (@code{'@dots{}'}). This is the way the
|
||||||
handles backslash/newline pairs. If you specify a different shell in your
|
default shell (@file{/bin/sh}) handles backslash/newline pairs. If
|
||||||
makefiles it may treat them differently.
|
you specify a different shell in your makefiles it may treat them
|
||||||
|
differently.
|
||||||
|
|
||||||
Sometimes you want to split a long line inside of single quotes, but
|
Sometimes you want to split a long line inside of single quotes, but
|
||||||
you don't want the backslash-newline to appear in the quoted content.
|
you don't want the backslash-newline to appear in the quoted content.
|
||||||
|
@ -3942,7 +3978,9 @@ GNU @code{make} knows how to execute several commands at once.
|
||||||
Normally, @code{make} will execute only one command at a time, waiting
|
Normally, @code{make} will execute only one command at a time, waiting
|
||||||
for it to finish before executing the next. However, the @samp{-j} or
|
for it to finish before executing the next. However, the @samp{-j} or
|
||||||
@samp{--jobs} option tells @code{make} to execute many commands
|
@samp{--jobs} option tells @code{make} to execute many commands
|
||||||
simultaneously.@refill
|
simultaneously. You can inhibit parallelism in a particular makefile
|
||||||
|
with the @code{.NOTPARALLEL} pseudo-target (@pxref{Special
|
||||||
|
Targets,Special Built-in Target Names}).@refill
|
||||||
|
|
||||||
On MS-DOS, the @samp{-j} option has no effect, since that system doesn't
|
On MS-DOS, the @samp{-j} option has no effect, since that system doesn't
|
||||||
support multi-processing.
|
support multi-processing.
|
||||||
|
|
6
job.c
6
job.c
|
@ -2307,6 +2307,12 @@ construct_command_argv_internal (char *line, char **restp, char *shell,
|
||||||
"login", "logout", "read", "readonly", "set",
|
"login", "logout", "read", "readonly", "set",
|
||||||
"shift", "switch", "test", "times", "trap",
|
"shift", "switch", "test", "times", "trap",
|
||||||
"umask", "wait", "while", 0 };
|
"umask", "wait", "while", 0 };
|
||||||
|
# ifdef HAVE_DOS_PATHS
|
||||||
|
/* This is required if the MSYS/Cygwin ports (which do not define
|
||||||
|
WINDOWS32) are compiled with HAVE_DOS_PATHS defined, which uses
|
||||||
|
sh_chars_sh[] directly (see below). */
|
||||||
|
static char *sh_chars_sh = sh_chars;
|
||||||
|
# endif /* HAVE_DOS_PATHS */
|
||||||
#endif
|
#endif
|
||||||
int i;
|
int i;
|
||||||
char *p;
|
char *p;
|
||||||
|
|
|
@ -91,11 +91,12 @@ CVS-CLEAN-FILES += $(maintFILES) $(TEMPLATES) $(MTEMPLATES) NMakefile \
|
||||||
# This rule tries to clean the tree right down to how it looks when you do a
|
# This rule tries to clean the tree right down to how it looks when you do a
|
||||||
# virgin CVS checkout.
|
# virgin CVS checkout.
|
||||||
|
|
||||||
# This is potentially dangerous since it removes _ANY FILE_ that is not in
|
# This target is potentially dangerous since it removes _ANY FILE_ that
|
||||||
# CVS. Including files you might mean to add to CVS but haven't yet...
|
# is not in CVS. Including files you might mean to add to CVS but
|
||||||
# I only use this in subdirectories where it's unlikely we have any new
|
# haven't yet... I only use this in subdirectories where it's unlikely
|
||||||
# files. Stil...
|
# we have any new files. Still... be careful!!
|
||||||
cvsclean = perl -e '$$k{CVS} = 1; open(E,"< CVS/Entries") || die "CVS/Entries: $$!\n"; while (defined ($$_ = <E>)) { m%^/([^/]*)% or next; $$k{$$1} = 1; } close(E) || die "CVS/Entries: $$!\n"; opendir(D, ".") || die ".: $$!\n"; while (defined ($$_ = readdir(D))) { -f $$_ && ! exists $$k{$$_} && unlink($$_); } closedir(D) || die ".: $$!\n";'
|
|
||||||
|
cvsclean = $(PERL) -e '$$k{CVS} = 1; open(E,"< CVS/Entries") || die "CVS/Entries: $$!\n"; while (defined ($$_ = <E>)) { m%^/([^/]*)% or next; $$k{$$1} = 1; } close(E) || die "CVS/Entries: $$!\n"; opendir(D, ".") || die ".: $$!\n"; while (defined ($$_ = readdir(D))) { -f $$_ && ! exists $$k{$$_} && unlink($$_); } closedir(D) || die ".: $$!\n";'
|
||||||
|
|
||||||
.PHONY: cvs-clean
|
.PHONY: cvs-clean
|
||||||
cvs-clean: maintainer-clean
|
cvs-clean: maintainer-clean
|
||||||
|
@ -214,8 +215,8 @@ changelog-check:
|
||||||
# Ignore make.h; it defines _().
|
# Ignore make.h; it defines _().
|
||||||
po-check:
|
po-check:
|
||||||
if test -f po/POTFILES.in; then \
|
if test -f po/POTFILES.in; then \
|
||||||
grep -E -v '^(#|$$)' po/POTFILES.in | sort > $@-1; \
|
grep '^[^#]' po/POTFILES.in | sort > $@-1; \
|
||||||
grep -E -l '\b_\(' *.c *.h | grep -v make.h | sort > $@-2; \
|
$(PERL) -wn -e 'if (/\b_\(/) { $$ARGV eq "make.h" || print "$$ARGV\n" and close ARGV }' *.c *.h | sort > $@-2; \
|
||||||
diff -u $@-1 $@-2 || exit 1; \
|
diff -u $@-1 $@-2 || exit 1; \
|
||||||
rm -f $@-1 $@-2; \
|
rm -f $@-1 $@-2; \
|
||||||
fi
|
fi
|
||||||
|
|
2
make.1
2
make.1
|
@ -164,7 +164,7 @@ for debugging while remaking makefiles.
|
||||||
Give variables taken from the environment precedence
|
Give variables taken from the environment precedence
|
||||||
over variables from makefiles.
|
over variables from makefiles.
|
||||||
.TP 0.5i
|
.TP 0.5i
|
||||||
+\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR
|
\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR
|
||||||
Use
|
Use
|
||||||
.I file
|
.I file
|
||||||
as a makefile.
|
as a makefile.
|
||||||
|
|
18
make.h
18
make.h
|
@ -311,16 +311,18 @@ int strcmpi (const char *,const char *);
|
||||||
#define S_(msg1,msg2,num) ngettext (msg1,msg2,num)
|
#define S_(msg1,msg2,num) ngettext (msg1,msg2,num)
|
||||||
|
|
||||||
/* Handle other OSs. */
|
/* Handle other OSs. */
|
||||||
#if defined(HAVE_DOS_PATHS)
|
#ifndef PATH_SEPARATOR_CHAR
|
||||||
# define PATH_SEPARATOR_CHAR ';'
|
# if defined(HAVE_DOS_PATHS)
|
||||||
#elif defined(VMS)
|
# define PATH_SEPARATOR_CHAR ';'
|
||||||
# define PATH_SEPARATOR_CHAR ','
|
# elif defined(VMS)
|
||||||
#else
|
# define PATH_SEPARATOR_CHAR ','
|
||||||
# define PATH_SEPARATOR_CHAR ':'
|
# else
|
||||||
|
# define PATH_SEPARATOR_CHAR ':'
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* This is needed for getcwd() and chdir(). */
|
/* This is needed for getcwd() and chdir(), on some W32 systems. */
|
||||||
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
#if defined(HAVE_DIRECT_H)
|
||||||
# include <direct.h>
|
# include <direct.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
6
remake.c
6
remake.c
|
@ -535,11 +535,9 @@ update_file_1 (struct file *file, unsigned int depth)
|
||||||
|
|
||||||
if (!running)
|
if (!running)
|
||||||
/* The prereq is considered changed if the timestamp has changed while
|
/* The prereq is considered changed if the timestamp has changed while
|
||||||
it was built, OR it doesn't exist.
|
it was built, OR it doesn't exist. */
|
||||||
This causes the Linux kernel build to break. We'll defer this
|
|
||||||
fix until GNU make 3.82 to give them time to update. */
|
|
||||||
d->changed = ((file_mtime (d->file) != mtime)
|
d->changed = ((file_mtime (d->file) != mtime)
|
||||||
/* || (mtime == NONEXISTENT_MTIME) */);
|
|| (mtime == NONEXISTENT_MTIME));
|
||||||
|
|
||||||
lastd = d;
|
lastd = d;
|
||||||
d = d->next;
|
d = d->next;
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
|
2006-10-01 Paul Smith <psmith@paulandlesley.org>
|
||||||
|
|
||||||
|
* run_make_tests.pl (set_more_defaults): Remove setting of LANG in
|
||||||
|
ENV here. This doesn't always work.
|
||||||
|
* test_driver.pl (toplevel): Set LC_ALL to 'C' in the make
|
||||||
|
environment. Fixes Savannah bug #16698.
|
||||||
|
|
||||||
|
2006-09-30 Paul Smith <psmith@paulandlesley.org>
|
||||||
|
|
||||||
|
* scripts/variables/automatic: Add back the test for bug #8154.
|
||||||
|
|
||||||
2006-04-01 Paul D. Smith <psmith@gnu.org>
|
2006-04-01 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* scripts/functions/realpath: Don't run tests with multiple
|
* scripts/functions/realpath: Don't run tests with multiple
|
||||||
|
|
|
@ -228,11 +228,6 @@ sub set_more_defaults
|
||||||
local($string);
|
local($string);
|
||||||
local($index);
|
local($index);
|
||||||
|
|
||||||
# Make sure we're in the C locale for those systems that support it,
|
|
||||||
# so sorting, etc. is predictable.
|
|
||||||
#
|
|
||||||
$ENV{LANG} = 'C';
|
|
||||||
|
|
||||||
# find the type of the port. We do this up front to have a single
|
# find the type of the port. We do this up front to have a single
|
||||||
# point of change if it needs to be tweaked.
|
# point of change if it needs to be tweaked.
|
||||||
#
|
#
|
||||||
|
|
|
@ -95,17 +95,16 @@ mbr.src: ; @:',
|
||||||
# Make sure that nonexistent prerequisites are listed in $?, since they are
|
# Make sure that nonexistent prerequisites are listed in $?, since they are
|
||||||
# considered reasons for the target to be rebuilt.
|
# considered reasons for the target to be rebuilt.
|
||||||
#
|
#
|
||||||
# This was undone due to Savannah bug #16002. We'll re-do it in the next
|
# See also Savannah bugs #16002 and #16051.
|
||||||
# release. See Savannah bug #16051.
|
|
||||||
|
|
||||||
#touch('foo');
|
touch('foo');
|
||||||
#
|
|
||||||
#run_make_test('
|
run_make_test('
|
||||||
#foo: bar ; @echo "\$$? = $?"
|
foo: bar ; @echo "\$$? = $?"
|
||||||
#bar: ;',
|
bar: ;',
|
||||||
# '',
|
'',
|
||||||
# '$? = bar');
|
'$? = bar');
|
||||||
#
|
|
||||||
#unlink('foo');
|
unlink('foo');
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -78,9 +78,9 @@ sub resetENV
|
||||||
sub toplevel
|
sub toplevel
|
||||||
{
|
{
|
||||||
# Pull in benign variables from the user's environment
|
# Pull in benign variables from the user's environment
|
||||||
#
|
|
||||||
foreach (# UNIX-specific things
|
foreach (# UNIX-specific things
|
||||||
'TZ', 'LANG', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
|
'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
|
||||||
# Purify things
|
# Purify things
|
||||||
'PURIFYOPTIONS',
|
'PURIFYOPTIONS',
|
||||||
# Windows NT-specific stuff
|
# Windows NT-specific stuff
|
||||||
|
@ -92,6 +92,10 @@ sub toplevel
|
||||||
$makeENV{$_} = $ENV{$_} if $ENV{$_};
|
$makeENV{$_} = $ENV{$_} if $ENV{$_};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Make sure our compares are not foiled by locale differences
|
||||||
|
|
||||||
|
$makeENV{LC_ALL} = 'C';
|
||||||
|
|
||||||
# Replace the environment with the new one
|
# Replace the environment with the new one
|
||||||
#
|
#
|
||||||
%origENV = %ENV;
|
%origENV = %ENV;
|
||||||
|
|
|
@ -437,7 +437,7 @@ lookup_variable_in_set (const char *name, unsigned int length,
|
||||||
rule, then we will use the "root" double-colon target's variable set as the
|
rule, then we will use the "root" double-colon target's variable set as the
|
||||||
parent of FILE's variable set.
|
parent of FILE's variable set.
|
||||||
|
|
||||||
If we're READing a makefile, don't do the pattern variable search now,
|
If we're READING a makefile, don't do the pattern variable search now,
|
||||||
since the pattern variable might not have been defined yet. */
|
since the pattern variable might not have been defined yet. */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -138,7 +138,7 @@ void free_variable_set (struct variable_set_list *);
|
||||||
struct variable_set_list *push_new_variable_scope (void);
|
struct variable_set_list *push_new_variable_scope (void);
|
||||||
void pop_variable_scope (void);
|
void pop_variable_scope (void);
|
||||||
void define_automatic_variables (void);
|
void define_automatic_variables (void);
|
||||||
void initialize_file_variables (struct file *file, int read);
|
void initialize_file_variables (struct file *file, int reading);
|
||||||
void print_file_variables (struct file *file);
|
void print_file_variables (struct file *file);
|
||||||
void print_variable_set (struct variable_set *set, char *prefix);
|
void print_variable_set (struct variable_set *set, char *prefix);
|
||||||
void merge_variable_set_lists (struct variable_set_list **to_list,
|
void merge_variable_set_lists (struct variable_set_list **to_list,
|
||||||
|
|
Loading…
Reference in a new issue