mirror of
https://salsa.debian.org/srivasta/make-dfsg.git
synced 2024-12-25 05:29:47 +00:00
* Various bug fixes.
This commit is contained in:
parent
f9c91ec34d
commit
5ed9fb46b2
13 changed files with 213 additions and 54 deletions
42
ChangeLog
42
ChangeLog
|
@ -1,3 +1,45 @@
|
||||||
|
2000-04-18 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* remake.c (f_mtime): If ar_member_date() returns -1 (the member
|
||||||
|
doesn't exist), then return (FILE_TIMESTAMP)-1 rather than
|
||||||
|
returning the timestamp calculated from the value -1. Fixes PR/1696.
|
||||||
|
Reported by Gilles Bourhis <Gilles.Bourhis@univ-rennes1.fr>.
|
||||||
|
|
||||||
|
2000-04-17 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* config.h.W32.template: Add LOCALEDIR macro resolving to "".
|
||||||
|
* w32/subproc/sub_proc.c (process_begin): Remove reference to
|
||||||
|
debug_flag; change it to a DB() call. Fixes PR/1700.
|
||||||
|
Reported by Jim Smith <jwksmith@attglobal.net>
|
||||||
|
|
||||||
|
2000-04-17 Bruno Haible <haible@clisp.cons.org>
|
||||||
|
|
||||||
|
* arscan.c [BeOS]: Add replacement for nonexistent <ar.h> from GNU
|
||||||
|
binutils.
|
||||||
|
|
||||||
|
2000-04-11 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* function.c (expand_builtin_function): If no arguments were
|
||||||
|
provided, just quit early rather than changing each function to
|
||||||
|
test for this.
|
||||||
|
(function_table[]): Change the min # of arguments to 0 for all
|
||||||
|
those functions for which it makes sense (currently everything
|
||||||
|
that used to take a minimum of 1 argument, except $(call ...)).
|
||||||
|
Fixes PR/1689.
|
||||||
|
|
||||||
|
2000-04-09 Eli Zaretskii <eliz@is.elta.co.il>
|
||||||
|
|
||||||
|
* README.DOS: Add instructions to install a binary distro.
|
||||||
|
Mention latest versions of Windows.
|
||||||
|
|
||||||
|
2000-04-07 Eli Zaretskii <eliz@is.elta.co.il>
|
||||||
|
|
||||||
|
* main.c (main): Rename TMP_TEMPLATE into DEFAULT_TMPDIR, and use
|
||||||
|
it for the directory of the temporary file. If P_tmpdir is
|
||||||
|
defined, use it in preference to "/tmp/". Try $TMPDIR, $TEMP, and
|
||||||
|
$TMP in the environment before defaulting to DEFAULT_TMPDIR.
|
||||||
|
(print_version): Add year 2000 to the Copyright line.
|
||||||
|
|
||||||
2000-04-04 Paul D. Smith <psmith@gnu.org>
|
2000-04-04 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* Version 3.79 released.
|
* Version 3.79 released.
|
||||||
|
|
|
@ -34,11 +34,22 @@ New (since 3.74) DOS-specific features:
|
||||||
environment (requires Perl and auxiliary tools; see below).
|
environment (requires Perl and auxiliary tools; see below).
|
||||||
|
|
||||||
|
|
||||||
To build:
|
To install a binary distribution:
|
||||||
|
|
||||||
|
Simply unzip the makNNNb.zip file (where NNN is the version number)
|
||||||
|
preserving the directory structure (-d switch if you use PKUNZIP).
|
||||||
|
If you are installing Make on Windows 9X or Windows 2000, use an
|
||||||
|
unzip program that supports long filenames in zip files. After
|
||||||
|
unzipping, make sure the directory with make.exe is on your PATH,
|
||||||
|
and that's all you need to use Make.
|
||||||
|
|
||||||
|
|
||||||
|
To build from sources:
|
||||||
|
|
||||||
1. Unzip the archive, preserving the directory structure (-d switch
|
1. Unzip the archive, preserving the directory structure (-d switch
|
||||||
if you use PKUNZIP). If you build Make on Windows 95, use an
|
if you use PKUNZIP). If you build Make on Windows 9X or Windows
|
||||||
unzip program that supports long filenames in zip files.
|
2000, use an unzip program that supports long filenames in zip
|
||||||
|
files.
|
||||||
|
|
||||||
If you are unpacking an official GNU source distribution, use
|
If you are unpacking an official GNU source distribution, use
|
||||||
either DJTAR (which is part of the DJGPP development
|
either DJTAR (which is part of the DJGPP development
|
||||||
|
|
20
arscan.c
20
arscan.c
|
@ -232,7 +232,25 @@ ar_scan (archive, function, arg)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef WINDOWS32
|
#ifndef WINDOWS32
|
||||||
# include <ar.h>
|
# ifndef __BEOS__
|
||||||
|
# include <ar.h>
|
||||||
|
# else
|
||||||
|
/* BeOS 5 doesn't have <ar.h> but has archives in the same format
|
||||||
|
* as many other Unices. This was taken from GNU binutils for BeOS.
|
||||||
|
*/
|
||||||
|
# define ARMAG "!<arch>\n" /* String that begins an archive file. */
|
||||||
|
# define SARMAG 8 /* Size of that string. */
|
||||||
|
# define ARFMAG "`\n" /* String in ar_fmag at end of each header. */
|
||||||
|
struct ar_hdr
|
||||||
|
{
|
||||||
|
char ar_name[16]; /* Member file name, sometimes / terminated. */
|
||||||
|
char ar_date[12]; /* File date, decimal seconds since Epoch. */
|
||||||
|
char ar_uid[6], ar_gid[6]; /* User and group IDs, in ASCII decimal. */
|
||||||
|
char ar_mode[8]; /* File mode, in ASCII octal. */
|
||||||
|
char ar_size[10]; /* File size, in ASCII decimal. */
|
||||||
|
char ar_fmag[2]; /* Always contains ARFMAG. */
|
||||||
|
};
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
/* These should allow us to read Windows (VC++) libraries (according to Frank
|
/* These should allow us to read Windows (VC++) libraries (according to Frank
|
||||||
* Libbrecht <frankl@abzx.belgium.hp.com>)
|
* Libbrecht <frankl@abzx.belgium.hp.com>)
|
||||||
|
|
|
@ -188,6 +188,21 @@
|
||||||
#undef SCCS_GET
|
#undef SCCS_GET
|
||||||
#define SCCS_GET "echo no sccs get"
|
#define SCCS_GET "echo no sccs get"
|
||||||
|
|
||||||
|
/* Define to 1 if NLS is requested. */
|
||||||
|
/* #undef ENABLE_NLS */
|
||||||
|
|
||||||
|
/* Define as 1 if you have dcgettext. */
|
||||||
|
/* #undef HAVE_DCGETTEXT */
|
||||||
|
|
||||||
|
/* Define as 1 if you have gettext and don't want to use GNU gettext. */
|
||||||
|
/* #undef HAVE_GETTEXT */
|
||||||
|
|
||||||
|
/* Define if your locale.h file contains LC_MESSAGES. */
|
||||||
|
/* #undef HAVE_LC_MESSAGES */
|
||||||
|
|
||||||
|
/* Define to the installation directory for locales. */
|
||||||
|
#define LOCALEDIR ""
|
||||||
|
|
||||||
/* Define this if the SCCS `get' command understands the `-G<file>' option. */
|
/* Define this if the SCCS `get' command understands the `-G<file>' option. */
|
||||||
/* #undef SCCS_GET_MINUS_G */
|
/* #undef SCCS_GET_MINUS_G */
|
||||||
|
|
||||||
|
|
35
function.c
35
function.c
|
@ -1642,33 +1642,33 @@ static struct function_table_entry function_table[] =
|
||||||
/* Name/size */ /* MIN MAX EXP? Function */
|
/* Name/size */ /* MIN MAX EXP? Function */
|
||||||
{ STRING_SIZE_TUPLE("addprefix"), 2, 2, 1, func_addsuffix_addprefix},
|
{ STRING_SIZE_TUPLE("addprefix"), 2, 2, 1, func_addsuffix_addprefix},
|
||||||
{ STRING_SIZE_TUPLE("addsuffix"), 2, 2, 1, func_addsuffix_addprefix},
|
{ STRING_SIZE_TUPLE("addsuffix"), 2, 2, 1, func_addsuffix_addprefix},
|
||||||
{ STRING_SIZE_TUPLE("basename"), 1, 1, 1, func_basename_dir},
|
{ STRING_SIZE_TUPLE("basename"), 0, 1, 1, func_basename_dir},
|
||||||
{ STRING_SIZE_TUPLE("dir"), 1, 1, 1, func_basename_dir},
|
{ STRING_SIZE_TUPLE("dir"), 0, 1, 1, func_basename_dir},
|
||||||
{ STRING_SIZE_TUPLE("notdir"), 1, 1, 1, func_notdir_suffix},
|
{ STRING_SIZE_TUPLE("notdir"), 0, 1, 1, func_notdir_suffix},
|
||||||
{ STRING_SIZE_TUPLE("subst"), 3, 3, 1, func_subst},
|
{ STRING_SIZE_TUPLE("subst"), 3, 3, 1, func_subst},
|
||||||
{ STRING_SIZE_TUPLE("suffix"), 1, 1, 1, func_notdir_suffix},
|
{ STRING_SIZE_TUPLE("suffix"), 0, 1, 1, func_notdir_suffix},
|
||||||
{ STRING_SIZE_TUPLE("filter"), 2, 2, 1, func_filter_filterout},
|
{ STRING_SIZE_TUPLE("filter"), 2, 2, 1, func_filter_filterout},
|
||||||
{ STRING_SIZE_TUPLE("filter-out"), 2, 2, 1, func_filter_filterout},
|
{ STRING_SIZE_TUPLE("filter-out"), 2, 2, 1, func_filter_filterout},
|
||||||
{ STRING_SIZE_TUPLE("findstring"), 2, 2, 1, func_findstring},
|
{ STRING_SIZE_TUPLE("findstring"), 2, 2, 1, func_findstring},
|
||||||
{ STRING_SIZE_TUPLE("firstword"), 1, 1, 1, func_firstword},
|
{ STRING_SIZE_TUPLE("firstword"), 0, 1, 1, func_firstword},
|
||||||
{ STRING_SIZE_TUPLE("join"), 2, 2, 1, func_join},
|
{ STRING_SIZE_TUPLE("join"), 2, 2, 1, func_join},
|
||||||
{ STRING_SIZE_TUPLE("patsubst"), 3, 3, 1, func_patsubst},
|
{ STRING_SIZE_TUPLE("patsubst"), 3, 3, 1, func_patsubst},
|
||||||
{ STRING_SIZE_TUPLE("shell"), 1, 1, 1, func_shell},
|
{ STRING_SIZE_TUPLE("shell"), 0, 1, 1, func_shell},
|
||||||
{ STRING_SIZE_TUPLE("sort"), 1, 1, 1, func_sort},
|
{ STRING_SIZE_TUPLE("sort"), 0, 1, 1, func_sort},
|
||||||
{ STRING_SIZE_TUPLE("strip"), 1, 1, 1, func_strip},
|
{ STRING_SIZE_TUPLE("strip"), 0, 1, 1, func_strip},
|
||||||
{ STRING_SIZE_TUPLE("wildcard"), 1, 1, 1, func_wildcard},
|
{ STRING_SIZE_TUPLE("wildcard"), 0, 1, 1, func_wildcard},
|
||||||
{ STRING_SIZE_TUPLE("word"), 2, 2, 1, func_word},
|
{ STRING_SIZE_TUPLE("word"), 2, 2, 1, func_word},
|
||||||
{ STRING_SIZE_TUPLE("wordlist"), 3, 3, 1, func_wordlist},
|
{ STRING_SIZE_TUPLE("wordlist"), 3, 3, 1, func_wordlist},
|
||||||
{ STRING_SIZE_TUPLE("words"), 1, 1, 1, func_words},
|
{ STRING_SIZE_TUPLE("words"), 0, 1, 1, func_words},
|
||||||
{ STRING_SIZE_TUPLE("origin"), 1, 1, 1, func_origin},
|
{ STRING_SIZE_TUPLE("origin"), 0, 1, 1, func_origin},
|
||||||
{ STRING_SIZE_TUPLE("foreach"), 3, 3, 0, func_foreach},
|
{ STRING_SIZE_TUPLE("foreach"), 3, 3, 0, func_foreach},
|
||||||
{ STRING_SIZE_TUPLE("call"), 1, 0, 1, func_call},
|
{ STRING_SIZE_TUPLE("call"), 1, 0, 1, func_call},
|
||||||
{ STRING_SIZE_TUPLE("error"), 1, 1, 1, func_error},
|
{ STRING_SIZE_TUPLE("error"), 0, 1, 1, func_error},
|
||||||
{ STRING_SIZE_TUPLE("warning"), 1, 1, 1, func_error},
|
{ STRING_SIZE_TUPLE("warning"), 0, 1, 1, func_error},
|
||||||
{ STRING_SIZE_TUPLE("if"), 2, 3, 0, func_if},
|
{ STRING_SIZE_TUPLE("if"), 2, 3, 0, func_if},
|
||||||
#ifdef EXPERIMENTAL
|
#ifdef EXPERIMENTAL
|
||||||
{ STRING_SIZE_TUPLE("eq"), 2, 2, 1, func_eq},
|
{ STRING_SIZE_TUPLE("eq"), 2, 2, 1, func_eq},
|
||||||
{ STRING_SIZE_TUPLE("not"), 1, 1, 1, func_not},
|
{ STRING_SIZE_TUPLE("not"), 0, 1, 1, func_not},
|
||||||
#endif
|
#endif
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
@ -1688,6 +1688,13 @@ expand_builtin_function (o, argc, argv, entry_p)
|
||||||
_("Insufficient number of arguments (%d) to function `%s'"),
|
_("Insufficient number of arguments (%d) to function `%s'"),
|
||||||
argc, entry_p->name);
|
argc, entry_p->name);
|
||||||
|
|
||||||
|
/* I suppose technically some function could do something with no
|
||||||
|
arguments, but so far none do, so just test it for all functions here
|
||||||
|
rather than in each one. We can change it later if necessary. */
|
||||||
|
|
||||||
|
if (!argc)
|
||||||
|
return o;
|
||||||
|
|
||||||
if (!entry_p->func_ptr)
|
if (!entry_p->func_ptr)
|
||||||
fatal (reading_file, _("Unimplemented on this platform: function `%s'"),
|
fatal (reading_file, _("Unimplemented on this platform: function `%s'"),
|
||||||
entry_p->name);
|
entry_p->name);
|
||||||
|
|
38
main.c
38
main.c
|
@ -1255,17 +1255,47 @@ int main (int argc, char ** argv)
|
||||||
and thus re-read the makefiles, we read standard input
|
and thus re-read the makefiles, we read standard input
|
||||||
into a temporary file and read from that. */
|
into a temporary file and read from that. */
|
||||||
FILE *outfile;
|
FILE *outfile;
|
||||||
|
char *template, *tmpdir;
|
||||||
|
|
||||||
if (stdin_nm)
|
if (stdin_nm)
|
||||||
fatal (NILF, _("Makefile from standard input specified twice."));
|
fatal (NILF, _("Makefile from standard input specified twice."));
|
||||||
|
|
||||||
#ifdef VMS
|
#ifdef VMS
|
||||||
# define TMP_TEMPLATE "sys$scratch:GmXXXXXX"
|
# define DEFAULT_TMPDIR "sys$scratch:"
|
||||||
#else
|
#else
|
||||||
# define TMP_TEMPLATE "/tmp/GmXXXXXX"
|
# ifdef P_tmpdir
|
||||||
|
# define DEFAULT_TMPDIR P_tmpdir
|
||||||
|
# else
|
||||||
|
# define DEFAULT_TMPDIR "/tmp"
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
#define DEFAULT_TMPFILE "GmXXXXXX"
|
||||||
|
|
||||||
outfile = open_tmpfile (&stdin_nm, TMP_TEMPLATE);
|
if (((tmpdir = getenv ("TMPDIR")) == NULL || *tmpdir == '\0')
|
||||||
|
#if defined __MSDOS__ || defined(WINDOWS32)
|
||||||
|
/* These are also used commonly on these platforms. */
|
||||||
|
&& ((tmpdir = getenv ("TEMP")) == NULL || *tmpdir == '\0')
|
||||||
|
&& ((tmpdir = getenv ("TMP")) == NULL || *tmpdir == '\0')
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
tmpdir = DEFAULT_TMPDIR;
|
||||||
|
|
||||||
|
template = (char *) alloca (strlen (tmpdir)
|
||||||
|
+ sizeof (DEFAULT_TMPFILE) + 1);
|
||||||
|
strcpy (template, tmpdir);
|
||||||
|
|
||||||
|
#if defined __MSDOS__ || defined(WINDOWS32)
|
||||||
|
if (strchr ("/\\", template[strlen (template) - 1]) == NULL)
|
||||||
|
strcat (template, "/");
|
||||||
|
#else
|
||||||
|
#ifndef VMS
|
||||||
|
if (template[strlen (template) - 1] != '/')
|
||||||
|
strcat (template, "/");
|
||||||
|
#endif /* !VMS */
|
||||||
|
#endif /* __MSDOS__ || WINDOWS32 */
|
||||||
|
|
||||||
|
strcat (template, DEFAULT_TMPFILE);
|
||||||
|
outfile = open_tmpfile (&stdin_nm, template);
|
||||||
if (outfile == 0)
|
if (outfile == 0)
|
||||||
pfatal_with_name (_("fopen (temporary file)"));
|
pfatal_with_name (_("fopen (temporary file)"));
|
||||||
while (!feof (stdin))
|
while (!feof (stdin))
|
||||||
|
@ -2658,7 +2688,7 @@ print_version ()
|
||||||
|
|
||||||
printf (_(", by Richard Stallman and Roland McGrath.\n\
|
printf (_(", by Richard Stallman and Roland McGrath.\n\
|
||||||
%sBuilt for %s\n\
|
%sBuilt for %s\n\
|
||||||
%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99\n\
|
%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n\
|
||||||
%s\tFree Software Foundation, Inc.\n\
|
%s\tFree Software Foundation, Inc.\n\
|
||||||
%sThis is free software; see the source for copying conditions.\n\
|
%sThis is free software; see the source for copying conditions.\n\
|
||||||
%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
|
%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
|
||||||
|
|
14
make.texinfo
14
make.texinfo
|
@ -6828,27 +6828,27 @@ first character is considered, and values must be comma- or
|
||||||
space-separated.
|
space-separated.
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@item a@var{ll}
|
@item a (@i{all})
|
||||||
All types of debugging output is enabled. This is equivalent to using
|
All types of debugging output is enabled. This is equivalent to using
|
||||||
@samp{-d}.
|
@samp{-d}.
|
||||||
|
|
||||||
@item b@var{asic}
|
@item b (@i{basic})
|
||||||
Basic debugging prints each target that was found to be out-of-date, and
|
Basic debugging prints each target that was found to be out-of-date, and
|
||||||
whether the build was successful or not.
|
whether the build was successful or not.
|
||||||
|
|
||||||
@item v@var{erbose}
|
@item v (@i{verbose})
|
||||||
A level above @samp{basic}; includes messages about which makefiles were
|
A level above @samp{basic}; includes messages about which makefiles were
|
||||||
parsed, prerequisites that did not need to be rebuilt, etc. This option
|
parsed, prerequisites that did not need to be rebuilt, etc. This option
|
||||||
also enables @samp{basic} messages.
|
also enables @samp{basic} messages.
|
||||||
|
|
||||||
@item i@var{mplicit}
|
@item i (@i{implicit})
|
||||||
Prints messages describing the implicit rule searches for each target.
|
Prints messages describing the implicit rule searches for each target.
|
||||||
This option also enables @samp{basic} messages.
|
This option also enables @samp{basic} messages.
|
||||||
|
|
||||||
@item j@var{obs}
|
@item j (@i{jobs})
|
||||||
Prints messages giving details on the invocation of specific subcommands.
|
Prints messages giving details on the invocation of specific subcommands.
|
||||||
|
|
||||||
@item m@var{akefile}
|
@item m (@i{makefile})
|
||||||
By default, the above messages are not enabled while trying to remake
|
By default, the above messages are not enabled while trying to remake
|
||||||
the makefiles. This option enables messages while rebuilding makefiles,
|
the makefiles. This option enables messages while rebuilding makefiles,
|
||||||
too. Note that the @samp{all} option does enable this option. This
|
too. Note that the @samp{all} option does enable this option. This
|
||||||
|
@ -6956,6 +6956,8 @@ Some Files}.@refill
|
||||||
@cindex @code{-p}
|
@cindex @code{-p}
|
||||||
@itemx --print-data-base
|
@itemx --print-data-base
|
||||||
@cindex @code{--print-data-base}
|
@cindex @code{--print-data-base}
|
||||||
|
@cindex data base of @code{make} rules
|
||||||
|
@cindex predefined rules and variables, printing
|
||||||
Print the data base (rules and variable values) that results from
|
Print the data base (rules and variable values) that results from
|
||||||
reading the makefiles; then execute as usual or as otherwise specified.
|
reading the makefiles; then execute as usual or as otherwise specified.
|
||||||
This also prints the version information given by the @samp{-v} switch
|
This also prints the version information given by the @samp{-v} switch
|
||||||
|
|
8
remake.c
8
remake.c
|
@ -1038,6 +1038,7 @@ f_mtime (file, search)
|
||||||
|
|
||||||
char *arname, *memname;
|
char *arname, *memname;
|
||||||
struct file *arfile;
|
struct file *arfile;
|
||||||
|
time_t memtime;
|
||||||
int arname_used = 0;
|
int arname_used = 0;
|
||||||
|
|
||||||
/* Find the archive's name. */
|
/* Find the archive's name. */
|
||||||
|
@ -1097,7 +1098,12 @@ f_mtime (file, search)
|
||||||
/* The archive doesn't exist, so it's members don't exist either. */
|
/* The archive doesn't exist, so it's members don't exist either. */
|
||||||
return (FILE_TIMESTAMP) -1;
|
return (FILE_TIMESTAMP) -1;
|
||||||
|
|
||||||
mtime = FILE_TIMESTAMP_FROM_S_AND_NS (ar_member_date (file->hname), 0);
|
memtime = ar_member_date (file->hname);
|
||||||
|
if (memtime == (time_t) -1)
|
||||||
|
/* The archive member doesn't exist. */
|
||||||
|
return (FILE_TIMESTAMP) -1;
|
||||||
|
|
||||||
|
mtime = FILE_TIMESTAMP_FROM_S_AND_NS (memtime, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,3 +1,18 @@
|
||||||
|
2000-04-11 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* scripts/functions/strip: Test empty value to strip (PR/1689).
|
||||||
|
|
||||||
|
2000-04-08 Eli Zaretskii <eliz@is.elta.co.il>
|
||||||
|
|
||||||
|
* scripts/features/reinvoke: Sleep before updating the target
|
||||||
|
files in the first test, to ensure its time stamp really gets
|
||||||
|
newer; otherwise Make might re-exec more than once.
|
||||||
|
|
||||||
|
2000-04-07 Eli Zaretskii <eliz@is.elta.co.il>
|
||||||
|
|
||||||
|
* scripts/features/double_colon: Don't run the parallel tests if
|
||||||
|
parallel jobs aren't supported.
|
||||||
|
|
||||||
2000-04-04 Paul D. Smith <psmith@gnu.org>
|
2000-04-04 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
* scripts/functions/word: wordlist doesn't swap arguments anymore.
|
* scripts/functions/word: wordlist doesn't swap arguments anymore.
|
||||||
|
|
|
@ -51,9 +51,11 @@ $answer = "aaa\nbbb\n";
|
||||||
|
|
||||||
# TEST 1: As above, in parallel
|
# TEST 1: As above, in parallel
|
||||||
|
|
||||||
&run_make_with_options($makefile, "-j10 all", &get_logfile, 0);
|
if ($parallel_jobs) {
|
||||||
$answer = "aaa\nbbb\n";
|
&run_make_with_options($makefile, "-j10 all", &get_logfile, 0);
|
||||||
&compare_output($answer, &get_logfile(1));
|
$answer = "aaa\nbbb\n";
|
||||||
|
&compare_output($answer, &get_logfile(1));
|
||||||
|
}
|
||||||
|
|
||||||
# TEST 2: A simple double-colon rule that is the goal target
|
# TEST 2: A simple double-colon rule that is the goal target
|
||||||
|
|
||||||
|
@ -63,9 +65,11 @@ $answer = "aaa\naaa done\nbbb\n";
|
||||||
|
|
||||||
# TEST 3: As above, in parallel
|
# TEST 3: As above, in parallel
|
||||||
|
|
||||||
&run_make_with_options($makefile, "-j10 bar", &get_logfile, 0);
|
if ($parallel_jobs) {
|
||||||
$answer = "aaa\naaa done\nbbb\n";
|
&run_make_with_options($makefile, "-j10 bar", &get_logfile, 0);
|
||||||
&compare_output($answer, &get_logfile(1));
|
$answer = "aaa\naaa done\nbbb\n";
|
||||||
|
&compare_output($answer, &get_logfile(1));
|
||||||
|
}
|
||||||
|
|
||||||
# TEST 4: Each double-colon rule is supposed to be run individually
|
# TEST 4: Each double-colon rule is supposed to be run individually
|
||||||
|
|
||||||
|
@ -78,9 +82,11 @@ $answer = "f1.h\nfoo FIRST\n";
|
||||||
|
|
||||||
# TEST 5: Again, in parallel.
|
# TEST 5: Again, in parallel.
|
||||||
|
|
||||||
&run_make_with_options($makefile, "-j10 foo", &get_logfile, 0);
|
if ($parallel_jobs) {
|
||||||
$answer = "f1.h\nfoo FIRST\n";
|
&run_make_with_options($makefile, "-j10 foo", &get_logfile, 0);
|
||||||
&compare_output($answer, &get_logfile(1));
|
$answer = "f1.h\nfoo FIRST\n";
|
||||||
|
&compare_output($answer, &get_logfile(1));
|
||||||
|
}
|
||||||
|
|
||||||
# TEST 6: Each double-colon rule is supposed to be run individually
|
# TEST 6: Each double-colon rule is supposed to be run individually
|
||||||
|
|
||||||
|
@ -94,9 +100,11 @@ $answer = "f2.h\nfoo SECOND\n";
|
||||||
|
|
||||||
# TEST 7: Again, in parallel.
|
# TEST 7: Again, in parallel.
|
||||||
|
|
||||||
&run_make_with_options($makefile, "-j10 foo", &get_logfile, 0);
|
if ($parallel_jobs) {
|
||||||
$answer = "f2.h\nfoo SECOND\n";
|
&run_make_with_options($makefile, "-j10 foo", &get_logfile, 0);
|
||||||
&compare_output($answer, &get_logfile(1));
|
$answer = "f2.h\nfoo SECOND\n";
|
||||||
|
&compare_output($answer, &get_logfile(1));
|
||||||
|
}
|
||||||
|
|
||||||
# TEST 8: Test circular dependency check; PR/1671
|
# TEST 8: Test circular dependency check; PR/1671
|
||||||
|
|
||||||
|
@ -108,9 +116,11 @@ $answer = "ok\n$make_name: Circular d <- d dependency dropped.\noops\n";
|
||||||
#
|
#
|
||||||
# Hmm... further testing indicates this might be timing-dependent?
|
# Hmm... further testing indicates this might be timing-dependent?
|
||||||
#
|
#
|
||||||
#&run_make_with_options($makefile, "-j10 biz", &get_logfile, 0);
|
#if ($parallel_jobs) {
|
||||||
#$answer = "aaa\ntwo\nbbb\n";
|
# &run_make_with_options($makefile, "-j10 biz", &get_logfile, 0);
|
||||||
#&compare_output($answer, &get_logfile(1));
|
# $answer = "aaa\ntwo\nbbb\n";
|
||||||
|
# &compare_output($answer, &get_logfile(1));
|
||||||
|
#}
|
||||||
|
|
||||||
unlink('foo','f1.h','f2.h');
|
unlink('foo','f1.h','f2.h');
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ all: ; \@echo 'running rules.'
|
||||||
|
|
||||||
$makefile $makefile2: $makefile_orig
|
$makefile $makefile2: $makefile_orig
|
||||||
\@echo 'rebuilding \$\@.'
|
\@echo 'rebuilding \$\@.'
|
||||||
|
\@sleep $wtime
|
||||||
\@echo >> \$\@
|
\@echo >> \$\@
|
||||||
|
|
||||||
include $makefile2
|
include $makefile2
|
||||||
|
@ -30,7 +31,7 @@ close(MAKEFILE);
|
||||||
|
|
||||||
# Sleep 2 seconds for DOS/Windows FAT volumes which have 2-second
|
# Sleep 2 seconds for DOS/Windows FAT volumes which have 2-second
|
||||||
# granularity of file times.
|
# granularity of file times.
|
||||||
sleep(2);
|
sleep($wtime);
|
||||||
|
|
||||||
&touch("$makefile_orig");
|
&touch("$makefile_orig");
|
||||||
|
|
||||||
|
@ -67,7 +68,7 @@ close(MAKEFILE);
|
||||||
|
|
||||||
&touch('b');
|
&touch('b');
|
||||||
&touch('a');
|
&touch('a');
|
||||||
sleep(2);
|
sleep($wtime);
|
||||||
&touch('c');
|
&touch('c');
|
||||||
|
|
||||||
# First try with the file that's not updated "once removed" from the
|
# First try with the file that's not updated "once removed" from the
|
||||||
|
|
|
@ -34,6 +34,8 @@ all:
|
||||||
@echo '$(strip $(TEST2) )'
|
@echo '$(strip $(TEST2) )'
|
||||||
@echo '$(strip $(TEST3) )'
|
@echo '$(strip $(TEST3) )'
|
||||||
|
|
||||||
|
space: ; @echo '$(strip ) $(strip )'
|
||||||
|
|
||||||
EOMAKE
|
EOMAKE
|
||||||
|
|
||||||
# END of Contents of MAKEFILE
|
# END of Contents of MAKEFILE
|
||||||
|
@ -41,13 +43,15 @@ EOMAKE
|
||||||
close(MAKEFILE);
|
close(MAKEFILE);
|
||||||
|
|
||||||
&run_make_with_options($makefile,"",&get_logfile);
|
&run_make_with_options($makefile,"",&get_logfile);
|
||||||
|
|
||||||
# Create the answer to what should be produced by this Makefile
|
|
||||||
$answer = "\"Is this TERMINAL fun? What makes you believe is this terminal fun? JAPAN is a WONDERFUL planet -- I wonder if we will ever reach their level of COMPARATIVE SHOPPING...\"
|
$answer = "\"Is this TERMINAL fun? What makes you believe is this terminal fun? JAPAN is a WONDERFUL planet -- I wonder if we will ever reach their level of COMPARATIVE SHOPPING...\"
|
||||||
try this and this
|
try this and this
|
||||||
and these test out some blank lines
|
and these test out some blank lines
|
||||||
";
|
";
|
||||||
|
&compare_output($answer,&get_logfile(1));
|
||||||
|
|
||||||
|
|
||||||
|
&run_make_with_options($makefile,"space",&get_logfile);
|
||||||
|
$answer = " \n";
|
||||||
&compare_output($answer,&get_logfile(1));
|
&compare_output($answer,&get_logfile(1));
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -7,11 +7,10 @@
|
||||||
#include "proc.h"
|
#include "proc.h"
|
||||||
#include "w32err.h"
|
#include "w32err.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
static char *make_command_line(char *shell_name, char *exec_path, char **argv);
|
static char *make_command_line(char *shell_name, char *exec_path, char **argv);
|
||||||
|
|
||||||
extern int debug_flag; /* from make */
|
|
||||||
|
|
||||||
typedef struct sub_process_t {
|
typedef struct sub_process_t {
|
||||||
int sv_stdin[2];
|
int sv_stdin[2];
|
||||||
int sv_stdout[2];
|
int sv_stdout[2];
|
||||||
|
@ -506,10 +505,9 @@ process_begin(
|
||||||
if (envblk) free(envblk);
|
if (envblk) free(envblk);
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
if (debug_flag)
|
DB (DB_JOBS, ("CreateProcess(%s,%s,...)\n",
|
||||||
printf("CreateProcess(%s,%s,...)\n",
|
exec_path ? exec_path : "NULL",
|
||||||
exec_path ? exec_path : "NULL",
|
command_line ? command_line : "NULL"));
|
||||||
command_line ? command_line : "NULL");
|
|
||||||
if (CreateProcess(
|
if (CreateProcess(
|
||||||
exec_path,
|
exec_path,
|
||||||
command_line,
|
command_line,
|
||||||
|
|
Loading…
Reference in a new issue