.
authorRoland McGrath <roland@redhat.com>
Tue, 7 Mar 1995 23:44:43 +0000 (23:44 +0000)
committerRoland McGrath <roland@redhat.com>
Tue, 7 Mar 1995 23:44:43 +0000 (23:44 +0000)
.cvsignore [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
Makefile.in [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
aclocal.m4 [new file with mode: 0644]
config.h.in [new file with mode: 0644]
configure [new file with mode: 0755]
loadtest.c [new file with mode: 0644]
version.c [new file with mode: 0644]

diff --git a/.cvsignore b/.cvsignore
new file mode 100644 (file)
index 0000000..51fec57
--- /dev/null
@@ -0,0 +1,15 @@
+*.gz *.Z *.tar *.tgz
+=*
+TODO COPYING*
+make-3* make-test*
+*.info *.info-*
+stamp-*
+makebook*
+
+*.dep *.dvi *.toc *.aux
+*.cp *.cps *.fn *.fns *.vr *.vrs *.tp *.tps *.ky *.kys *.pg *.pgs
+
+sun4 i386 i386-netbsd hp300-netbsd hp300 rs6000 sun3 news800 amiga
+hp700 hp834
+
+customs
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..743ae7c
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,8117 @@
+Tue Mar  7 17:31:06 1995  Roland McGrath  <roland@geech.gnu.ai.mit.edu>
+
+       * main.c (decode_switches): If non-option arg is "-", ignore it.
+
+Mon Mar  6 23:57:38 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.72.8.
+
+Wed Feb 22 21:26:36 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.72.7.
+
+Tue Feb 21 22:10:43 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * main.c (main): Pass missing arg to tmpnam.
+
+       * configure.in: Check for strsignal.
+       * job.c (child_error): Use strsignal.
+       * main.c (main): Don't call signame_init #ifdef HAVE_STRSIGNAL.
+
+       * misc.c (strerror): Fix swapped args in sprintf.
+
+Mon Feb 13 11:50:08 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * configure.in (CFLAGS, LDFLAGS): Don't set these variables.
+
+Fri Feb 10 18:44:12 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * main.c (print_version): Add 95 to copyright years.
+
+       * Version 3.72.6.
+
+       * job.c (start_job_command): Remember to call notice_finsihed_file
+       under -n when not recursing.  To do this, consolidate that code
+       under the empty command case and goto there for the -n case.
+
+Tue Feb  7 13:36:03 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * make.h [! STDC_HEADERS]: Don't declare qsort.  Sun headers
+       declare it int.
+
+Mon Feb  6 17:37:01 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * read.c (read_makefile): For bogus line starting with tab, ignore
+       it if blank after removing comments.
+
+       * main.c: Cast results of `alloca' to `char *'.
+       * expand.c: Likewise.
+
+Sun Feb  5 18:35:46 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.72.5.
+
+       * configure.in: Check for mktemp.
+       * main.c (main) [! HAVE_MKTEMP]: Use tmpnam instead of mktemp.
+
+       * configure.in (make_cv_sysconf_open_max): New check for `sysconf
+       (_SC_OPEN_MAX)'.
+       * acconfig.h: Added #undef HAVE_SYSCONF_OPEN_MAX.
+       * job.c [HAVE_SYSCONF_OPEN_MAX] (getdtablesize): Define as macro
+       using sysconf.
+
+Fri Jan 27 04:42:09 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * remake.c (update_file_1): When !MUST_MAKE, don't set
+       FILE->update_status to zero before calling notice_finished_file.
+       (notice_finished_file): Touch only when FILE->update_status is zero.
+       (remake_file): Set FILE->update_status to zero after not calling
+       execute_file_command and deciding to touch instead.
+
+Thu Jan 26 01:29:32 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * main.c (debug_signal_handler): New function; toggles debug_flag.
+       (main): Handle SIGUSR1 with that.
+
+Mon Jan 16 15:46:56 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * compatMakefile (realclean): Remove Info files.
+
+Sun Jan 15 08:23:09 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.72.4.
+
+       * job.c (start_job_command): Save and restore environ around vfork
+        call.
+       (search_path): Function #if 0'd out.
+       (exec_command): Use execvp instead of search_path.
+
+       * expand.c (variable_expand): Rewrote computed variable name and
+       substitution reference handling to be simpler.  First expand the
+       entire text between the parens if it contains any $s, then examine
+       the result of that for subtitution references and do no further
+       expansion while parsing them.
+
+       * job.c (construct_command_argv_internal): Handle " quoting too,
+       when no backslash, $ or ` characters appear inside the quotes.
+
+       * configure.in (union wait check): If WEXITSTATUS and WTERMSIG are
+        defined, just use int.
+
+Tue Jan 10 06:27:27 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * default.c (default_variables) [__hpux]: Remove special
+       definition of ARFLAGS.  Existence of the `f' flag is not
+       consistent across HPUX versions; and one might be using GNU ar
+       anyway.
+
+       * compatMakefile (clean): Don't remove Info files.
+
+       * compatMakefile (check): Remove gratuitous target declaration.
+
+Sat Jan  7 11:38:23 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * compatMakefile (ETAGS, CTAGS): Don't use -t.
+
+       * arscan.c (ar_name_equal) [cray]: Subtract 1 like [__hpux].
+
+       * main.c (decode_switches): For --help, print usage to stdout.
+
+Mon Dec  5 12:42:18 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.72.3.
+
+       * remake.c (update_file_1): Do set_command_state (FILE,
+       cs_not_started) only if old state was deps_running.
+
+Mon Nov 28 14:24:03 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * job.c (start_waiting_job): Use set_command_state.
+
+       * build.template (CPPFLAGS): New variable.
+       (prefix, exec_prefix): Set from @...@.
+       (compilation loop): Pass $CPPFLAGS to compiler.
+
+       * GNUmakefile (build.sh.in): Make it executable.
+
+       * GNUmakefile (globfiles): Add configure.in, configure.
+
+       * Version 3.72.2.
+
+       * configure.in (AC_OUTPUT): Don't write glob/Makefile.
+
+       * configure.in (AC_CHECK_SYMBOL): Use AC_DEFINE_UNQUOTED.
+
+       * configure.in: Don't check for ranlib.
+
+Tue Nov 22 22:42:40 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * remake.c (notice_finished_file): Only mark also_make's as
+       updated if really ran cmds.
+
+Tue Nov 15 06:32:46 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * configure.in: Put dnls before random whitespace.
+
+Sun Nov 13 05:02:25 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * compatMakefile (CPPFLAGS): New variable, set from @CPPFLAGS@.
+       (RANLIB): Variable removed.
+       (prefix, exec_prefix): Set these from @...@.
+       (.c.o): Use $(CPPFLAGS).
+       (glob/libglob.a): Don't pass down variables to sub-make.
+       glob/Makefile should be configured properly by configure.
+       (distclean): Remove config.log and config.cache (autoconf stuff).
+
+Mon Nov  7 13:58:06 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * acconfig.h: Add #undef HAVE_UNION_WAIT.
+       * configure.in: Converted to Autoconf v2.
+       * dir.c: Test HAVE_DIRENT_H, HAVE_SYS_DIR_H, HAVE_NDIR_H instead
+       of DIRENT, SYSDIR, NDIR.
+       * build.sh.in (prefix, exec_prefix): Set these from @...@.
+       (CPPFLAGS): New variable, set from @CPPFLAGS@.
+       (compiling loop): Pass $CPPFLAGS before $CFLAGS.
+       * install.sh: File renamed to install-sh.
+
+       * main.c (define_makeflags): When no flags, set WORDS to zero.
+
+Sun Nov  6 18:34:01 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.72.1.
+
+       * main.c (define_makeflags): Terminate properly when FLAGSTRING is
+        empty.
+
+Fri Nov  4 16:02:51 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.72.
+
+Tue Nov  1 01:18:10 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.71.5.
+
+       * job.c (start_job_command): When ARGV is nil, only set
+       update_state and call notice_finished_file if job_next_command
+       returns zero.
+
+       * job.c (start_job_command): Call notice_finished_file for empty
+        command line.
+
+Thu Oct 27 02:02:45 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * file.c (snap_deps): Set COMMANDS_SILENT for .SILENT, not
+        COMMANDS_NOERROR.
+
+Wed Oct 26 02:14:10 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.71.4.
+
+Tue Oct 25 22:49:24 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * file.c (snap_deps): Set command_flags bits in all :: entries.
+
+Mon Oct 24 18:47:50 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * make.h (posix_pedantic): Declare it.
+       * main.c (main): Move checks .IGNORE, .SILENT, .POSIX to
+        snap_deps.
+       * file.c (snap_deps): Check .IGNORE, .SILENT, .POSIX here instead
+       of in main.  If .IGNORE has deps, OR COMMANDS_NOERROR into their
+       command_flags and don't set -i.  Likewise .SILENT.
+       * job.c (start_job_command): In FLAGS initialization, OR in
+       CHILD->file->command_flags.
+       * file.h (struct file): New member `command_flags'.
+
+Sun Oct 16 01:01:51 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * main.c (switches): Bump flag values for --no-print-directory and
+       --warn-undefined-variables, so neither is 1 (which indicates a
+       nonoption argument).
+
+Sat Oct 15 23:39:48 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * main.c (main): Add missing code in .IGNORE test.
+
+Mon Oct 10 04:09:03 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * variable.c (define_automatic_variables): Define +D and +F.
+
+Sat Oct  1 04:07:48 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * main.c (main): Define hidden automatic variable with command
+       vars, and MAKEOVERRIDES to a reference to that.
+       (define_makeflags): If posix_pedantic, write a reference to that
+       instead.
+
+Thu Sep 29 00:14:26 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * main.c (posix_pedantic): New variable.
+       (main): Set posix_pedantic if .POSIX is a target.
+       Fix .IGNORE and .SILENT checks to require is_target.
+
+       * commands.c (set_file_variables): Define new automatic variable
+       $+, like $^ but before calling uniquize_deps.
+
+       * job.c (reap_children): Call delete_child_targets for non-signal
+       error if .DELETE_ON_ERROR is a target.
+
+Tue Sep 27 01:57:14 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.71.3.
+
+Mon Sep 26 18:16:55 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * job.c (reap_children): Don't change C->file->command_state when
+       dying.  Test it only after calling start_job_command for a new
+       command line.  When no more cmds, just set C->file->update_status.
+       (start_job_command): When the last line is empty or under -n, set
+       C->file->update_status.
+       (start_waiting_job): Grok cs_not_started after start_job_command
+       as success.
+       (new_job): Set C->file->update_status when there are no cmds.
+       (job_next_command): When out of lines, don't set
+       CHILD->file->update_status or CHILD->file->command_state.
+
+       * main.c (quote_as_word): Renamed from shell_quote.  Take new arg;
+       if nonzero, also double $s.
+       (main): Define MAKEOVERRIDES from command_variables here.
+       (define_makeflags): Don't use command_variables here; instead write a
+       reference $(MAKEOVERRIDES) in MAKEFLAGS.  Make vars recursive.
+
+       * dir.c [__MSDOS__]: Fixed typo.
+
+       * vpath.c (selective_vpath_search): Reset EXISTS when stat fails.
+
+Sat Sep 10 03:01:35 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * remake.c: Include <assert.h> and use assert instead of printfs
+        and abort.
+
+       * main.c (decode_switches): Loop until optind hits ARGC, not just
+       until getopt_long returns EOF.  Initialize C to zero before loop;
+       in loop if C is EOF, set optarg from ARGV[optind++], else call
+       getopt_long.
+       (decode_env_switches): Use variable_expand instead of
+       allocated_variable_expand.  Allocate a fresh buffer to copy split
+       words into; scan characters by hand to break words and
+       debackslashify.
+       (shell_quote): New function.
+       (define_makeflags): Allocate doubled space for switch args, and command
+       variable names and values; use shell_quote to quote those things.
+
+Fri Sep  9 01:37:47 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * Version 3.71.2.
+
+       * acconfig.h: Add HAVE_SYS_SIGLIST and HAVE__SYS_SIGLIST.
+
+       * main.c (decode_switches): The non-option return from getopt is
+       1, not 0.
+       (command_variables): New type and variable.
+       (decode_switches, decode_env_switches): After making a variable
+       definition, record the struct variable pointer in the
+       command_variables chain.
+       (define_makeflags): If ALL, write variable definitions for
+       command_variables.
+
+       * main.c (other_args): Variable removed.
+       (goals, lastgoal): New static variables (moved from auto in main).
+       (main): Don't process OTHER_ARGS at all.
+       Don't set variable MAKEOVERRIDES at all; define MAKE to just
+        $(MAKE_COMMAND).
+       (init_switches): Prepend a - {return in order} instead of a +
+       {require order}.
+       (decode_switches): Don't set OTHER_ARGS at all.
+       Grok '\0' return from getopt_long as non-option argument; try
+       variable definition and (if !ENV) enter goal targets here.
+       (decode_env_switches): Use allocated_variable_expand to store value.
+       Use find_next_token to simplify word-splitting loop.  Don't
+       prepend a dash to uninterpreted value.  Instead, if split into
+       only one word, try variable definition and failing that prepend a
+       dash to the word and pass it to decode_switches as a single arg.
+
+Wed Sep  7 03:02:46 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       * remake.c (notice_finished_file): Only recheck modtimes if
+       FILE->command_state was cs_running on entry (meaning the commands
+       actually just ran).
+       (update_file_1): Whenever we set FILE->update_status, call
+       notice_finished_file instead of just set_command_state.
+       * job.c (start_job_command): Whenever we set
+       CHILD->file->update_status, call notice_finished_file instead of
+       just set_command_state.
+
+Tue Sep  6 19:13:54 1994  Roland McGrath  <roland@geech.gnu.ai.mit.edu>
+
+       * default.c: Add missing ".
+
+       * job.c: Changed all assignments of command_state members to calls
+       to set_command_state.
+       * remake.c: Likewise.
+       * file.c (set_command_state): New function.
+       * file.h: Declare set_command_state.
+
+       * main.c (init_switches): Put a + first in options.
+
+Mon Jul 25 18:07:46 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+       Merge MSDOS/GO32 port from DJ Delorie <dj@ctron.com>.
+       * vpath.c: Changed all uses of ':' to PATH_SEPARATOR_CHAR.
+       * main.c (directory_before_chdir): New variable, moved out of main
+        (was local).
+       (main) [__MSDOS__]: Look for \ or : to delimit last component of
+       PROGRAM.  Don't frob ARGV[0] before setting MAKE_COMMAND variable.
+       (die): Change back to `directory_before_chdir' before dying.
+       * make.h (PATH_SEPARATOR_CHAR): New macro; differing defns for
+        [__MSDOS__] and not.
+       * job.c [__MSDOS__]: Include <process.h>.
+       [__MSDOS__] (dos_pid, dos_status, dos_bname, dos_bename,
+       dos_batch_file): New variables.
+       (reap_children) [__MSDOS__]: Don't call wait; just examine those vars.
+       (unblock_sigs) [__MSDOS__]: Do nothing.
+       (start_job_command) [__MSDOS__]: Use spawnvpe instead of vfork & exec.
+       (load_too_high) [__MSDOS__]: Always return true.
+       (search_path) [__MSDOS__]: Check for : or / in FILE to punt.
+       Use PATH_SEPARATOR_CHAR instead of ':'.
+       (construct_command_argv_internal) [__MSDOS__]: Wholly different
+       values for sh_chars and sh_cmds.  Wholly new code to handle shell
+       scripts.
+       * function.c (expand_function: `shell') [__MSDOS__]: Wholly new
+        implementation.
+       * dir.c [__MSDOS__] (dosify): New function.
+       (dir_contents_file_exists_p) [__MSDOS__]: Call it on FILENAME and
+       process the result instead of FILENAME itself.
+       (file_impossible_p) [__MSDOS__]: Likewise.
+       * default.c [__MSDOS__]: Define GCC_IS_NATIVE.
+       (default_suffix_rules) [__MSDOS__]: Use `y_tab.c' instead of `y.tab.c'.
+       (default_variables) [GCC_IS_NATIVE]: Set CC and CXX to `gcc', YACC to
+       `bison -y', and LEX to `flex'.
+       * configure.bat, configh.dos: New files.
+       * commands.c (fatal_error_signal) [__MSDOS__]: Just remove
+       intermediates and exit.
+
+       * commands.c (set_file_variables): Add parens in length
+       computation in .SUFFIXES dep loop to quiet compiler warning.  From
+       Jim Meyering.
+
+       * read.c (read_makefile): Free FILENAME if we allocated it.  From
+        Jim Meyering.
+
+Mon Jul  4 17:47:08 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * misc.c (safe_stat): New function, EINTR-safe wrapper around stat.
+       * vpath.c (selective_vpath_search): Use safe_stat in place of stat.
+       * read.c (construct_include_path): Use safe_stat in place of stat.
+       * job.c (search_path): Use safe_stat in place of stat.
+       * dir.c (find_directory): Use safe_stat in place of stat.
+       * commands.c (delete_target): Use safe_stat in place of stat.
+       * arscan.c (ar_member_touch) [EINTR]: Do EINTR looping around fstat.
+       * remake.c (name_mtime): Use safe_stat in place of stat.
+       (touch_file) [EINTR]: Do EINTR looping around fstat.
+
+Fri Jun 24 05:40:24 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Check for a shell command first, and
+       then strip leading tabs before further checking if it's not a
+       shell command line.
+
+       * make.h [__arm]: Undefine POSIX.
+       [!__GNU_LIBRARY__ && !POSIX && !_POSIX_VERSION]: Don't declare system
+       functions that return int.
+
+       * job.c (construct_command_argv_internal): After swallowing a
+       backslash-newline combination, if INSTRING is set goto string_char
+       (new label) for normal INSTRING handling code.
+
+Sat Jun  4 01:11:20 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * configure.in: Don't check for sys_siglist and _sys_siglist with
+       AC_HAVE_FUNCS.  Instead use two AC_COMPILE_CHECKs.
+
+Mon May 23 18:20:38 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.71.1 released.
+
+       * make.h [!__GNU_LIBRARY__ && !POSIX]: Also test #ifndef
+       _POSIX_VERSION for these declarations.
+
+       * misc.c [GETLOADAVG_PRIVILEGED] [POSIX]: Remove bogus #ifndefs
+       around #undefs of HAVE_SETREUID and HAVE_SETREGID.
+
+Sat May 21 16:26:38 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.71 released.
+
+       * misc.c [GETLOADAVG_PRIVILEGED] [POSIX]: Don't test [HAVE_SETUID]
+       and [HAVE_SETGID].  Every system has those, and configure doesn't
+       check for them.
+
+       * make.h [_POSIX_VERSION]: Don't #define POSIX #ifdef ultrix.
+
+       * compatMakefile (loadavg): Depend on and use loadavg.c instead of
+       getloadavg.c.
+       (loadavg.c): Link or copy it from getloadavg.c.
+       (distclean): Remove loadavg.c.
+
+Mon May 16 22:59:04 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.70.4.
+
+       * misc.c [GETLOADAVG_PRIVILEGED] [! POSIX]: Undefine HAVE_SETEUID
+       and HAVE_SETEGID.
+
+       * default.c (default_terminal_rules): In SCCS rules, put
+       $(SCCS_OUTPUT_OPTION) before $<.  On some systems -G is grokked
+       only before the file name.
+       * configure.in (SCCS_GET_MINUS_G check): Put -G flag before file name.
+
+Tue May 10 16:27:38 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): Swallow
+       backslash-newline combinations inside '' strings too.
+
+Thu May  5 04:15:10 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (do_define): Call collapse_continuations on each line
+       before all else.
+
+Mon Apr 25 19:32:02 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): Notice newline inside
+       '' string when RESTP is non-null.
+
+Fri Apr 22 17:33:30 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.70.3.
+
+       * remake.c (update_goal_chain): Reset FILE to G->file after the
+       double-colon loop so it is never null for following code.
+
+       * read.c (read_makefile): Fix `override define' parsing to skip
+       whitespace after `define' properly.
+
+       * compatMakefile (srcdir): Define as @srcdir@; don't reference
+       $(VPATH).
+       (glob/Makefile): New target.
+
+Thu Apr 21 16:16:55 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.70.2.
+
+       * misc.c (remove_comments): Use find_char_unquote.
+       * make.h (find_char_unquote): Declare it.
+       * read.c (find_char_unquote): New function, generalized from
+       find_percent.
+       (find_percent, find_semicolon, parse_file_seq): Use that.
+
+Wed Apr 20 18:42:39 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * implicit.c (pattern_search): Always allocate new storage for
+       FILE->stem.  It is not safe to store STEM's address because it
+       might be auto storage.
+
+       * configure.in: Check for seteuid and setegid.
+       * misc.c [HAVE_SETEUID]: Declare seteuid.
+       [HAVE_SETEGID]: Declare setegid.
+       (make_access, user_access) [HAVE_SETEUID]: Use seteuid.
+       [HAVE_SETEGID]: Use setegid.
+
+       * remake.c (update_goal_chain): Set STATUS to FILE->update_status,
+       to preserve whether it's 2 for error or 1 for -q trigger.  When
+       STATUS gets nonzero and -q is set, always stop immediately.
+       * main.c (main, decode_switches): Die with 2 for errors.
+       (main): Accept 2 return from update_goal_chain and die with that.
+       * misc.c (fatal, makefile_fatal): Die with 2; 1 is reserved for -q
+       answer.
+       * job.c (reap_children): Die with 2 for error.
+       (start_job_command): Set update_status to 2 for error.  Set it to
+       1 when we would run a command and question_flag is set.
+
+       * read.c (read_makefile): Don't mark makefiles as precious.  Just
+       like other targets, they can be left inconsistent and in need of
+       remaking by aborted commands.
+
+       * read.c (read_makefile): Write no error msg for -include file.
+
+Tue Apr  5 05:22:19 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * commands.c (fatal_error_signal): Don't unblock signals.
+
+       * file.h (struct file): Change member `double_colon' from flag to
+       `struct file *'.
+       * read.c (record_files): Set double_colon pointer instead of flag.
+       * main.c (main): When disqualifying makefiles for updating, use
+       double_colon pointer to find all entries for a file.
+       * file.c (enter_file): If there is already a double-colon entry
+       for the file, set NEW->double_colon to that pointer.
+       (file_hash_enter): Use FILE->double_colon to find all entries to
+       set name.
+       * remake.c (update_goal_chain): Do inner loop on double-colon entries.
+       (update_file): Use FILE->double_colon pointer to find all entries.
+       (f_mtime): Likewise.
+       (notice_finished_file): Propagate mtime change to all entries.
+
+       * variable.c (try_variable_definition): Return after abort.
+
+Fri Apr  1 18:44:15 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Remove unused variable.
+       (parse_file_seq): When removing an elt that is just `)', properly
+       fix up the previous elt's next pointer.
+
+Mon Mar 28 18:31:49 1994  Roland McGrath  (roland@mole.gnu.ai.mit.edu)
+
+       * configure.in: Do AC_SET_MAKE.
+       * GNUmakefile (Makefile.in): Edit MAKE assignment into @SET_MAKE@.
+
+Fri Mar  4 00:02:32 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * function.c (subst_expand): If BY_WORD or SUFFIX_ONLY is set and
+       the search string is the empty string, find a match at the end of
+       each word (using end_of_token in place of sindex).
+
+       * misc.c (end_of_token): Don't treat backslashes specially; you
+       can no longer escape blanks with backslashes in export, unexport,
+       and vpath.  This was never documented anyway.
+
+Thu Mar  3 23:53:46 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Variable name for `define' is not just
+       first token; use whole rest of line and strip trailing blanks.
+
+Wed Feb 16 16:03:45 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.70.1.
+
+       * read.c (read_makefile): Add -d msg stating args.
+
+       * read.c (read_makefile): Use isspace to skip over leading
+       whitespace, and explicitly avoid skipping over tabs.  Don't want
+       to skip just spaces though; formfeeds et al should be skipped.
+
+       * default.c (default_variables) [__hpux]: Add f in ARFLAGS.
+
+       * arscan.c (ar_name_equal) [__hpux]: Subtract 2 instead of 1 from
+       sizeof ar_name for max length to compare.
+
+       * misc.c [GETLOADAVG_PRIVILEGED] [POSIX]: Undefine HAVE_SETREUID
+       #ifdef HAVE_SETUID; likewise HAVE_SETREGID and HAVE_SETGID.
+
+       * main.c (main): Call user_access after setting `program', in case
+       it needs to use it in an error message.
+
+       * read.c (read_makefile): Ignore an empty line starting with a tab.
+
+Thu Feb 10 21:45:31 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * configure.in (AC_SYS_SIGLIST_DECLARED): Use this instead of
+       AC_COMPILE_CHECK that is now its contents.
+
+Fri Feb  4 16:28:54 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h: #undef strerror after #include <string.h>.
+       [! ANSI_STRING]: Declare strerror.
+
+Thu Feb  3 02:21:22 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * misc.c (strerror): #undef any macro before function definition.
+
+Mon Jan 31 19:07:23 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * variable.c (try_variable_definition): Calculate BEG before loop
+       to strip blanks by decrementing END.  Don't decr END to before BEG.
+
+       * read.c (read_makefile): Skip over leading space characters, but
+       not tabs, after removing continuations and comments (it used to
+       use isspace).
+
+Tue Jan 25 16:45:05 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * variable.c (define_automatic_variables): In $(@D) et al, use
+       patsubst to remove trailing slash.
+
+       * commands.c (delete_target): New function, broken out of
+       delete_child_targets.  Check for archive members and give special msg.
+       (delete_child_targets): Use delete_target.
+
+Mon Jan 17 17:03:22 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * default.c (default_suffix_rules): Use $(TEXI2DVI_FLAGS) in
+       texi2dvi rules. Use $(MAKEINFO_FLAGS) in makeinfo rules.
+
+Tue Jan 11 19:29:55 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * GNUmakefile (tarfiles): Omit make-doc.
+       (make-$(version).tar): Include make.info*.
+
+Fri Jan  7 16:27:00 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (configure, config.h.in): Comment out rules.
+
+Thu Jan  6 18:08:08 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (binprefix, manprefix): New variables.
+       (instname): Variable removed.
+       (install): Use $({bin,man}prefix)make in place of $(instname).
+       File targets likewised renamed.
+
+Mon Jan  3 17:50:25 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.70 released.
+
+Thu Dec 23 14:46:54 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.69.3.
+
+       * read.c (parse_file_seq): Inside multi-word archive ref
+       translation loop, check NEW1==0 at end and break out of the loop.
+
+       * GNUmakefile (make-$(version).tar): Distribute install.sh.
+       * install.sh: New file.
+
+       * configure.in (SCCS_GET_MINUS_G check): Put redirection for admin
+       cmds outside subshell parens, to avoid "command not found" msgs
+       from the shell.
+
+Wed Dec 22 17:00:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * configure.in (SCCS_GET_MINUS_G check): Put -G flag last in get cmd.
+       Redirect output & error from get to /dev/null.
+       Fix reversed sense of test.
+
+Fri Dec 17 15:31:36 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * configure.in (SCCS_GET_MINUS_G check): Use parens instead of
+       braces inside if condition command; some shells lose.
+
+Thu Dec 16 15:10:23 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.69.2.
+
+       * arscan.c [M_UNIX]: Move #undef M_XENIX for PORTAR stuff.
+       (PORTAR) [M_XENIX]: Define to 0 instead of 1.
+
+       * main.c (define_makeflags): Only export MAKEFLAGS if !ALL.
+
+Wed Dec 15 17:47:48 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (main): Cast result of pointer arith to unsigned int
+       before passing to define_variable for envars.  Matters when
+       sizeof(unsigned)!=sizeof(ptrdiff_t).
+
+Tue Dec 14 14:21:16 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * configure.in: Add new check for SCCS_GET_MINUS_G.
+       * config.h.in: Add #undef SCCS_GET_MINUS_G.
+       * default.c (default_terminal_rules): Use `$(SCCS_OUTPUT_OPTION)' in
+       place of `-G $@' in SCCS commands.
+       (default_variables) [SCCS_GET_MINUS_G]: Define SCCS_OUTPUT_OPTION
+       to "-G$@".
+
+       * configure.in (AC_OUTPUT): Put touch stamp-config in second arg
+       (so it goes in config.status), rather than afterward.
+
+       * ar.c (ar_member_date): Don't call enter_file on the archive file
+       if it doesn't exist (by file_exists_p).
+
+       * compatMakefile ($(infodir)/make.info): Replace `$$d/foo.info'
+       with `$$dir/make.info' in install-info invocation (oops).
+
+       * vpath.c (construct_vpath_list): Only set LASTPATH set PATH when
+       we do not unlink and free PATH.
+
+       * file.c (print_file_data_base): Fix inverted calculation for
+       average files per hash bucket.
+
+       * read.c (readline): When we see a NUL, give only a warning and
+       synthesize a newline to terminate the building line (used to
+       fatal).  Move fgets call into the loop condition, and after the
+       loop test ferror (used to test !feof in the loop).
+
+Fri Dec  3 16:40:31 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * configure.in: Check for strerror in AC_HAVE_FUNCS.
+
+Thu Dec  2 15:37:50 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       Differentiate different flavors of missing makefile error msgs,
+       removing gratuitous `fopen: ' and giving caller for included makefiles.
+       * misc.c [! HAVE_STRERROR]: Define our own strerror here.
+       (perror_with_name, pfatal_with_name): Use strerror instead of
+       replicating its functionality.
+       * read.c (read_makefile): Return int instead of void.
+       (read_all_makefiles, read_makefile): Change callers to notice zero
+       return and give error msg.
+
+Thu Nov 11 11:47:36 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.69.1.
+
+       * default.c: Put `-G $@' before $< in SCCS cmds.
+
+Wed Nov 10 06:06:14 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): After trying a variable defn, notice if
+       the line begins with a tab, and diagnose an error.
+
+Sun Nov  7 08:07:37 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.69.
+
+Wed Nov  3 06:54:33 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.10.
+
+       * implicit.c (try_implicit_rule): Look for a normal rule before an
+       archive rule.
+
+Fri Oct 29 16:45:28 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * function.c (expand_function: `sort'): Double NWORDS when it
+       overflows, instead of adding five.
+
+       * compatMakefile (clean): Remove loadavg.
+
+Wed Oct 27 17:58:33 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.9.
+
+       * file.h (NEW_MTIME): Define new macro.
+       * main.c (main): Set time of NEW_FILES to NEW_MTIME, not to
+       current time returned from system.  Removed variable NOW.
+       * remake.c (notice_finished_file): Use NEW_MTIME in place of
+       current time here too.
+
+Tue Oct 26 19:45:35 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.8.
+
+       * remake.c (update_file_1): Don't clear MUST_MAKE when FILE has no
+       cmds and !DEPS_CHANGED unless also !NOEXIST.
+
+Mon Oct 25 15:25:21 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (parse_file_seq): When converting multi-word archive
+       refs, ignore a word beginning with a '('.
+
+Fri Oct 22 02:53:38 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * configure.in: Check for sys/timeb.h.
+       * make.h [HAVE_SYS_TIMEB_H]: Test this before including it.
+
+Thu Oct 21 16:48:17 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.7.
+
+       * rule.c (convert_suffix_rule): New local TARGPERCENT.  Set it to
+       TARGNAME+1 for "(%.o)", to TARGNAME for "%.?".  Use it in place of
+       TARGNAME to initialize PERCENTS[0].
+
+Mon Oct 18 06:49:35 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * configure.in: Use AC_HAVE_HEADERS(unistd.h) instead of AC_UNISTD_H.
+       Remove AC_USG; it is no longer used.
+
+       * file.c (print_file): New function, broken out of
+       print_file_data_base.
+       (print_file_data_base): Call it.
+       * rule.c (print_rule): New function, broken out of
+       print_rule_data_base.
+       (print_rule_data_base): Call it.
+
+Thu Oct 14 14:54:03 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * default.c (install_default_suffix_rules): New function, broken
+       out of install_default_implicit_rules.
+       (install_default_implicit_rules): Move suffix rule code there.
+       * make.h: Declare install_default_suffix_rules.
+       * main.c (main): Call install_default_suffix_rules before reading
+       makefiles.  Move convert_to_pattern call before
+       install_default_implicit_rules.
+
+       * job.h (struct child): Make `pid' member type `pid_t' instead of
+       `int'.
+
+       * compatMakefile (RANLIB): New variable, set by configure.
+       (glob/libglob.a): Pass RANLIB value down to submake.
+
+       Fixes for SCO 3.2 "devsys 4.2" from pss@tfn.com (Peter Salvitti).
+       * make.h: Include <sys/timeb.h> before <time.h> for SCO lossage.
+       * job.c [! getdtablesize] [! HAVE_GETDTABLESIZE]: If NOFILE is not
+       defined but NOFILES_MAX is, define it to be that.
+
+Mon Oct 11 19:47:33 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * GNUmakefile (make-$(version).tar): Depend on acconfig.h, so it
+       is distributed.
+
+Sun Oct  3 15:15:33 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * default.c (default_terminal_rules): Add `-G $@' to SCCS get cmds.
+
+Tue Sep 28 14:18:20 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): Add ^ to SH_CHARS; it
+       is another symbol for | in some shells.
+       * main.c (main): Add it to CMD_DEFS quoting list as well.
+
+Mon Sep 20 18:05:24 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): Remove '=' from
+       SH_CHARS.  Only punt on '=' if it is unquoted in a word before the
+       first word without an unquoted '='.
+
+       * main.c (define_makeflags): Set v_export for MAKEFLAGS.
+
+Fri Sep 17 00:37:18 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * remake.c (update_file_1): Use .DEFAULT cmds for phony targets.
+
+       * make.h [_AIX && _POSIX_SOURCE]: Define POSIX.
+
+       * commands.c (delete_child_targets): Don't delete phony files.
+
+       * job.c (start_job_command): Set COMMANDS_RECURSE in FLAGS if we
+       see a `+' at the beginning of the command line.
+
+Thu Sep  9 17:57:14 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.6.
+
+Wed Sep  8 20:14:21 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (define_makeflags): Define MAKEFLAGS with o_file, not o_env.
+
+Mon Aug 30 12:31:58 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * expand.c (variable_expand): Fatal on an unterminated reference.
+
+Thu Aug 19 16:27:53 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.5.
+
+       * variable.c (define_automatic_variables): Define new o_default
+       variable `MAKE_VERSION' from version_string and remote_description.
+
+       * make.h (version_string, remote_description): Declare these here.
+       * main.c: Don't declare version_string.
+       (print_version): Don't declare remote_description.
+
+Wed Aug 18 15:01:24 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Free space pointed to by CONDITIONALS
+       before restoring the old pointer.
+
+Mon Aug 16 17:33:36 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile ($(objs)): Depend on config.h.
+
+       * GNUmakefile (build.sh.in): Depend on compatMakefile.
+
+       * configure.in: Touch stamp-config after AC_OUTPUT.
+
+Fri Aug 13 16:04:22 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.4.
+
+Thu Aug 12 17:18:57 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h: Include <config.h> instead of "config.h".
+
+Wed Aug 11 02:35:25 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (main): Make all variables interned from ENVP be v_export.
+       * variable.c (try_variable_definition): In v_default case, don't
+       check for an o_file variable that `getenv' finds.
+
+       * job.c (reap_children): New local variable ANY_LOCAL; set it
+       while setting ANY_REMOTE.  If !ANY_LOCAL, don't wait for local kids.
+
+       * main.c (main): Don't call decode_env_switches on MFLAGS.  DOC THIS.
+
+       * function.c (expand_function): #if 0 out freeing of ENVP since it
+       is environ.
+
+Mon Aug  9 17:37:20 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.3.
+
+       * remote-stub.c (remote_status): Set errno to ECHILD before return.
+       * job.c (reap_children): Scan the chain for remote children and
+       never call remote_status if there are none.
+
+       * function.c (expand_function: `shell'): #if 0 out calling
+       target_environment; just set ENVP to environ instead.
+
+       * job.c (reap_children): Check for negative return from
+       remote_status and fatal for it.
+       When blocking local child wait returns 0, then try a blocking call
+       to remote_status.
+
+Tue Aug  3 00:19:00 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (clean): Delete make.info* and make.dvi here.
+       (distclean): Not here.
+
+       * dep.h (RM_*): Use #defines instead of enum to avoid lossage from
+       compilers that don't like enum values used as ints.
+
+Mon Aug  2 16:46:34 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (loadavg): Add $(LOADLIBES).
+
+Sun Aug  1 16:01:15 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.2.
+
+       * compatMakefile (loadavg, check-loadavg): New targets.
+       (check): Depend on check-loadavg.
+
+       * compatMakefile (glob/libglob.a): Depend on config.h.
+
+       * misc.c (log_access): Write to stderr instead of stdout.
+
+Fri Jul 30 00:07:02 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.1.
+
+Thu Jul 29 23:26:40 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * configure.in (SYS_SIGLIST_DECLARED): In test program include
+       <unistd.h> #ifdef HAVE_UNISTD_H.
+
+       * compatMakefile (.PHONY): Put after `all' et al.
+
+       * configure.in: Add AC_IRIX_SUN.
+
+Wed Jul 28 17:41:12 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.68.
+
+Mon Jul 26 14:36:49 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.67.8.
+
+Sun Jul 25 22:09:08 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.67.7.
+
+       * compatMakefile ($(infodir)/make.info): Don't use $(instname).
+       Run install-info script if present.
+
+Fri Jul 23 16:03:50 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h [STAT_MACROS_BROKEN]: Test this instead of [uts].
+
+       * configure.in: Add AC_STAT_MACROS_BROKEN.
+
+Wed Jul 14 18:48:11 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.67.6.
+
+       * read.c (read_makefile): Recognize directive `-include', like
+       `include' but sets RM_DONTCARE flag.
+
+       * variable.c (target_environment): If FILE is nil, use
+       current_variable_set_list in place of FILE->variables.
+       * function.c (expand_function: `shell'): Get an environment for
+       the child from target_environment instead of using environ.
+
+       * dep.h: Declare read_all_makefiles here.
+       (RM_*): Define new enum constants.
+       * read.c (read_makefile): Second arg is FLAGS instead of TYPE.
+       Treat it as a bit mask containing RM_*.
+       (read_all_makefiles): For default makefiles, set D->changed to
+       RM_DONTCARE instead of 1.
+       * main.c: Don't declare read_all_makefiles here.
+       (main): Check `changed' member of read_makefiles elts for RM_*
+       flags instead of specific integer values.
+
+Mon Jul 12 22:42:17 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h [sequent && i386]: #undef POSIX.  From trost@cse.ogi.edu.
+
+Thu Jul  8 19:51:23 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * vpath.c (construct_vpath_list): If ELEM is zero 0, free PATTERN
+       as well as VPATH.
+       (build_vpath_lists): Empty `vpaths' around construct_vpath_list
+       call for $(VPATH).  Expand $(strip $(VPATH)), not just $(VPATH).
+
+       * rule.c (convert_suffix_rule): Use alloca instead of xmalloc for
+       PERCENTS, whose storage is not consumed by create_pattern_rule.
+
+       * make.h [__mips && _SYSTYPE_SVR3]: #undef POSIX.
+
+Wed Jun 30 18:11:40 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.67.5.
+
+       * rule.c (max_pattern_targets): New variable.
+       (count_implicit_rule_limits): Compute its value.
+       * rule.h: Declare it.
+       * implicit.c (pattern_search): Make TRYRULES max_target_patterns
+       times bigger.  Move adding new TRYRULES elt inside the inner
+       targets loop, so each matching target gets its own elt in MATCHES
+       and CHECKED_LASTSLASH.
+
+       * file.c (remove_intermediates): If SIG!=0 say `intermediate file'
+       instead of just `file' in error msg.
+
+Fri Jun 25 14:55:15 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv): Turn off
+       --warn-undefined-variables around expansion of SHELL and IFS.
+       * read.c (tilde_expand): Likewise for HOME.
+       (read_all_makefiles): Likewise for MAKEFILES.
+       * vpath.c (build_vpath_lists): Likewise for VPATH.
+
+       * main.c (warn_undefined_variables_flag): New flag variable.
+       (switches): Add --warn-undefined-variables.
+       * make.h (warn_undefined_variables_flag): Declare it.
+       * expand.c (warn_undefined): New function.
+       (reference_variable): Call it if the variable is undefined.
+       (variable_expand): In substitution ref, call warn_undefined if the
+       variable is undefined.
+
+       * default.c (default_pattern_rules): Add `%.c: %.w %.ch' and
+       `%.tex: %.w %.ch' rules.
+       (default_suffix_rules: .w.c, .w.tex): Pass three args: $< - $@.
+       (default_suffixes): Add `.ch'.
+
+Mon Jun 21 17:55:39 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * default.c (default_suffixes): Replace `.cweb' with `.w'.
+       (default_suffix_rules): Rename `.cweb.c' and `.cweb.tex' to `.w.c'
+       and `.w.tex'.
+
+Fri Jun 11 14:42:09 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile ($(bindir)/$(instname)): Add missing backslash.
+
+Thu Jun 10 18:14:08 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.67.4.
+
+       * read.c (multi_glob): Don't free OLD and OLD->name in the
+       FOUND!=0 fork.  Use new block-local variable F instead of
+       clobbering OLD.
+
+       * ar.c (glob_pattern_p): New function, snarfed from glob/glob.c.
+       (ar_glob): Call it; return nil immediately if MEMBER_PATTERN
+       contains no metacharacters.
+
+Wed Jun  9 16:25:35 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * ar.c (ar_glob{_match,_alphacompare}): New function.
+
+       * dep.h [! NO_ARCHIVES]: Declare it.
+       * read.c (multi_glob) [! NO_ARCHIVES]: Use it on archive member elts.
+
+       * read.c (read_makefile): Pass flag (1) to parse_file_seq, not to
+       multi_glob (which doesn't take a 3rd arg).
+       * rule.c (install_pattern_rule): Likewise.
+       * default.c (set_default_suffixes): Here too.
+       * function.c (string_glob): Don't pass gratuitous arg to multi_glob.
+
+       * read.c (parse_file_seq) [! NO_ARCHIVES]: Add post-processing
+       loop to translate archive refs "lib(a b)" into "lib(a) lib(b)".
+
+Mon Jun  7 19:26:51 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (installdirs): Actually pass directory names.
+       ($(bindir)/$(instname)): Test chgrp&&chmod exit status with `if';
+       if it fails, echo a warning msg, but don't make the rule fail.
+
+       * read.c (tilde_expand): New function, broken out of tilde_expand.
+       (multi_glob): Call it.
+       (construct_include_path): Expand ~ in directory names.
+       * dep.h: Declare tilde_expand.
+       * main.c (enter_command_line_file): Expand ~ at the start of NAME.
+       (main): Expand ~ in -C args.
+       * read.c (read_makefile): Expand ~ in FILENAME unless TYPE==2.
+
+Fri Jun  4 13:34:47 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (decode_env_switches): Use xmalloc instead of alloca for ARGS.
+
+       * main.c (main): Put result of alloca in temporary variable with
+       simple assignment, to make SGI compiler happy.
+
+Thu Jun  3 20:15:46 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.67.3.
+
+       * main.c (main): Before re-execing, remove intermediate files, and
+       print the data base under -p.  Sexier debugging message.
+
+       * implicit.c (pattern_search): Allocate an extra copy of the name
+       of a winning intermediate file when putting it in FOUND_FILES.
+
+Wed Jun  2 16:38:08 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Pass flag (1) to parse_file_seq, not to
+       multi_glob (which doesn't take a 3rd arg).
+
+       * dir.c (dir_contents_file_exists_p): When reading dirents, ignore
+       chars within D_NAMLEN that are NULs.
+
+       * main.c (decode_switches): Don't savestring ARGV[0] to put it
+       into `other_args'.
+       For string switch, don't savestring `optarg'.
+       (main): Don't free elts of makefiles->list that are "-".
+       Use alloca'd rather than savestring'd storage for elts of
+       makefiles->list that are temporary file names.
+       * read.c (read_all_makefiles): Don't free *MAKEFILES.
+       * file.c (enter_file): Don't strip `./'s.
+       * main.c (enter_command_line_file): New function.
+       (main): Use it in place of enter_file for command-line goals from
+       other_files, and for old_files and new_files.
+
+Mon May 31 18:41:40 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.67.2.
+
+       * compatMakefile (.SUFFIXES): Add .info.
+       ($(infodir)/$(instname).info): Find make.info* in cwd if there,
+       else in $srcdir.  Use basename to remove dir name from installed name.
+
+Thu May 27 17:35:02 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * implicit.c (pattern_search): When interning FOUND_FILES, try
+       lookup_file first; if found, free the storage for our copy of the name.
+
+Wed May 26 14:31:20 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.67.1.
+
+       * main.c (decode_switches): In usage msg, write `--switch=ARG' or
+       `--switch[=OPTARG]' rather than `--switch ARG' or `--switch [ARG]'.
+
+Mon May 24 16:17:31 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * rule.c (convert_suffix_rule): New function.
+       (convert_to_pattern): Use it instead of doing all the work here
+       several times.
+       For target suffix `.a', generate both the archive magic rule and
+       the normal rule.
+
+       * compatMakefile (distclean): Remove stamp-config.
+
+Sat May 22 16:15:18 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.67.
+
+       * file.c (remove_intermediates): Don't write extra space after `rm'.
+
+       * main.c (struct command_switch.type): Remove `usage_and_exit'.
+       (print_usage_flag): New variable.
+       (switches: --help): Make type `flag', to set print_usage_flag.
+       (init_switches): Remove `usage_and_exit' case.
+       (decode_switches): Likewise.
+       (decode_switches): Print usage if print_usage_flag is set.
+       When printing usage, die with status of BAD.
+       (main): Die with 0 if print_version_flag.
+
+Fri May 21 16:09:28 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.66.
+
+Wed May 19 21:30:44 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (installdirs): New target.
+       (install): Depend on it.
+
+Sun May 16 20:15:07 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.65.2.
+
+Fri May 14 16:40:09 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * vpath.c (construct_vpath_list): In removal loop for DIRPATH==0,
+       set LASTPATH to PATH, not NEXT.
+
+       * dir.c (read_dirstream): Break out of loop after incrementing
+       DS->buckets such that it reaches DIRFILE_BUCKETS; avoid trying to
+       dereference DS->contents->files[DIRFILE_BUCKETS].
+
+       * read.c (read_makefile): Clear no_targets after reading a
+       targetful rule line.
+
+       * main.c (main): If print_version_flag is set, exit after printing
+       the version.
+       (switches): Change --version docstring to say it exits.
+
+       * make.h [butterfly]: #undef POSIX.
+
+Wed May 12 15:20:21 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.65.1.
+
+       * arscan.c (ar_scan) [! AIAMAG]: Don't declare LONG_NAME.
+       [AIAMAG]: Pass TRUNCATE flag arg to (*FUNCTION), always zero.
+
+       * function.c (handle_function): Use fatal instead of
+       makefile_fatal when reading_filename is nil.
+
+       * configure.in: Add AC_GETGROUPS_T.
+       * job.c (search_path): Use GETGROUPS_T in place of gid_t.
+
+Sun May  9 15:41:25 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.65.
+
+Fri May  7 18:34:56 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * function.c (handle_function): Fatal for unmatched paren.
+
+Thu May  6 16:13:41 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.64.3.
+
+       * commands.c (handling_fatal_signal): New variable.
+       (fatal_error_signal): Set it.
+       * job.c (reap_children): Avoid nonreentrant operations if that is set.
+       * make.h: Declare handling_fatal_signal.
+
+       * expand.c (reference_variable): New function, snippet of code
+       broken out of simple-reference case of variable_expand.
+       (variable_expand): Use it for simple refs.
+       (variable_expand): When checking for a computed variable name,
+       notice a colon that comes before the final CLOSEPAREN.  Expand
+       only up to the colon, and then replace the pending text with a
+       copy containing the expanded name and fall through to subst ref
+       handling.
+       (variable_expand): Don't bother expanding the name if a colon
+       appears before the first $.
+       (expand_argument): Use alloca instead of savestring.
+       (variable_expand): For subst ref, expand both sides of = before
+       passing to [pat]subst_expand.  Use find_percent instead of lindex
+       to check the lhs for a %.
+
+Wed May  5 14:45:52 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.64.2.
+
+Mon May  3 17:00:32 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * arscan.c (ar_name_equal) [AIAMAG]: Abort if TRUNCATED is nonzero.
+
+       * read.c (read_makefile): Pass extra arg of 1 to parse_file_seq,
+       not to multi_glob.
+
+Thu Apr 29 19:47:33 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.64.1.
+
+       * arscan.c (ar_scan): New local flag var LONG_NAME.  Set it when
+       we read the member name in any of the fashions that allow it to be
+       arbitrarily long.  Pass its negation to FUNCTION.
+       (describe_member): Take TRUNCATED from ar_scan and print it.
+       (ar_name_equal): Take new arg TRUNCATED; if nonzero, compare only
+       the first sizeof (struct ar_hdr.ar_name) chars.
+       (ar_member_pos): Take TRUNCATED from ar_scan, pass to ar_name_equal.
+       * ar.c (ar_member_date_1): Likewise.
+
+Wed Apr 28 21:18:22 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (reap_children): Before calling start_job_command to start
+       the next command line, reset C->remote by calling start_remote_job_p.
+
+Mon Apr 26 15:56:15 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * arscan.c (ar_scan): New local var NAMEMAP.
+       In loop, rename NAME to NAMEBUF; new var NAME is a pointer; new
+       flag IS_NAMEMAP.  When extracting the member name, always put a
+       null at its end first.  If the name is "//" or "/ARFILENAMES", set
+       IS_NAMEMAP.  If we have already read in NAMEMAP, and NAME looks
+       like " /N", get full name from NAMEMAP+N.
+       Else if NAME looks like "#1/N", read N chars from the
+       elt data to be the full name.  At end of loop, if IS_NAMEMAP, read
+       the elt's data into alloca'd NAMEMAP.
+       (ar_name_equal): #if 0 truncating code.
+
+       * make.h: Don't declare vfork at all.  It returns int anyway,
+       unless <unistd.h> declared it; and we conflicted with some systems.
+
+       * main.c (define_makeflags): If FLAGSTRING[1] is '-', define
+       MAKEFLAGS to all of FLAGSTRING, not &FLAGSTRING[1].  Don't want to
+       define it to something like "-no-print-directory".
+       Use %g format instead of %f for floating-valued things.
+
+Thu Apr 22 18:40:58 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * GNUmakefile (Makefile.in): Use a substitution ref on nolib-deps
+       to change remote-%.dep to remote-stub.dep.
+
+Wed Apr 21 15:17:54 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.64.
+
+Fri Apr 16 14:22:22 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (install): Remove - prefix from chgrp+chmod.
+
+       * Version 3.63.8.
+
+Thu Apr 15 18:24:07 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * acconfig.h: New file; contains "#undef SCCS_GET" for autoheader.
+       * configure.in: If /usr/sccs/get exists, define SCCS_GET to that,
+       else to "get".
+       * default.c (default_variables): Set GET to macro SCCS_GET.
+
+       * read.c (parse_file_seq): Take extra arg STRIP; strip `./' only
+       if nonzero.  I hope this is the last time this argument is added
+       or removed.
+       (read_makefile): Pass it 1 when parsing include file names.
+       Pass it 1 when parsing target file names.
+       Pass it 1 when parsing static pattern target pattern names.
+       * rule.c (install_pattern_rule): Pass it 1 when parsing rule deps.
+       * default.c (set_default_suffixes): Pass it 1 when parsing
+       default_suffixes.
+       * function.c (string_glob): Pass it 0 here.
+
+Wed Apr 14 11:32:05 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * misc.c (log_access): New function.
+       ({init,user,make,child}_access): Call it.
+       (child_access): Abort if !access_inited.
+
+       * main.c (switches: --no-print-directory): Use 1 instead of -1 for
+       single-letter option.
+       (init_switches, decode_switches, define_makeflags): An option with
+       no single-letter version is no longer indicated by a value of -1;
+       instead a value that is !isalnum.
+       (init_switches): Don't put such switches into the string, only
+       into the long_option table.
+
+       * make.h [!NSIG] [!_NSIG]: #define NSIG 32.
+
+       * job.c [HAVE_WAITPID]: Remove #undef HAVE_UNION_WAIT.  AIX's
+       bsdcc defined WIF* to use union wait.
+
+       * main.c (struct command_switch): Change member `c' to type int.
+       (switches): Make const.
+       (decode_switches): Use `const struct command_switch *'.
+       (define_makeflags): Likewise.
+
+       * default.c (default_suffix_rules): Add `-o $@' to makeinfo rules.
+
+Mon Apr 12 12:30:04 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.63.7.
+
+       * configure.in (AC_HAVE_HEADERS): Check for string.h and memory.h.
+       Removed AC_MEMORY_H.
+       * make.h [USG, NeXT]: Don't test these.
+       [HAVE_STRING_H]: Test this to include string.h and define ANSI_STRING.
+       [HAVE_MEMORY_H]: Test this instead of NEED_MEMORY_H.
+       [! ANSI_STRING]: Put decls of bcopy et al here.
+       [sparc]: Don't test this for alloca.h; HAVE_ALLOCA_H is sufficient.
+       [HAVE_SIGSETMASK]: Test this rather than USG.
+       [__GNU_LIBRARY__ || POSIX]: Don't #include <unistd.h> again.
+       * main.c (main): Handle SIGCHLD if defined, and SIGCLD if defined.
+       It doesn't hurt to do both if they are both defined, and testing
+       USG is useless.
+       * dir.c: Rationalize directory header conditionals.
+       * arscan.c [HAVE_FCNTL_H]: Test this rather than USG || POSIX.
+
+       * default.c (default_suffixes): Add `.txinfo'.
+       (default_suffix_rules): Add `.txinfo.info' and `.txinfo.dvi' rules.
+
+       * variable.c (try_variable_definition): Replace RECURSIVE flag
+       with enum FLAVOR, which can be simple, recursive, or append.
+       Recognize += as append flavor.  Set new variable VALUE in a switch
+       on FLAVOR.  For append flavor, prepend the variable's old value.
+       If the variable was previously defined recursive, set FLAVOR to
+       recursive; if it was defined simple, expand the new value before
+       appending it to the old value.  Pass RECURSIVE flag to
+       define_variable iff FLAVOR == recursive.
+
+       * variable.c (try_variable_definition): Use alloca and bcopy for
+       NAME, instead of savestring.  Might as well use stack storage
+       since we free it immediately anyway.
+
+Thu Apr  8 18:04:43 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (start_waiting_jobs): Move decl of JOB outside of loop.
+
+       * main.c (define_makeflags): Rename `struct flag' member `switch'
+       to `cs', which is not a reserved word.
+
+Wed Apr  7 15:30:51 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (new_job): Call start_waiting_jobs first thing.
+       (start_waiting_job): Changed return type from void to int.
+       Return 0 when putting the child on the waiting_jobs chain.
+       (start_waiting_jobs): Don't check load and job_slots here.
+       Always take a job off the chain and call start_waiting_job on it;
+       give up and return when start_waiting_job returns zero.
+
+       * main.c (define_makeflags: struct flag): Change member `char c' to
+       `struct command_switch *switch'.
+       (ADD_FLAG): Set that to CS instead of CS->c.
+       If CS->c is -1, increment FLAGSLEN for the long name.
+       When writing out FLAGS, handle FLAGS->switch->c == -1 and write
+       the long name instead.
+
+       * compatMakefile (stamp-config): New target of old config.h rule.
+       Touch stamp-config after running config.status.
+       (config.h): Just depend on stamp-config, and have empty commands.
+
+Mon Apr  5 20:14:02 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c [HAVE_WAITPID]: #undef HAVE_UNION_WAIT.
+
+       * configure.in (AC_HAVE_FUNCS): Check for psignal.
+
+Fri Apr  2 17:15:46 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (long_option_aliases): Remove "new"; it is already an
+       unambiguous prefix of "new-file".
+
+Sun Mar 28 16:57:17 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.63.6.
+
+Wed Mar 24 14:26:19 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * vpath.c (selective_vpath_search): When adding the
+       name-within-directory at the end of NAME, and we don't add a
+       slash, don't copy FILENAME in one char too far into NAME.
+
+       * variable.c (define_automatic_variables): Find default_shell's
+       length with strlen, not numerology.
+
+Wed Mar 17 20:02:27 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (define_makeflags): Add the elts of a string option in
+       reverse order, so they come out right when reversed again.
+
+Fri Mar 12 15:38:45 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * compatMakefile (make.info): Use `-o make.info'.
+
+Thu Mar 11 14:13:00 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * compatMakefile (REMOTE): Set to @REMOTE@; change comments to
+       reflect new use.
+       (objs): Replace remote.o with remote-$(REMOTE).o.
+       (srcs): Replace remote.c with remote-$(REMOTE).c.
+       (remote.o): Rule removed.
+
+       * configure.in (REMOTE): Subst this in Makefile et al; default "stub".
+       Use AC_WITH to grok --with-customs arg to set REMOTE=cstms.
+       * GNUmakefile (build.sh.in): Filter out remote-% from objs list.
+       * build.template (REMOTE): New var; set to @REMOTE@.
+       (objs): Add remote-${REMOTE}.o.
+
+Wed Mar 10 15:12:24 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.63.5.
+
+       * implicit.c (pattern_search): Fix "dependent"->"dependency" in
+       "Rejecting impossible" -d msg.
+
+       * file.c (file_hash_enter): New local vars {OLD,NEW}BUCKET.  Store
+       mod'd values there; never mod {OLD,NEW}HASH.
+
+Mon Mar  8 13:32:48 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * remake.c [eta10]: Include <fcntl.h> instead of <sys/file.h>.
+
+       * compatMakefile (VPATH): Set this to @srcdir@.
+       (srcdir): Set this to $(VPATH).
+
+       * main.c (main): New local var DIRECTORY_BEFORE_CHDIR.  Save in it
+       a copy of CURRENT_DIRECTORY after the first getcwd.  Use it
+       instead of CURRENT_DIRECTORY when chdir'ing back before re-execing.
+
+       * remake.c (notice_finished_file): Pass missing SEARCH arg to f_mtime.
+
+       * read.c (read_makefile): Remove extraneous arg to parse_file_seq.
+
+Mon Feb 22 14:19:38 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile ($(infodir)/$(instname).info): Use , instead of /
+       as the sed delimiter char.
+
+Sun Feb 21 14:11:04 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.63.4.
+
+       * rule.h (struct rule): Removed `subdir' member.
+       * rule.c (new_pattern_rule): No need to clear it.
+       (count_implicit_rule_limits): Set the `changed' flag in each dep
+       that refers to a nonexistent directory.  No longer set rule-global
+       `subdir' flag with that information.
+       (print_rule_data_base): Don't record info on `subdir' flags.
+
+       * implicit.c (pattern_search): Check the DEP->changed flag rather
+       than the (now gone) RULE->subdir flag.  Also test CHECK_LASTSLASH;
+       if it is set, the file might exist even though the DEP->changed
+       flag is set.
+
+       * rule.c (count_implicit_rule_limits): Pass "", not ".", as file
+       name arg to dir_file_exists_p to check for existence of directory.
+
+       * implicit.c (pattern_search): Inside dep-finding loop, set
+       CHECK_LASTSLASH from the value recorded in CHECKED_LASTSLASH[I],
+       rather than computing it anew.
+
+       * commands.c (set_file_variables): Must alloca space for PERCENT
+       and copy it, to avoid leaving the trailing `)' in the value.
+
+       * misc.c (remove_comments): Fixed backslash-checking loop
+       condition to allow it to look at the first char on the line.
+       P2 >= LINE, not P2 > LINE.
+
+       * compatMakefile ($(bindir)/$(instname)): Before moving $@.new to
+       $@, rm $@.old and mv $@ to $@.old.
+
+       * variable.c (try_variable_definition): Take new args FILENAME and
+       LINENO.  Fatal if the variable name is empty.
+       * read.c (read_makefile): Change callers.
+       * main.c (main): Likewise.
+
+       * compatMakefile (group): Define to @KMEM_GROUP@, autoconf magic
+       that configure will replace with the group owning /dev/kmem.
+
+Mon Feb  8 14:26:43 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * vpath.c (vpath_search): Take second arg MTIME_PTR, pass thru to
+       selective_vpath_search.
+       (selective_vpath_search): Take second arg MTIME_PTR.
+       If the dir cache thinks a file exists, stat it to make sure, and
+       put the modtime in *MTIME_PTR.
+       * remake.c (library_search): Take second arg MTIME_PTR.
+       When we find a match, record its mtime there.
+       Pass MTIME_PTR through to vpath_search to do same.
+       (f_mtime): Pass &MTIME as new 2nd arg to {vpath,library}_search;
+       store it in FILE->last_mtime if set nonzero.
+       * implicit.c (pattern_search): Pass nil 2nd arg to vpath_search.
+
+       * compatMakefile (remote.o): Prepend `$(srcdir)/' to `remote-*.c',
+       so globbing looks somewhere it will find things.
+
+       * compatMakefile ($(infodir)/$(instname).info): Install `make.info*'
+       not `$(srcdir)/make.info*'; no need to use basename.
+
+Fri Feb  5 12:52:43 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.63.3.
+
+       * compatMakefile (install): Add missing ;\s.
+
+       Make -, @, and + prefixes on a pre-expanded command line affect
+       all lines in the expansion, not just the first.
+       * commands.h (struct commands): Replace `lines_recurse' member
+       with `lines_flags'.
+       (COMMANDS_{RECURSE,SILENT,NOERROR}): New macros, bits to set in
+       that flag byte.
+       * commands.c (chop_commands): Set `lines_flags' instead of
+       `lines_recurse'.  Record not only + but also @ and - prefixes.
+       * remake.c (notice_finished_file): Check the COMMANDS_RECURSE bit
+       in FILE->cmds->lines_flags, rather than FILE->cmds->lines_recurse.
+       * job.c (start_job_command): Replaced RECURSIVE and NOPRINT local
+       var with FLAGS; initialize it to the appropriate `lines_flags' byte.
+       Set CHILD->noerror if the COMMANDS_NOERROR bit is set in FLAGS.
+       Set the COMMANDS_SILENT bit in FLAGS for a @ prefix.
+
+       * remake.c (update_goal_chain): Set G->file to its prev after
+       checking for G being finished, since that check needs to examine
+       G->file.
+
+       * configure.in (union wait check) [HAVE_WAITPID]: Try using
+       waitpid with a `union wait' STATUS arg.  If waitpid and union wait
+       don't work together, we should not use union wait.
+
+       * Version 3.63.2.
+
+       * remake.c (update_goal_chain): When G->file->updated, move
+       G->file to its prev.  We aren't finished until G->file is nil.
+
+Thu Feb  4 12:53:04 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (starting_directory): New global variable.
+       (main): Set it to cwd after doing -Cs.
+       (log_working_directory): Use it, rather than computing each time.
+       * make.h: Declare it.
+
+       * compatMakefile (SHELL): Define to /bin/sh for losing Unix makes.
+
+       * main.c (decode_env_switches): Allocate (1 + LEN + 1) words for
+       ARGV, rather than LEN words plus one byte.
+
+Wed Feb  3 18:13:52 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * compatMakefile ($(bindir)/$(instname)): Put - before
+       install_setgid command line, so its failure won't be an error.
+       (infodir): New variable.
+       (install): Depend on $(infodir)/$(instname).info.
+       ($(infodir)/$(instname).info): New target.
+
+       * read.c (read_makefile): If FILENAMES is nil when we see a line
+       starting with a tab, don't treat it as a command.  Just fall
+       through, rather than giving an error.
+
+       * read.c (read_makefile): If the NO_TARGETS flag is set when we see a
+       command line, don't clear it before continuing.  We want
+       subsequent command lines to be ignored as well.
+
+       * job.c (new_job): Before expanding each command line, collapse
+       backslash-newline combinations that are inside var or fn references.
+
+Mon Feb  1 16:00:13 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * compatMakefile (exec_prefix): Default to $(prefix), not /usr/local.
+
+       * compatMakefile (make.info): Pass -I$(srcdir) to makeinfo.
+
+       * job.c [POSIX] (unblock_sigs): Made global.
+       [!POSIX] (unblock_sigs): Move defns to job.h.
+       * job.h [POSIX] (unblock_sigs): Declare.
+
+Sun Jan 31 19:11:05 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): In vpath parsing, after finding the
+       pattern token, take entire rest of line as the search path, not
+       just the next token.
+
+       * compatMakefile (remote.o): Depend on remote-*.c.
+
+Thu Jan 28 16:40:29 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * commands.c (set_file_variables): Don't define any F or D versions.
+       * variable.c (define_automatic_variables): Define them here as
+       recursively-expanded variables that use the dir and notdir funcs.
+
+       * variable.c (target_environment): In v_default case, don't export
+       o_default or o_automatic variables.
+
+       * configure.in (union wait check): Remove ` and ' inside C code;
+       they confuse the shell script.
+
+Mon Jan 25 13:10:42 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.63.1.
+
+       * vpath.c (construct_vpath_list): When skipping further processing
+       of an elt that is ".", don't also skip the code that pushes P past
+       the next separator.
+
+       * compatMakefile (distclean): Don't remove make-*.
+
+       * configure.in (HAVE_UNION_WAIT): Try to use WEXITSTATUS if it's
+       defined.  If one cannot use WEXITSTATUS with a `union wait'
+       argument, we don't want to believe the system has `union wait' at all.
+
+       * remake.c (update_file): Do nothing to print "up to date" msgs.
+       (update_goal_chain): Do it here instead.
+       Use the `changed' flag of each goal's `struct dep' to keep track
+       of whether files_remade (now commands_started) changed around a
+       call to update_file for that goal.
+       When a goal is finished, and its file's update_status is zero (i.e.,
+       success or nothing done), test the `changed' flag and give an "up
+       to date" msg iff it is clear.
+       * make.h (files_remade): Renamed to commands_started.
+       * remake.c: Changed defn.
+       (update_goal_chain): Changed uses.
+       * job.c (start_job_command): Increment commands_started here.
+       (reap_children): Not here.
+
+       * remake.c (update_goal_chain): Don't do anything with files'
+       `prev' members.  update_file now completely handles this.
+
+       * variable.c (target_environment): Don't expand recursive
+       variables if they came from the environment.
+
+       * main.c (define_makeflags): For flags with omitted optional args,
+       store {"", 0} with ADD_FLAG.  When constructing FLAGSTRING, a flag
+       so stored cannot have more flags appended to the same word.
+
+Fri Jan 22 14:46:16 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * variable.c (print_variable_set): In vars/bucket calculation,
+       don't spuriously multiply by 100.
+
+       * Version 3.63.
+
+       * job.c [!HAVE_UNION_WAIT] (WTERMSIG, WCOREDUMP, WEXITSTATUS):
+       Don't define if already defined.
+
+       * remake.c (update_file): Don't keep track of the command_state before
+       calling update_file_1.  Remove local variable COMMANDS_FINISHED,
+       and don't test it to decide to print the "is up to date" msg.
+       Testing for files_remade having changed should always be sufficient.
+       The old method lost when we are called in the goal chain run on a
+       makefile, because the makefile's command_state is already
+       `cs_finished' from the makefile chain run.
+
+       * misc.c [HAVE_SETRE[GU]ID]: Test these to decl setre[gu]id.
+
+       * configure.in: Rewrote wait checking.
+       Use AC_HAVE_HEADERS to check for <sys/wait.h>.
+       Use AC_HAVE_FUNCS to check for waitpid and wait3.
+       Use a compile check to test just for `union wait'.
+       * job.c: Rewrote conditionals accordingly.
+       [HAVE_WAITPID]: Test this only to define WAIT_NOHANG.
+       [HAVE_WAIT3]: Likewise.
+       [HAVE_UNION_WAIT]: Test this to define WAIT_T and W*.
+
+       * configure.in: Set CFLAGS and LDFLAGS before all checks.
+
+       * dir.c: Add static forward decls of {open,read}_dirstream.
+
+Thu Jan 21 17:18:00 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.31.
+
+       * job.c [NGROUPS_MAX && NGROUPS_MAX==0]: #undef NGROUPS_MAX.
+
+       * compatMakefile (CFLAGS, LDFLAGS): Set to @CFLAGS@/@LDFLAGS@.
+       * build.template (CFLAGS, LDFLAGS): Same here.
+       * configure.in: AC_SUBST(CFLAGS) and LDFLAGS.
+       Set them to -g if not defined in the environment.
+
+       * remake.c (library_search): Use LIBNAME consistently, setting it
+       only once, to be the passed name sans `-l'.
+       Pass new var FILE to be modified by vpath_search.
+
+Mon Jan 18 14:53:54 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.30.
+
+       * job.c (start_waiting_jobs): Return when job_slots_used is equal to
+       job_slots. 
+
+       * configure.in: Add AC_CONST for the sake of getopt.
+
+       * read.c (read_makefile): Continue after parsing `override'
+       directive, rather than falling through to lossage.
+       Check for EOL or blank after "override define".
+
+       * compatMakefile (.c.o, remote.o): Put $(CFLAGS) after other switches.
+
+Fri Jan 15 12:52:52 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.29.
+
+       * main.c (define_makeflags): After writing everything into
+       FLAGSTRING, only back up two chars if [-1] is a dash, meaning we
+       just wrote " -".  Always terminate the string at *P.
+
+       * remake.c (library_search): When constructing names in std dirs,
+       use &(*LIB)[2] for the stem, not LIBNAME (which points at the
+       buffer we are writing into!).
+
+Thu Jan 14 13:50:06 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Set IN_IGNORED_DEFINE for "override
+       define" when IGNORING is true.
+
+       * compatMakefile (distclean): Remove config.status and build.sh.
+
+Wed Jan 13 16:01:12 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.28.
+
+       * misc.c (xmalloc, xrealloc): Cast result of malloc/realloc to
+       (char *).
+
+       * arscan.c (ar_scan) [AIAMAG]: Cast read arg to (char *).
+
+       * variable.c (define_automatic_variables): Override SHELL value for
+       origin o_env_override as well as o_env.
+
+       * GNUmakefile (build.sh.in): Don't replace %globobjs%.  Instead,
+       add the names of the glob objects (w/subdir) to %objs%.
+       * build.template (globobjs): Removed.
+       Take basename of $objs before linking.
+
+Tue Jan 12 12:31:06 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.27.
+
+       * configure.in (AC_OUTPUT): Also edit build.sh.
+       * build.template: New file.
+       * GNUmakefile (build.sh.in): New rule to create it from build.template.
+       (make-$(version).tar.Z): Depend on build.sh.in.
+
+       * main.c (die): Call print_data_base if -p.
+       (main): Don't call it here.
+
+       * compatMakefile (defines): Add @DEFS@.  configure should turn this
+       into -DHAVE_CONFIG_H.
+
+Mon Jan 11 14:39:23 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.26.
+
+       * misc.c (init_access): Surround with #ifdef GETLOADAVG_PRIVILEGED.
+       ({make,user,child}_access) [! GETLOADAVG_PRIVILEGED]: Make no-op.
+       * compatMakefile (install_setgid): New var, set by configure.
+       (install): Install setgid $(group) only if $(install_setgid) is true.
+
+Fri Jan  8 15:31:55 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (load_too_high): If getloadavg fails with errno==0, give a
+       message saying that load limits are not supported.
+
+       * vpath.c (construct_vpath_list): Rewrote path deletion code to
+       not try to use PATH's next link after freeing PATH.
+
+       * main.c (define_makeflags): Rewritten; now handles string-valued
+       option, and has no arbitrary limits.
+       (switches): Set `toenv' flag for -I and -v.
+
+       * main.c (decode_env_switches): Cast return value of alloca to char *.
+
+       * misc.c (child_access) [HAVE_SETREUID, HAVE_SETREGID]: Use
+       setre[gu]id in place of set[gu]id.
+
+Wed Jan  6 15:06:12 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (main): Define MAKEOVERRIDES, MAKE, and MAKE_COMMAND with
+       origin o_default.
+
+       * make.h [POSIX]: Don't test this to use ANSI_STRING.
+       Testing STDC_HEADERS should be sufficient.
+
+       * job.h: Declare start_waiting_jobs.
+
+       * read.c (read_makefile): Add missing parens in if stmt that find
+       conditional directives.
+
+       * main.c (main): Declare init_dir.
+       * implicit.c (pattern_search): Always use two % specs in a
+       DEBUGP2, and always pass two non-nil args.
+       Cast field width args to int.
+       Add missing parens in !RULE->subdir if stmt.
+       * function.c (expand_function, patsubst_expand): Add parens around
+       assignments inside `while' stmts.
+       * commands.c (print_commands): Cast field width args to int.
+
+       * read.c (do_define): Cast return value of alloca to (char *).
+
+       * main.c (init_switches): New function, broken out of decode_switches.
+       (decode_switches): Take new arg ENV.  If set, ignore non-option
+       args; print no error msgs; ignore options with clear `env' flags.
+       (decode_env_switches): Rewritten to chop envar value into words
+       and pass them to decode_switches.
+       (switches): Set `env' flag for -I and -v.
+
+       * dir.c (init_dir): Cast free to __glob_closedir_hook's type.
+
+Tue Jan  5 14:52:15 1993  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.25.
+
+       * job.c [HAVE_SYS_WAIT || !USG]: Don't #include <sys/time.h> and
+       <sys/resource.h>.  <sys/time.h> interacts badly with <time.h>, and
+       we don't need these anyway.
+
+       * configure.in (AC_HAVE_FUNCS): Check for setre[gu]id.
+       * misc.c ({user,make}_access): Test #ifndef HAVE_SETRE[GU]ID, not
+       #ifdef POSIX || USG.  SunOS 4.1 is supposedly POSIX.1 compliant,
+       but its set[gu]id functions aren't; its setre[gu]id functions work.
+
+       * misc.c ({user,make,child}_access): Give name of caller in error msgs.
+
+       * job.c (load_too_high): Say "cannot enforce load limit" in error msg.
+
+       * configure.in: Call AC_PROG_CC.
+       * compatMakefile (CC): Define to @CC@ (autoconf magic).
+
+       * compatMakefile: Add .NOEXPORT magic target.
+
+Mon Jan  4 17:00:03 1993  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (print_version): Updated copyright to include 93.
+
+Thu Dec 31 12:26:15 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * make.h [_AIX]: Don't declare alloca.
+
+Tue Dec 29 13:45:13 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.24.
+
+       * compatMakefile (objs): Add signame.o.
+       (srcs): Add signame.[ch].
+
+       * compatMakefile (srcs): Add config.h.in.
+       (remote.o): Add -I. before -I$(srcdir).
+
+Mon Dec 28 15:51:26 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.23.
+
+       * read.c (readline): Fatal when LEN==0, indicating a line starting
+       with a NUL.
+       (readline): Take new arg LINENO, for use in error msg.
+       (read_makefile, do_define): Pass it.
+
+       * compatMakefile (glob/libglob.a): Pass -DHAVE_CONFIG_H in CPPFLAGS.
+       (.c.o): Add -I. before -I$(srcdir).
+
+Wed Dec 23 12:12:04 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Accept and ignore a rule with no targets.
+
+       * compatMakefile (ALLOCA_SRC): New variable.
+       (srcs): Include its value.
+
+       * read.c (struct conditional): Renamed member `max_ignoring' to
+       `allocated'; added new member `seen_else'.
+       (conditional_line): Initialize seen_else flag when starting an `if...';
+       set it when we see an `else'; fatal if set when we see `else'.
+       (read_makefile): Fatal "missing `endif'" if there are any pending
+       conditionals, not just if we are still ignoring.
+
+Tue Dec 22 15:36:28 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (manext): Set to 1, not l.
+       ($(mandir)/$(instname).$(manext)): Use $(srcdir) for make.man in cmds.
+
+       * file.c (file_hash_enter): Don't call uniquize_deps here.
+       * read.c (record_files): Likewise.
+       * implicit.c (pattern_search): Likewise.
+       * commands.c (set_file_variables): Call it only here.
+
+       * default.c (default_variables) [__convex__]: FC=fc.
+
+       * variable.c (target_environment): Expand the values of recursively
+       expanded variables when putting them into the environment.
+       * expand.c (recursively_expand): Made global.
+       * make.h (recursively_expand): Declare it.
+
+       * remake.c (check_dep): Set FILE->command_state to cs_deps_running
+       when a dep's command_state is cs_running or cs_deps_running.
+
+       * read.c (read_makefile): Changed error msg for spurious cmds to
+       not say "first target".
+
+Sun Dec 20 17:56:09 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * configure.in: Do AC_CONFIG_HEADER right after AC_INIT.
+       * make.h (HAVE_CONFIG_H): #include "config.h", then #define this.
+       * compatMakefile (config.h, configure, config.h.in): New rules.
+       (defines): Removed @DEFS@.
+
+Thu Dec 17 16:11:40 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (realclean): Just depend on distclean; no cmds.
+       (distclean): Do what realclean did before; also remove Makefile and
+       config.h; don't remove configure.
+       (info, dvi): New targets; depend on make.{info,dvi}.
+       (doc): Removed target.
+       (MAKEINFO, TEXI2DVI): New vars.
+       (make.info, make.dvi): Use them instead of explicit cmds.
+
+Wed Dec 16 16:25:24 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * configure.in: Added fcntl.h to AC_HAVE_HEADERS.  getloadavg cares.
+
+Wed Dec  9 15:21:01 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (long_option_aliases): Add --new-file alias for -W.
+
+       * default.c (default_variables): Change all C++ to CXX and C++FLAGS
+       to CXXFLAGS.
+
+       * read.c (do_define): Expand the variable name before using it.
+
+       * main.c (main): Define variable "MAKE_COMMAND" to argv[0];
+       define "MAKE=$(MAKE_COMMAND) $(MAKEOVERRIDES)" always.
+
+       * remake.c (library_search): Search for libNAME.a in cwd; look in
+       vpath before looking in standard dirs, not after.
+       Changed order of std dirs to: /lib, /usr/lib, ${prefix}/lib.
+
+Mon Nov 23 14:57:34 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * default.c (default_pattern_rules, default_terminal_rules): Added
+       brackets around initializers.
+
+       * variable.c (try_variable_definition): Don't check for LINE[0]=='\t'.
+       (try_variable_definition): Expand the name before defining the var.
+
+       * job.c (init_siglist): Removed function.
+       Removed decl of `sys_siglist'.
+       * make.h [! HAVE_SYS_SIGLIST]: #include "signame.h".
+       [HAVE_SYS_SIGLIST && !SYS_SIGLIST_DECLARED]: Declare sys_siglist
+       only under these conditions.
+       * main.c (main): Don't declare init_siglist.
+       (main) [! HAVE_SYS_SIGLIST]: Call signame_init instead of init_siglist.
+
+Wed Nov 18 14:52:51 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (record_files): Don't try to append to FIRSTDEPS if it's
+       nil; instead just set it to MOREDEPS.
+
+Mon Nov 16 17:49:17 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * vpath.c (construct_vpath_list): Initialize P to DIRPATH before
+       loop that sets MAXELEM.
+
+Fri Nov 13 18:23:18 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.22.
+
+Thu Nov 12 15:45:31 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (start_job_command): Under -n, increment files_remade after
+       processing (i.e., printing) all command lines.
+
+Tue Nov 10 15:33:53 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * read.c (record_files): Append new deps if this rule has no
+       commands; prepend them to existing deps if this rule has no commands.
+
+       * dir.c (open_dirstream): Return nil if DIR->contents->files is nil.
+
+       * read.c (parse_file_seq): Removed last arg STRIP.  Always strip `./'s.
+       (read_makefile): Changed callers.
+       * function.c (string_glob): Likewise.
+       * rule.c (install_pattern_rule): Likewise.
+
+Mon Nov  9 17:50:16 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * remake.c (files_remade): Made global.
+       (notice_finished_file): Don't increment files_remade here; this
+       function gets called in many situations where no remaking was in
+       fact done.
+       * job.c (reap_children): Do it here instead, when we know that 
+       actual commands have been run for the file.
+       * make.h (files_remade): Declare it.
+
+Thu Nov  5 18:26:10 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * vpath.c (construct_vpath_list): Allow blanks as well as colons to
+       separate elts in the search path.
+
+       * read.c (read_makefile): Don't fatal on extra tokens in `vpath'.
+       The search path can contain spaces now.
+
+Tue Nov  3 20:44:32 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * compatMakefile (check): New target; no-op.
+
+       * file.c (file_hash_enter): Mod OLDHASH by FILE_BUCKETS after
+       testing for OLDHASH==0 but before using the value.
+       (rename_file): Don't mod OLDHASH by FILE_BUCKETS before passing it
+       to file_hash_enter.
+
+       * file.c (rename_file): Notice when OLDFILE->cmds came from
+       default.c, and don't try to print ->filename in that case.
+
+Sun Oct 25 01:48:23 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * remake.c (update_file): Don't process F->also_make here.
+       (notice_finished_file): Don't process FILE->also_make if no attempt
+       to update FILE was actually made.
+       Fixed to call f_mtime directly to refresh their modtimes.
+
+Sat Oct 24 22:08:59 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (find_percent): Don't increment P again after skipping
+       an escaped %.
+
+       * expand.c (variable_expand): In call to patsubst_expand, don't
+       find `%'s ourselves; let that function do it.
+
+       * read.c (read_makefile: record_waiting_files): Don't call
+       record_files if FILENAMES is nil.
+       (read_makefile): All alternatives in the parsing, except for rule
+       lines, fall through to the end of the loop.  At the end of the
+       loop, do record_waiting_files so we notice later spurious cmds.
+
+Fri Oct 23 15:57:37 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * variable.c (define_automatic_variables): Free old value of SHELL
+       before replacing it.
+
+Thu Oct 15 18:57:56 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * compatMakefile (.c.o): Add -I$(srcdir)/glob to flags.
+
+       * dir.c (open_dirstream): Cast return value to __ptr_t.
+
+       * default.c (default_variables: "GET") [_IBMR2]: Use USG defn.
+
+       * make.h (MAXPATHLEN): Moved out of #ifndef POSIX.
+       (GET_PATH_MAX): Moved from #ifdef POSIX to #ifdef PATH_MAX #else.
+       Define as (get_path_max ()).
+       [! PATH_MAX] (NEED_GET_PATH_MAX): Define.
+       [! PATH_MAX] (get_path_max): Declare fn.
+       * misc.c [NEED_GET_PATH_MAX] (get_path_max): New function.
+
+Mon Oct 12 13:34:45 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.21.
+
+       * job.c (sys_siglist): Only declare #ifndef SYS_SIGLIST_DECLARED.
+       * make.h [! HAVE_SYS_SIGLIST && HAVE__SYS_SIGLIST]: #define
+       SYS_SIGLIST_DECLARED.
+
+       * dir.c (file_impossible): When initializing DIR->contents, set
+       DIR->contents->dirstream to nil.
+
+       * compatMakefile (GLOB): Define new variable.
+       (objs): Use it, rather than glob/libglob.a explicitly.
+
+       * read.c (parse_file_seq): When stripping "./", handle cases like
+       ".///foo" and "./////".
+       * file.c (lookup_file, enter_file): Likewise.
+
+Sun Oct 11 17:00:35 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * dir.c (struct dirstream, {open,read}_dirstream): New
+       data type and functions to read a directory sequentially.
+       (init_dir): New function to hook it into glob.
+       * main.c (main): Call init_dir.
+
+       * compatMakefile (objs): Added glob/libglob.a.
+       * configure.in: Remove code to test for glob.
+
+Fri Oct  9 12:08:30 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (record_files): Generalized test for NAME pointing
+       somewhere into F->name.
+
+       * variable.c (define_variable_in_set): Free old value when replacing.
+
+       * read.c (do_define): Free the linebuffer before returning.
+       (record_files): When clearing .SUFFIXES deps, free their data.
+       (multi_glob): Free OLD and its data when replacing it with results
+       of glob run.
+
+       * commands.c (set_file_variables): Use alloca in place of xmalloc
+       for temp space for $^, $?, et al.
+
+       * dir.c (struct directory): New member `contents' replaces `files'
+       and `dirstream'.
+       (struct directory_contents): New type.
+       (directories_contents): New hash table.
+       (dir_struct_file_exists_p): Take a struct directory_contents.
+       (dir_file_exists_p): Pass it the `contents' member of the dir found.
+       (dir_struct_file_exists_p): Renamed to dir_contents_file_exists_p;
+       made static.  Return 0 if DIR is nil (meaning it couldn't be stat'd).
+       (dir_file_exists_p, find_directory): Change all callers.
+       (file_impossible): Use DIR->contents, initializing it if nil.
+       (print_dir_data_base): Use DIR->contents, and print out device and
+       inode numbers with each directory.
+
+       * Changes for performance win from John Gilmore <gnu@cygnus.com>:
+       * dir.c (DIRECTORY_BUCKETS): Increase to 199.
+       (DIRFILE_BUCKETS): Decrease to 107.
+       (find_directory): Allocate and zero a multiple of
+       sizeof (struct dirfile *), not of sizeof (struct dirfile).
+       (dir_struct_file_exists_p): New function, nearly all code from
+       dir_file_exists_p.
+       (dir_file_exists_p): Just call find_directory+dir_struct_file_exists_p.
+       * vpath.c (selective_vpath_search): Remove redundant
+       dir_file_exists_p call.
+
+       * configure.in: Comment out glob check; always use our code.
+
+Fri Oct  2 19:41:20 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * make.h [! HAVE_SYS_SIGLIST && HAVE__SYS_SIGLIST]: #define
+       HAVE_SYS_SIGLIST; after doing #define sys_siglist _sys_siglist, we
+       do have it.
+
+Wed Sep 30 19:21:01 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (main): Don't do -w automatically if -s.
+
+Tue Sep 29 21:07:55 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (printed_version): Move variable inside print_version.
+       (print_version): Return immediately if printed_version is set.
+       (die): Don't test printed_version here.
+       (decode_switches): Under -v, do print_version before giving usage.
+       (DESCRIPTION_COLUMN): New macro.
+       (decode_switches): Use it when printing the usage message.
+       Leave at least two spaces between options and their descriptions.
+
+Fri Sep 25 13:12:42 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.20.
+
+Wed Sep 16 16:15:22 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Save errno value from trying to open
+       FILENAME, and restore it before erring; otherwise we get the errno
+       value from the last elt of the search path.
+
+Tue Sep 15 15:12:47 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (long_option_aliases): Add --stop for -S.
+
+       * read.c (word1eq): Do strncmp before dereferencing someplace that
+       may be out in space.
+
+Wed Sep  9 15:50:41 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * remake.c (notice_finished_file): If all the command lines were
+       recursive, don't do the touching.
+
+       * job.c (start_job_command): Don't check for + here.
+       * commands.c (chop_commands): Do it here instead.
+
+       * default.c (default_terminal_rules): Prepend + to cmds for RCS.
+
+Wed Sep  2 17:53:08 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * compatMakefile (objs): Include $(ALLOCA).
+
+       * make.h [CRAY]: Move #define signal bsdsignal to before #includes.
+
+Thu Aug 27 17:45:43 1992  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * read.c (default_include_directories): Add INCLUDEDIR first.
+       * compatMakefile (includedir): Define.
+       (defines): Add -D for INCLUDEDIR="$(includedir)".
+
+       * read.c (read_makefile): Grok multiple files in `include';
+       globbing too.
+
+       * remake.c (library_search): New function.
+       (library_file_mtime): Remove function.
+       (f_mtime): Use library_search instead of library_file_mtime.
+       * compatMakefile (libdir): Define.
+       (defines): Add -D for LIBDIR="$(libdir)".
+       * make.texinfo (Libraries/Search): Document change.
+
+       * file.c (rename_file): Fix file_hash_enter call with missing arg.
+
+Wed Aug 26 17:10:46 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.19.
+
+       * main.c (main): Set command_state to cs_finished for temp files
+       made for stdin makefiles.
+
+       * main.c (decode_switches): Don't tell getopt to return non-option
+       args in order.
+       Ignore an argument of `-'.
+
+Thu Aug 20 13:36:04 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * job.c (start_job_command): If (touch_flag && !RECURSIVE), ignore
+       the command line and go to the next.
+       (notice_finished_file): Under -t, touch FILE.
+       * remake.c (remake_file): Don't touch it here.
+
+Wed Aug 19 16:06:09 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * function.c (pattern_matches): Use temporary for strlen (WORD)
+       instead of two function calls.
+
+       * compatMakefile (LOAD_AVG): Remove variable and comments.
+
+Tue Aug 18 14:58:58 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * make.texinfo (Running): Node renamed to `make Invocation'.
+
+Fri Aug 14 12:27:10 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * arscan.c (ar_name_equal): Don't compare [MAX-3..MAX] if
+       NAMELEN != MEMLEN.
+
+Thu Aug 13 17:50:09 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.18.
+
+       * main.c: Don't #include <time.h>; make.h already does.
+
+Mon Aug 10 17:03:01 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * implicit.c (pattern_search): Fixed copying of suffix when building
+       also_make elts.
+
+       * function.c (expand_function: `shell'): Make sure BUFFER is
+       null-terminated before replacing newlines.
+
+       * compatMakefile (mandir): Use man$(manext), not always manl.
+
+Sun Aug  2 01:42:50 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * rule.c (new_pattern_rule): Not static.
+       * rule.h: Declare it.
+
+       * file.c (file_hash_enter): New function, most code from rename_file.
+       (rename_file): Call it.
+       * file.h (file_hash_enter): Declare it.
+
+       * dep.h: Doc fix.
+
+Thu Jul 30 15:40:48 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (decode_switches): Handle usage_and_exit when building
+       long options vector.
+
+       * default.c (default_terminal_rules): Make RCS rules use $(CHECKOUT,v).
+       (default_variables): Define CHECKOUT,v (hairy).
+
+       * make.h [!HAVE_SYS_SIGLIST && HAVE__SYS_SIGLIST]: #define
+       sys_siglist to _sys_siglist.
+
+Sun Jul 26 16:56:32 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * NEWS: Add header and tail copyright info like Emacs NEWS.
+
+       * make.h [ANSI_STRING]: Don't #define index, rindex, bcmp, bzero,
+       bcopy if already #define'd.
+       [STDC_HEADERS] (qsort, abort, exit): Declare here.
+       [! __GNU_LIBRARY__ && !POSIX]: Not here.
+
+       * make.h [_AIX]: #pragma alloca first thing.
+
+       * job.c (start_waiting_job): Set the command_state to cs_running
+       when we queue a job on waiting_jobs.
+
+Fri Jul 24 02:16:28 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * variable.c (define_automatic_variables): Use "" instead of nil
+       for empty value.
+
+Thu Jul 23 22:31:18 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.17.
+
+       * main.c (struct command_switch.type): Add alternative usage_and_exit.
+       (command_switches): Add -h/--help.
+
+Thu Jul 16 14:27:50 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * GNUmakefile (make-$(version).tar.Z): Include NEWS, not CHANGES.
+       * README.template: Mention NEWS.
+       * CHANGES: Renamed to NEWS.
+
+       * main.c [! STDC_HEADERS] [sun]: Don't declare exit.
+
+Tue Jul 14 18:48:41 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (main): Set -o files' command_states to cs_finished.
+
+       * rule.c (count_implicit_rule_limits): Decrement num_pattern_rules
+       when tossing a rule.
+
+       * main.c (main): Use alloca only in simple local var assignment,
+       for braindead SGI compiler.
+
+       * rule.c (print_rule_data_base): Barf if num_pattern_rules is
+       inconsistent with the number computed when listing them.
+
+Mon Jul 13 17:51:53 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * commands.c (set_file_variables): For $? and $^ elts that are archive
+       member refs, use member name only.
+
+Fri Jul 10 00:05:04 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * variable.h (struct variable.export): Add new alternative v_ifset.
+       * variable.c (target_environment): Check for it.
+       (define_automatic_variables): Set it for MAKEFILES.
+
+Thu Jul  9 21:24:28 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (objs): Remove getloadavg.o; $(extras) gets it.
+       (remote.o): Use $(srcdir)/remote.c, not $remote.c<.
+       (distclean, mostlyclean): New targets.
+
+Tue Jul  7 19:12:49 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.16.
+
+       * compatMakefile (config.status): Remove rule.
+
+       * job.c (start_waiting_job): Free C after using C->file, not before.
+
+Sat Jul  4 20:51:49 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * commands.c, job.c, main.c, make.h, remote-cstms.c: Use #ifdef
+       HAVE_* instead of #ifndef *_MISSING.
+       * configure.in: Use AC_HAVE_FUNCS instead of AC_MISSING_FUNCS (gone).
+
+Thu Jul  2 18:47:52 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * main.c (main): makelevel>0 or -C implies -w.
+
+Tue Jun 30 20:50:17 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * file.c, job.c, function.c: Don't #include <errno.h>.
+       make.h: Do it here instead.
+       * arscan.c (ar_member_touch): Don't declare errno.
+
+Thu Jun 25 17:06:55 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * GNUmakefile (make-$(version).tar.Z): Depend on INSTALL, configure.in.
+
+       * remake.c (update_file): If commands or deps are running after
+       update_file_1 returns, break out of the :: rule (->prev) loop and
+       just return.
+
+       * job.c (job_next_command): New function; code from start_job.
+       (start_job_command): Renamed from start_job.  Call job_next_command
+       and recurse for empty command lines and -n.
+       (start_waiting_job): Call start_job_command, not start_job.
+       (new_job): Call job_next_command to prime the child structure, and
+       then call start_waiting_job.
+       (reap_children): Use job_next_command and start_job_command.
+       (start_waiting_job): Call start_remote_job_p here, and store its
+       result in C->remote.  If zero, check the load average and
+       maybe put C on waiting_jobs.
+       (start_job_command): Test CHILD->remote rather than calling
+       start_remote_job_p.  Don't do load avg checking at all here.
+
+       * main.c (main): Don't handle SIGILL, SIGIOT, SIGEMT, SIGBUS,
+       SIGSEGV, SIGFPE or SIGTRAP.
+
+       * compatMakefile (glob/libglob.a): Don't pass srcdir to sub-make.
+       configure will set it in glob/Makefile.
+
+Wed Jun 24 19:40:34 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * dir.c [DIRENT] (direct): Don't define to dirent.
+       [! DIRENT] (direct): Define to dirent.
+       (dir_file_exists_p): Use struct dirent instead of struct direct.
+
+       * make.h (getcwd): No space between macro and ( for args!
+
+       * job.c (start_job): Don't put the job on waiting_jobs if
+       job_slots_used==0.
+
+       * make.texinfo (Missing): Shortened title.
+
+Tue Jun 23 18:42:21 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * file.c (remove_intermediates): Print "rm" commands under -n.
+
+Mon Jun 22 16:20:02 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.15.
+
+Fri Jun 19 16:20:26 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * arscan.c [M_UNIX]: #undef M_XENIX.
+
+Wed Jun 17 17:59:28 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * default.c (default_terminal_rules): Put @ prefix on RCS cmds.
+
+Tue Jun 16 19:24:17 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (getloadavg.o): Removed special rule.
+       (CFLAGS): Don't include $(defines).
+       (.c.o): Define suffix rule.
+       (glob/libglob.a): Pass CPPFLAGS=$(defines) to submake.
+       (GETOPT_SRC, srcs, tagsrcs): Prefix files with $(srcdir)/.
+
+       * arscan.c (ar_name_equal): Moved local vars inside #if'd block.
+
+       * make.h (max): Removed.
+       * expand.c (variable_buffer_output): Don't use it.
+
+       * compatMakefile (INSTALL): Define.
+       (Makefile): New rule to make from Makefile.in.
+       (srcdir): Define.
+       (VPATH): Define.
+       (getloadavg.o, remote.o): Use autoconf $foo< hack.
+
+       * commands.c (fatal_error_signal): Removed return.
+
+Mon Jun 15 17:42:51 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.14.
+
+       * make.texinfo (Summary): New node.
+       (Special Targets): Mention .EXPORT_ALL_VARIABLES here.
+
+       * variable.c (max): Moved to make.h.
+
+       * compatMakefile (objs, srcs): Added ar & arscan.
+
+       * job.c (start_waiting_job): New function, 2nd half of new_job.
+       (new_job): Call it.
+       (start_waiting_jobs): New function.
+       * remake.c (update_goal_chain): Call start_waiting_jobs at the top
+       of the main loop.
+       * compatMakefile (objs, srcs): Removed load, added getloadavg.
+
+Fri Jun 12 19:33:16 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * job.c (load_too_high): New function.  Uses getloadavg.
+       (waiting_jobs): New variable.
+       (start_job): Don't call wait_to_start_job.  Instead, if
+       load_too_high returns nonzero, add the child to the
+       `waiting_jobs' chain and return without starting the job.
+
+Thu Jun 11 00:05:28 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * expand.c (variable_buffer_output): Made global again.
+       * variable.h: And declare it.
+
+       * arscan.c (PORTAR): Define for all systems if PORT5AR is not defined.
+       (AR_NAMELEN, AR_TRAILING_SLASH): Removed.
+       (ar_scan): Don't use it.  Don't #ifdef AR_TRAILING_SLASH; just look
+       for a slash in the archive at run time.
+       (ar_name_equal): Rewrote .o hacking to not use AR_NAMELEN, and to
+       cope with trailing-slash and non-trailing-slash archives.
+
+       * main.c (main) [! SETVBUF_REVERSED]: Test this instead of USGr3 et al.
+       [SETVBUF_REVERSED]: Always allocate a buffer ourselves.
+
+       * load.c (load_average) [sgi]: Use sysmp call.
+
+       * compatMakefile (INSTALL_DATA, INSTALL_PROGRAM): Define.
+       ($(bindir)/$(instname), $(mandir)/make.$(manext)): Use them.
+
+       * make.h [HAVE_VFORK_H]: #include <vfork.h>.
+       (vfork, VFORK_NAME): Don't define.
+       * job.c (start_job): Use "vfork" in place of VFORK_NAME.
+
+       * make.h [HAVE_LIMITS_H, HAVE_SYS_PARAM_H]: If #define'd, #include
+       the each file.  Rearranged PATH_MAX hacking.
+       * job.c: Rearranged NGROUPS_MAX hacking.
+
+       * remake.c (fstat, time): Don't declare.
+
+       * compatMakefile (defines): Value is @DEFS@.
+       (LOADLIBES): Value is @LIBS@.
+       (extras): Value is @LIBOBJS@.
+       (ARCHIVES, ARCHIVES_SRC, ALLOCASRC): Removed.
+       * arscan.c, ar.c: Surround body with #ifndef NO_ARCHIVES.
+
+       * misc.c [! HAVE_UNISTD_H]: Test instead of !POSIX to decl get*id.
+
+       * make.h [GETCWD_MISSING]: Test instead of !USG && !POSIX et al.
+       (getcwd): Just declare if present.  If not, declare as a macro
+       using getwd, and declare getwd.
+       [PATH_MAX] (GET_PATH_MAX): #define to PATH_MAX.
+       * main.c (main, log_working_directory): Use getcwd instead of getwd.
+
+       * main.c (main) [SETLINEBUF_MISSING]: Test this instead of USG.
+
+       * make.h (SIGHANDLER, SIGNAL): Removed.
+       (RETSIGTYPE): Define if not #define'd.
+       * main.c (main): Use signal in place of SIGNAL.
+
+       * main.c [SYS_SIGLIST_MISSING]: Test instead of USG.
+
+       * job.c (search_path) [GETGROUPS_MISSING]: Test instead of USG.
+       [HAVE_UNISTD_H]: Test instead of POSIX to not decl getgroups.
+
+       * main.c [! HAVE_UNISTD_H]: Test instead of !POSIX to decl chdir.
+       [! STDC_HEADERS]: Test instead of !POSIX to decl exit & atof.
+
+       * job.c (child_handler), commands.c (fatal_error_signal): Return
+       RETSIGTYPE instead of int.
+       * main.c (main): Declare fatal_error_signal and child_handler here
+       to return RETSIGTYPE; removed top-level decl of former.
+
+       * commands.c (fatal_error_signal), job.c (unblock_sigs, start_job),
+       main.c [SIGSETMASK_MISSING]: Test this instead of USG.
+
+Wed Jun 10 22:06:13 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * job.c [HAVE_WAITPID]: Test this instead of USG.
+       [! HAVE_UNISTD_H]: Test this instead of !POSIX to declare misc fns.
+       (GID_T): Don't #define.
+       (search_path): Use gid_t instead of GID_T.
+       [GETDTABLESIZE_MISSING, SYS_SIGLIST_MISSING, DUP2_MISSING]: Test
+       these individually instead of USG for all.
+       * make.h (ctime): Don't declare.  #include time.h instead.
+       [HAVE_UNISTD_H]: #include <unistd.h> and #define POSIX #ifdef
+       _POSIX_VERSION.
+       * dir.c [__GNU_LIBRARY__] (D_NAMLEN): Define to use d_namlen member.
+       * make.h [NEED_MEMORY_H]: Only include memory.h #ifdef this.
+
+       * arscan.c: Removed #ifdef mess about string.h et al.
+       Just #include make.h instead.
+       * make.h (fstat, atol): Declare.
+
+       * commands.c (fatal_error_signal): Don't use sigmask to check for
+       propagated signals; use ||s instead.
+       (PROPAGATED_SIGNAL_MASK): Removed.
+       (fatal_error_signal) [POSIX]: Use sigprocmask in place of sigsetmask.
+
+       * variable.c (variable_buffer, variable_buffer_length,
+       initialize_variable_output, variable_output): Moved to expand.c;
+       made all static.
+       (struct output_state, save_variable_output,
+       restore_variable_output): Removed.
+       * expand.c (initialize_variable_output): Put a NUL at the beginning
+       of the new buffer after allocating it.
+       (allocated_variable_expand_for_file): Don't use
+       {save,restore}_variable_output.  Do it by hand instead, keeping
+       state on the stack instead of malloc'ing it.
+       (allocated_variable_expand): Removed.
+       * variable.h (allocated_variable_expand): Define here as macro.
+       (variable_buffer_output, initialize_variable_output,
+       save_variable_output, restore_variable_output): Removed decls.
+
+       * read.c (conditional_line): For an if cmd, if any elt of the
+       conditionals stack is ignoring, just push a new level that ignores
+       and return 1; don't evaluate the condition.
+
+Thu Jun  4 21:01:20 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (main): Put #ifdef's around frobbing SIGSYS and SIGBUS.
+
+       * job.c (getdtablesize): Don't declare or #define if already #define'd.
+
+Wed Jun  3 23:42:36 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * file.c (snap_deps): If `.EXPORT_ALL_VARIABLES' is a target, set
+       export_all_variables.
+       * make.texinfo (Variables/Recursion): Document .EXPORT_ALL_VARIABLES.
+
+Tue Jun  2 21:08:35 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.13.
+
+       * commands.c (set_file_variables): Calculate length for ^D and ?D
+       individually, making sure to give them at least enough space for "./".
+
+       * make.h [CRAY]: #define signal to bsdsignal.
+
+       * default.c (default_variables) [CRAY]: Define PC, SEGLDR,
+       CF77PPFLAGS, CF77PP, CFT, CF, and FC.
+
+       * arscan.c (AR_HDR_SIZE): Define to sizeof (struct ar_hdr), if it
+       wasn't defined by <ar.h>.
+
+Thu May 28 00:56:53 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.12.
+
+Tue May 26 01:26:30 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * rule.c (new_pattern_rule): Initialize LASTRULE to nil, not
+       pattern_rules.
+
+Mon May 25 19:02:15 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (decode_switches): Initialize all the long_option elt members.
+
+Thu May 21 16:34:24 1992  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * make.texinfo (Text Functions): Correct filter-out description.
+
+Tue May 19 20:50:01 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * compatMakefile (realclean): Don't remove backup files.
+
+       * main.c (decode_switches): Allocate ARGC+1 elts in `other_args'.
+
+Sun May 17 16:38:48 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * Version 3.62.11.
+
+Thu May 14 16:42:33 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * job.c (reap_children): Don't die if wait returns EINTR.
+
+Wed May 13 18:28:25 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * job.c (reap_children): Always run the next command for a
+       successful target.  If we are going to die, we don't want to leave
+       the target partially made.
+
+Tue May 12 00:39:19 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): After loop, if we only
+       have one word, check it for being a shell command.
+
+       * main.c (decode_switches): Allocate ARGC slots in other_args to
+       begin with, so we never need to worry about growing it.
+       If we get a non-option arg and POSIXLY_CORRECT is in the
+       environment, break out of the loop.  After the loop, add all remaining
+       args to other_args list.
+
+       * main.c (decode_switches): For positive_int and floating switches
+       when optarg is nil, use next arg if it looks right (start with a
+       digit, or maybe decimal point for floating).
+
+       * variable.c (define_automatic_variables): Always set SHELL to
+       default if it comes from the environment.  Set its export bit.
+       * make.texinfo (Environment): Document change.
+
+Mon May 11 00:32:46 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * Version 3.62.10.
+
+       * compatMakefile (tags, TAGS): Use vars for cmds.
+       (ETAGS, CTAGS): Define.
+
+       * main.c (decode_switches): If a switches elt has a nil long_name,
+       make the long option name elt be "".
+       Fixed loop to not ignore all the options.
+
+       * make.texinfo (Option Summary): Added long options.
+
+       * main.c (switches): Changed -m's description to "-b".
+       (decode_switches): When printing the usage message, don't print
+       switches whose descriptions start with -.
+       When constructing the list of names for switch -C, search the
+       switches vector for switches whose descriptions are "-C".
+
+       * main.c (switches): Call -S --no-keep-going, not --dont-keep-going.
+       Call -I --include-dir, not --include-path.
+       (long_option_aliases): Added --new == -W, --assume-new == -W,
+       --assume-old == -o, --max-load == -l, --dry-run == -n, --recon == -n,
+       --makefile == -f.
+
+       * main.c (switches): Removed bogus "silent" elt.
+       (long_option_aliases): Define new var.
+       (decode_switches): Add long_option_aliases onto the end of the long
+       options vector created for getopt_long.
+       Look through long_option_aliases for extra names to list
+       in usage message.
+
+Sat May  9 00:21:05 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (log_working_directory): Fixed to properly not print the
+       leaving message when we haven't printed the entering message.
+
+Fri May  8 21:55:35 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (struct command_switch): Added elts `long_name', 
+       `description', and `argdesc'.
+       (switches): Added initializers for new members.
+       (decode_switches): Rewritten to use getopt_long.
+       * compatMakefile (GETOPT, GETOPT_SRC): Define.
+       (objs, srcs): Include them.
+
+       * job.c (child_died): Renamed to dead_children; made static.
+       (child_handler): Increment dead_children instead of setting child_died.
+       (reap_children): Decrement dead_children instead of clearing
+       child_died.  The point of all this is to avoid printing "waiting
+       for unfinished jobs" when we don't actually need to block.
+       This happened when multiple SIGCHLDs before reap_children was called.
+
+       * job.c (reap_children): If ERR is set, so we don't call start_job
+       on the child being reaped, instead set its command_state to
+       cs_finished.
+       (reap_children, child_handler, new_job): I added several
+       debugging printf's while fixing this.  I left them in if (debug_flag) 
+       because they may be useful for debugging this stuff again.
+
+Wed May  6 22:02:37 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): v_export is not 1.
+
+Mon May  4 17:27:37 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.9.
+
+       * variable.c (export_all_variables): New variable.
+       (target_environment): Export variables whose `export' member is
+       v_default if export_all_variables is set and their names are benign.
+       * variable.h: Declare export_all_variables.
+       * read.c (read_makefile): If export or unexport is given with no
+       args, set or clear export_all_variables, respectively.
+
+       * variable.c (target_environment): Exclude MAKELEVEL in the loop,
+       so it isn't duplicated when we add it at the end.
+
+Sun May  3 17:44:48 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.8.
+
+       * variable.h (struct variable): Added new member `export'.
+       * variable.c (define_variable_in_set): Initialize it to v_default.
+       (target_environment): Don't check for .NOEXPORT.
+       Export variables whose `export' member is v_default and that would
+       have been exported under .NOEXPORT, and variables whose `export'
+       member is v_export.
+       (try_variable_definition): Return the variable defined.
+       * variable.h (try_variable_definition): Changed decl.
+       * read.c (read_makefile): Recognize `export' and `unexport' directives.
+
+Fri May  1 11:39:38 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * main.c (main) [POSIX]: Reversed args to sigaddset.
+
+Thu Apr 30 17:33:32 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * job.c [POSIX || !USG] (unblock_sigs): New fn.
+       (start_job): Block signals before forking.
+       (new_job): Unblock signals after putting the new child on the chain.
+       * main.c (main) [POSIX]: Use sigset_t fatal_signal_set instead of
+       int fatal_signal_mask.
+
+       * load.c [sgi] (LDAV_CVT): Define.
+
+Wed Apr 29 17:15:59 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * Version 3.62.7.
+
+       * load.c (load_average) [sgi]: Clear the high bit of the address
+       from the symbol table before looking it up in kmem.
+
+       * misc.c (fatal, makefile_fatal): Put *** in fatal error messages.
+       (remake_file): No longer needed in message here.
+
+       * main.c (die): Call reap_children with BLOCK==1.
+
+Tue Apr 28 20:44:35 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * rule.c (freerule): Don't set LASTRULE->next if LASTRULE is nil.
+
+Sun Apr 26 15:09:51 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * rule.c (count_implicit_rule_limits): Initialize LASTRULE to nil,
+       not to head of chain.  Extract next ptr before we might do
+       freerule, and use that for next iteration.
+       (freerule): Still do next ptr frobbing if LASTRULE is nil.
+
+Tue Apr 21 03:16:29 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * job.c (child_error): Removed extra %s from error msg format.
+
+       * Version 3.62.6.
+
+       * job.c (reap_children): Don't start later commands in a sequence
+       if ERR is nonzero.
+
+       * job.c (new_job): Always call reap_children with BLOCK==0 first thing.
+
+       * job.c (reap_children): New function; work that used to be done in
+       child_handler.
+       (child_died): New global var.
+       (child_handler): Now just sets child_died.
+       (wait_for_children): Removed.
+       (unknown_children_possible, block_signals, unblock_signals,
+       push_signals_blocked_p, pop_signals_blocked_p): Removed.
+       (child_execute_job): Removed call to unblock_signals.
+       (new_job): Removed calls to push_signals_blocked_p and
+       pop_signals_blocked_p.
+       * job.h: Declare reap_children, not wait_for_children.
+       * commands.c (fatal_error_signal), job.c (new_job),
+       load.c [LDAV_BASED] (wait_to_start_job), main.c (die),
+       remake.c (update_goal_chain), function.c (expand_function: `shell'):
+       Changed wait_for_children calls to reap_children.
+       Some needed to be loops to wait for all children to die.
+       * commands.c (fatal_error_signal), main.c (main,
+       log_working_directory), function.c (expand_function): Removed calls
+       to push_signals_blocked_p and pop_signals_blocked_p.
+       * job.h: Removed decls.
+
+       * job.h: Added copyright notice.
+
+Wed Apr 15 02:02:40 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (child_error): No *** for ignored error.
+
+Tue Apr 14 18:31:21 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * implicit.c (DEBUGP2): Use do ... while (0) instead of if ... else to
+       avoid compiler warnings.
+
+       * read.c (parse_file_seq): Don't remove ./ when it is followed by a
+       blank.
+
+Mon Apr 13 21:56:15 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h (DEBUGPR): Use do ... while (0) instead of if ... else to
+       avoid compiler warnings.
+
+       * remake.c (notice_finished_file): Run file_mtime on the also_make
+       files, so vpath_search can happen.
+
+       * GNUmakefile (tests): Use perl test suite from csa@sw.stratus.com.
+       (alpha-files): Include test suite tar file.
+
+Fri Apr  3 00:50:13 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.62.5.
+
+Wed Apr  1 05:31:18 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * remake.c (update_file, update_file_1): Do check_renamed on elts
+       of dep chains when traversing them.  Something unrelated might have
+       renamed one of the files the dep chain points to.
+
+       * file.c (rename_file): If FILE has been renamed, follow its
+       `renamed' ptr, so we get to the final real FILE.  Using the renamed
+       ones loses because they are not in the hash table, so the removal
+       code loops infinitely.
+
+       * read.c (read_all_makefiles): Clobber null terminator into
+       MAKEFILES expansion, so string passed to read_makefile is properly
+       terminated.
+
+Mon Mar 30 20:18:02 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * commands.c (set_file_variables): $* for archive member with
+       explicit cmds is stem of member, not of whole `lib(member)'.
+
+Thu Mar 26 15:24:38 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * Version 3.62.4.
+
+Tue Mar 24 05:20:51 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * rule.c (new_pattern_rule): Rules are identical only if all their
+       targets match (regardless of order).
+
+Wed Mar 11 13:49:54 1992  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * remake.c (remake_file): Changed error "no way to make" to "no
+       rule to make".  Fiat Hugh.
+
+       * make.texinfo (Last Resort): Describe %:: rules and new .DEFAULT
+       behavior.
+
+       * remake.c (update_file_1): Only use .DEFAULT cmds if FILE is not a
+       target.
+
+Tue Mar 10 18:13:13 1992  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * remote-stub.c, remote-cstms.c (start_remote_job): Take new arg,
+       environment to pass to child.
+       * job.c (start_job): Pass it.
+
+Mon Mar  9 19:00:11 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * file.c (enter_file): Also strip ./s here, to get command-line
+       target names.
+
+       * remote-cstms.c: Add comment telling people to leave me alone.
+
+       * compatMakefile (manpage install): Remove target before copying.
+
+Tue Mar  3 18:43:21 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.texinfo (Missing): Renamed to "Incompatibilities and ...".
+       Added paragraph describing $? incompatibility with Unix and POSIX.2.
+
+Sun Mar  1 15:50:54 1992  Roland McGrath  (roland@nutrimat.gnu.ai.mit.edu)
+
+       * function.c (expand_function: `shell'): Don't declare fork or pipe.
+       Use vfork instead of fork.
+
+Tue Feb 25 22:05:32 1992  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * make.texinfo (Chained Rules): Clarify .PRECIOUS to save
+       intermediate files.
+
+       * load.c [sun] (LDAV_CVT): Define to divide by FSCALE.
+
+Sun Feb 16 02:05:16 1992  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * Version 3.62.3.
+
+Sat Feb 15 17:12:20 1992  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * compatMakefile (makeinfo): Use emacs batch-texinfo-format fn.
+
+Fri Feb 14 00:11:55 1992  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Correctly handle define & endef in ifdefs.
+
+       * read.c (record_files): Pass arg for %s in error msg.
+
+       * main.c (main) [__IBMR2, POSIX]: Use correct (a la USGr3) setvbuf
+       call.
+
+Wed Feb 12 12:07:39 1992  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * make.texinfo (Libraries/Search): Say it does /usr/local/lib too.
+
+Sun Feb  9 23:06:24 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Check for extraneous `endef' when ignoring.
+
+Thu Feb  6 16:15:48 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.2.
+
+Tue Feb  4 20:04:46 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): Correctly ignore
+       whitespace after backslash-NL.
+
+Fri Jan 31 18:30:05 1992  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile: Ignore errors from chgrp and chmod when installing.
+
+Wed Jan 29 18:13:30 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * main.c (main): When setting MAKELEVEL in the env to re-exec,
+       allocate space so as not to clobber past the end of the old string.
+
+       * make.h [HAVE_ALLOCA_H]: Include <alloca.h>
+       * compatMakefile (defines): Document HAVE_ALLOCA_H.
+
+Mon Jan 20 13:40:05 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * make.h [VFORK_MISSING]: Use fork instead.
+       * compatMakefile (defines): Document same.
+
+       * job.c (construct_command_argv_internal): Don't create an empty
+       arg if backslash-NL is at beginning of word.
+
+Sun Jan 19 16:26:53 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * main.c [DGUX]: Call setvbuf as for USGr3.
+
+       * job.c (construct_command_argv_internal): Notice correctly that
+       backslash-NL is the end of the arg (because it is replaced with a
+       space).
+
+Thu Jan 16 18:42:38 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): If SHELL is nil, set it
+       to default_shell before proceeding.
+
+       * make.h [sgi]: No alloca.h, after all.
+
+Wed Jan 15 12:30:04 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * read.c (multi_glob): Cons up the chain of the results of glob
+       from back to front, so it comes out in forward order.
+
+       * job.c (construct_command_argv_internal): Don't eat char following
+       backslash-NL.
+
+Mon Jan 13 19:16:56 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * Version 3.62.1.
+
+       * default.c (default_variables) [ultrix]: GET=get, like USG.
+
+       * job.c (construct_command_argv_internal): Remove tabs following
+       backslash-NL combos in the input line, so they don't show up when
+       that line is printed.
+
+       * read.c (read_makefile): Don't collapse_continuations the line on
+       input; do it on the copy we do remove_comments on.
+       For rule lines, collapse_continuations the line after chopping
+       ";cmds" off the end, so we don't eat conts in the cmds.
+       Give error for ";cmds" with no rule.
+       * job.c (construct_command_argv_internal): Eat backslash-NL combos
+       when constructing the line to recurse on for slow, too.
+
+Sat Jan 11 02:20:27 1992  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * file.c (enter_file): Don't strip leading `./'s.
+       * read.c (parse_file_seq): Take new arg STRIP; if nonzero, do it here.
+       * default.c (set_default_suffixes), function.c (string_glob),
+       read.c (read_makefile), rule.c (install_pattern_rule): Change callers.
+
+       * default.c (default_variables) [_IBMR2]: FC=xlf
+
+       * job.c (construct_command_argv_internal): Turn backslash-NL and
+       following whitespace into a single space, rather than just eating
+       the backslash.
+
+       * make.texinfo (Copying): @include gpl.texinfo, rather than
+       duplicating its contents.
+
+Fri Nov  8 20:06:03 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): Make sure not to bother
+       processing an empty line.
+
+       * Version 3.62.0.
+
+       * job.c (construct_command_argv_internal): Always recurse for slow;
+       simple case didn't handle finding newlines.
+
+Tue Nov  5 18:51:10 1991  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): Set RESTP properly when
+       slow; don't \ify past a newline.
+
+Fri Nov  1 19:34:28 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h [sgi]: #include <alloca.h>.
+
+Tue Oct 29 20:57:36 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.62.
+
+       * remake.c (update_file_1): Check for deps still running before
+       giving up if any dep has failed.
+
+Sat Oct 26 16:20:00 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h [uts]: #undef S_ISREG and S_ISDIR if defined.
+
+Fri Oct 25 19:50:39 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.60.17.
+
+Thu Oct 24 16:58:36 1991  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * job.c (start_job): Don't check for empty cmds before tweaking the
+       command_ptr.  Just let construct_command_argv do it.
+
+Tue Oct 22 20:21:03 1991  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * remake.c, arscan.c [POSIX]: <fcntl.h> instead of <sys/file.h>.
+
+       * make.h [POSIX]: Declare vfork as pid_t.
+
+Mon Oct 21 15:37:30 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.60.16.
+
+       * job.c (construct_command_argv, construct_command_argv_internal):
+       Take new 2nd arg RESTP.  If non-NULL, stop parsing at newline, and
+       store addr of the NL in *RESTP.
+       (start_job): Don't chop expanded cmd lines up; use above code to do it.
+       * function.c (expand_function: `shell'): Pass RESTP==NULL.
+
+Sat Oct 19 15:36:34 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.60.15.
+
+Fri Oct 18 15:26:55 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c (start_job): If on the same cmds->command_lines elt, look
+       at cmds->lines_recurse[CHILD->command_line - 1] instead of
+       [CHILD->command_line].
+
+       * dir.c [sgi]: <sys/dir.h>, not ndir or anything else.
+
+Thu Oct 17 16:28:55 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * file.c (print_file_data_base): Remove unused var.
+
+       * make.h [NeXT]: No #define ANSI_STRING.
+
+Tue Oct 15 20:08:41 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.60.14.
+
+Fri Oct 11 16:23:52 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * make.h: Use PATH_MAX for getwd defn.
+
+       * make.h: Move getcwd/getwd outside of #ifndef POSIX, and make it
+       #if USG||POSIX.
+
+Thu Oct 10 11:53:31 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.60.13.
+
+       * read.c (read_all_makefiles): When processing MAKEFILES, save the
+       malloc'd ptr to be freed, instead of freeing part-way thru it.
+
+       * remake.c (update_file_1): Don't tweak FILE->also_make.
+       (update_file): Do it here.  After calling update_file_1, set the
+       command_state, update_status, and updated members of each also_make
+       elt to FILE's values.
+
+Tue Oct  8 14:56:04 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * Version 3.60.12.
+
+       * remake.c (notice_finished_file): Set command_state of FILE and
+       its also_make chain to cs_finished here.
+       * commands.c (execute_file_commands), job.c (child_handler),
+       remake.c (remake_file): Don't set it before calling
+       notice_finished_file.
+
+       * file.h (struct file): Changed `also_make' to struct dep *.
+       * job.c (delete_child_targets), file.c (print_file_data_base),
+       remake.c (notice_finished_file), implicit.c (pattern_search):
+       Use dep chain instead of array of file names.
+
+Mon Oct  7 17:04:33 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.60.11.
+
+       * arscan.c: Declare open.
+       * misc.c: Declare {get,set}{re,}[ug]id.
+       * variable.c (target_environment): Declare getenv.
+
+Sat Oct  5 15:13:03 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * make.h [NeXT]: <string.h> instead of <strings.h>.
+
+Fri Oct  4 16:05:41 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * default.c (default_suffixes, defualt_suffix_rules): Add .texi
+       just like .texinfo.
+
+       * Version 3.60.10.
+
+       * job.c: Move vfork decl into make.h.
+
+Fri Sep 27 18:45:30 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * compatMakefile (glob/libglob.a): Pass CC value to submake.
+
+Thu Sep 26 00:08:15 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * load.c (load_average): Made not static.
+
+       * load.c [ultrix && vax]: Define LDAV_TYPE and LDAV_CVT for Ultrix 4.2.
+
+Tue Sep 24 00:17:20 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.60.9.
+
+       * read.c (record_files): Warn about extra cmds even if the target's
+       name begins with a dot.  I think the lusers can handle this.
+
+Mon Sep 23 22:33:26 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h, arscan.c: Don't declare bcmp, bzero, or bcopy if they're
+       #define'd.
+       * make.h: Declare write and open.
+
+       * default.c (default_suffixes, default_suffix_rules,
+       default_variables): Add .C just like .cc.
+       * make.texinfo (Catalogue of Rules): Document .C.
+
+       * make.man (-w): Fix gramo.
+
+Fri Sep 20 17:18:16 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h: No text after #endif.
+
+Sun Sep 15 16:20:46 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * Version 3.60.8.
+
+       * implicit.c (pattern_search): In the second pass, recurse on rule
+       deps that don't have a %.  Why did I make it not do this?
+
+Fri Sep 14 18:29:39 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * read.c (record_files): For extra cmds, use the last ones given.
+       If the target's name doesn't begin with a dot (bletch!!), emit a
+       two-line warning, one line giving the old cmds' location and the
+       other the new cmds' location.
+
+       * misc.c (makefile_error, makefile_fatal): New fns.
+       * make.h: Declare them.
+       * Use them instead of error/fatal for all msgs including a file
+       name and line number.
+
+Thu Sep 13 16:35:54 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * make.h: Declare define_default_variables.
+       Declare ar_parse_name, instead of ar_name_parse (M-t).
+
+Mon Sep 10 18:35:40 1991  Roland McGrath  (roland@wookumz.gnu.ai.mit.edu)
+
+       * Version 3.60.7.
+
+       * make.texinfo (Variables: Setting): Say whitespace is removed if
+       "immediately after =", rather than simply "after =".
+
+       * job.c: Don't declare wait #ifdef POSIX.
+
+       * make.h [__GNUC__]: #undef alloca and then #define it.
+
+       * main.c (main): When pruning makefiles which might loop from the
+       read_makefiles chain, look at all `prev' entries of double-colon rules.
+
+Fri Sep  7 00:41:53 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * main.c (main): Only remove makefiles with cmds but no deps from
+       the list of makefiles to be rebuilt if they are :: targets.
+       : targets with cmds and no deps are not dangerous.
+
+Wed Sep  5 17:35:51 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile (defines): Add comment that some compilers take
+       ENUM_BITFIELDS but produce bogus code.
+       (LOAD_AVG): Fix examples to \ "s.
+       (LOADLIBES): Add comment that SGI Irix needs -lmld for nlist.
+
+Tue Sep  4 20:26:26 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.60.6.
+
+Fri Aug 30 19:34:04 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * remake.c (update_file_1): When checking the command_state of
+       deps, check through the prev chain.
+       (update_goal_chain): When a target is finished, start checking its
+       prev (if it has one) instead.
+
+Wed Aug  7 17:32:03 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * rule.c (convert_to_pattern): Allow files with deps to define
+       suffix rules (really this time).
+
+Mon Aug  5 17:09:21 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * misc.c (user_access, make_access): Do saved-IDs (USG) flavor
+       #ifdef POSIX.
+
+       * file.c (enter_file): Strip ./s here.
+       * read.c (parse_file_seq): Not here.
+
+Tue Jul 23 23:34:30 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * compatMakefile: Added comment that -lPW alloca is broken on HPUX.
+
+Thu Jul 18 03:10:41 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.60.5.
+
+       * read.c (read_makefile): Ignore lines containing chars that are
+       all isspace, not just all isblank.
+
+       * make.texinfo (Copying): @include gpl.texinfo, rather than copying
+       the text.
+       * gpl.texinfo: New file (symlink to /gd/gnu/doc/gpl.texinfo).
+       * GNUmakefile: Put gpl.texinfo in distribution.
+
+Tue Jul 16 12:50:35 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * make.h: #define _GNU_SOURCE before including headers.
+       Include <ctype.h> and define isblank if <ctype.h> doesn't.
+       * commands.c: Don't include <ctype.h> here.
+       * *.c: Use isblank instead of explicit ' ' || '\t'.
+
+Mon Jul 15 17:43:38 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * function.c (expand_function: `filter'/`filter-out'): Fixed to not
+       loop infinitely.
+
+Fri Jul 12 12:18:12 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * function.c (expand_function: `filter'/`filter-out'): Rewritten to
+       handle filter-out of multiple patterns properly.  Also no longer
+       mallocs and reallocs for temp array; uses alloca and a linked-list
+       instead.
+
+Wed Jul 10 22:34:54 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.60.4.
+
+       * make.texinfo: Moved some @groups that were outside @examples to
+       be inside them.
+
+       * load.c [apollo] (load_average): Define using special syscall for
+       Apollo DOMAIN/OS SR10.n.
+
+Thu Jul  4 12:32:53 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * make.texinfo (Missing): Added Unix excessive implicit rule
+       search; mention that POSIX.2 doesn't require any of the missing
+       features.
+       (Top): Updated printed manual price to $15.
+
+Wed Jul  3 18:17:50 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * file.c (rename_file): Carry over last_mtime when merging files.
+       * remake.c (f_mtime): Tail-recurse after renaming VPATH file, to
+       check for saved date in existing renamed-to file.
+
+       * remote-cstms.c (start_remote_job): Use PATH_VAR.
+
+       * commands.c [POSIX || __GNU_LIBRARY__]: Don't declare getpid.
+
+       * compatMakefile (glob-{clean,realclean}): Run clean/realclean in glob.
+       (clean, realclean): Require those.
+
+       * make.h: Always declare environ.
+       Don't declare old glob functions.
+
+       * GNUmakefile: Make no-lib deps for load.c and remote.c.
+
+Tue Jul  2 18:35:20 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * Version 3.60.3.
+
+Mon Jul  1 16:58:30 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * read.c (multi_glob): Don't pass GLOB_QUOTE flag to glob.
+
+       * make.h [POSIX]: Include <unistd.h>, and don't declare things that
+       should be there.
+
+       * main.c (main) [USG && sgi]: malloc a buffer for broken sgi stdio.
+
+Sat Jun 29 11:22:21 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * function.c (expand_function: `shell'): Use alloca for the error
+       msg buffer, instead of assuming an arbitrary max size.
+
+Fri Jun 28 18:15:08 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * job.c [POSIX] (search_path): Do real 1003.1 goop to get NGROUPS_MAX.
+
+Wed Jun 26 11:04:44 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * default.c (define_default_variables): New fn.
+       (install_default_implicit_rules): Code for above fn moved there.
+       * main.c (main): Do define_default_variables before reading the
+       makefile.
+
+Tue Jun 25 17:30:46 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * main.c (main): Quote ; in MAKEOVERRIDES.
+
+Tue Jun 18 13:56:30 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * compatMakefile: Fixed typo in comment.
+
+Tue Jun 11 00:14:59 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * Version 3.60.2.
+
+Mon Jun 10 14:46:37 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h: Always include <sys/types.h>.
+       [POSIX]: Include <limits.h> and #define MAXPATHLEN to be PATH_MAX.
+
+       * default.c (default_suffix_rules: .texinfo.dvi): Use $(TEXI2DVI).
+       (default_variables): Define TEXI2DVI.
+
+Thu Jun  6 16:49:19 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.60.1.
+
+       * make.h (SIGNAL): Cast handler arg to SIGHANDLER type.
+
+Wed Jun  5 06:00:43 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * read.c (multi_glob): Use POSIX.2 `glob' function.
+       If a glob pattern matches nothing, leave it as is (a la sh, bash).
+       Also, if can't find USER for ~USER, leave it as is (a la bash).
+
+Mon Jun  3 16:36:00 1991  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
+
+       * compatMakefile: Rewrote comments about -Ds to be easier to use.
+
+       * make.h, arscan.c, remake.c, main.c, dir.c, job.c: Changed tests
+       of _POSIX_SOURCE to POSIX.
+
+       * job.c: Take getdtablesize out of #ifdef __GNU_LIBRARY__.
+       Put separately #ifdef USG.
+
+       * COPYING: Replaced with version 2.
+       * Changed copyright notices to refer to GPL v2.
+
+Thu May 30 00:31:11 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * make.h: Don't declare sigblock for POSIX.
+
+       * main.c (main, log_working_directory) [USG]: Get getcwd failure
+       mode from errno, not passed buffer like BSD getwd.
+
+       * misc.c (child_access): New fn to set access for a child process;
+       like user_access, but you can't change back.
+       * make.h: Declare it.
+       * job.c (exec_command): Use it in place of user_access.
+
+Wed May 29 23:28:48 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * default.c (default_variables) [pyr]: PC = pascal.
+
+Tue May 28 20:24:56 1991  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)
+
+       * variable.c (print_variable): Put a newline before `endef'.
+
+Sat May 25 02:39:52 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.60.
+
+Wed May 22 19:41:37 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * Version 3.59.5.
+
+Thu May 16 13:59:24 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * main.c (main): Do USGr3 setvbuf behavior #ifdef APOLLO.
+       Don't handle SIGCHLD #ifdef USG (Apollo is USG but defines SIGCHLD).
+
+Fri May 10 14:59:33 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * remake.c [sgi]: Don't include <sys/file.h>.
+
+Wed May  8 01:54:08 1991  Roland McGrath  (roland@geech.gnu.ai.mit.edu)
+
+       * make.h (SIGHANDLER): #define as (void *) #if __STDC__,
+       else (int (*)()).
+       (SIGNAL): Use it to cast return value.
+       * main.c (main): Cast SIG_IGN to SIGHANDLER when comparing.
+       * job.c (block_signals, unblock_signals): Use SIGNAL instead of signal.
+
+       * main.c: Declare mktemp to return char*, not int.
+
+       * job.c (new_job): Don't increment files_remade.
+       * remake.c (notice_finished_file): Do it here.
+
+       * read.c (do_define): Don't clobber DEFINITION[-1] on empty defns.
+       Free storage that is no longer needed.
+
+Wed Apr 24 20:49:48 1991  Roland McGrath  (roland at churchy.gnu.ai.mit.edu)
+
+       * misc.c (message): New fn to print informational msgs with
+       leading "make: " or "make[N]: ".
+       * make.h: Declare it.
+       * remake.c (update_file): Use it instead of printf.
+
+Fri Apr 19 05:52:45 1991  Roland McGrath  (roland at churchy.gnu.ai.mit.edu)
+
+       * main.c (main): When there are no targets, if there were no
+       makefiles, print a different error message, which mentions makefiles.
+
+Tue Apr 16 03:22:45 1991  Roland McGrath  (roland at geech.gnu.ai.mit.edu)
+
+       * remake.c (update_file): Print "nothing to be done" instead of "is
+       up to date" if FILE->cmds == 0.
+
+       * job.c [!WIFEXITED]: Define if not already defined.
+
+Thu Apr 11 18:00:50 1991  Roland McGrath  (roland at wookumz.gnu.ai.mit.edu)
+
+       * arscan.c (ar_name_equal): Fixed truncation comparison.
+
+Tue Apr  2 16:17:35 1991  Roland McGrath  (roland at churchy.gnu.ai.mit.edu)
+
+       * glob.c: Use common version from djm.
+       * dir.c: Snarfed #ifdef mess for <dirent.h> or whatever from glob.c.
+       (dir_file_exists_p): Ignore directory entries with d_ino==0.
+
+Mon Apr  1 20:49:45 1991  Roland McGrath  (roland at albert.gnu.ai.mit.edu)
+
+       * Version 3.59.4.
+
+Fri Mar 29 19:16:18 1991  Roland McGrath  (roland at albert.gnu.ai.mit.edu)
+
+       * job.c (free_child): Free CHILD->environment and its elts.
+
+Sat Mar 23 14:08:09 1991  Roland McGrath  (roland at albert.gnu.ai.mit.edu)
+
+       * read.c (read_makefile): Don't ignore lines containing only
+       comments if they start with a tab.  Such lines should be passed to
+       the shell for it to decide about the comments.
+
+       * job.c (free_child): Free CHILD->command_lines and its elts, not
+       CHILD->commands (which is obsolete).
+       * job.h, job.c: Remove obsolete `commands' member of `struct child'.
+
+Sun Mar 17 18:40:53 1991  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * remake.c (update_file): Print a msg for a top-level up-to-date
+       phony target (a different one than for a real file).
+
+       * read.c (conditional_line): Boundary check so we don't check the
+       value of the -1th elt of the stack (which is bogus).
+
+Sat Mar 16 16:58:47 1991  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * read.c (conditional_line): Don't evaluate an if* when we're
+       already ignoring.  Instead, just push a new level, with a value of
+       1, to keep ignoring.
+
+Tue Mar 12 00:16:52 1991  Roland McGrath  (roland at geech.ai.mit.edu)
+
+       * Version 3.59.3.
+
+Mon Mar 11 23:56:57 1991  Roland McGrath  (roland at geech.ai.mit.edu)
+
+       * job.c (construct_command_argv_internal): Quote backslashes
+       when building the shell -c line.
+
+Fri Mar  8 01:40:18 1991  Roland McGrath  (roland at geech.ai.mit.edu)
+
+       * job.c (exec_command): Call user_access rather than setgid(getgid()).
+
+       * misc.c (remove_comments): Renamed from collapse_line; took out
+       collapse_continuations call.
+       * make.h: Change decl.
+       * read.c (read_makefile): Collapse continuations on the line buffer
+       immediately after reading it.  Call remove_comments rather than
+       collapse_line (which is now defunct).
+
+Thu Feb 21 18:06:51 1991  Roland McGrath  (mcgrath at cygint.cygnus.com)
+
+       * misc.c (user_access, make_access): New fns to toggle btwn permissions
+       for user data (files and spawning children), and permissions for make
+       (for taking the load average, mostly).
+       * make.h: Declare them.
+       * job.c (start_job): Call make_access before wait_to_start_job, and
+       user_access after.
+       * main.c (main): Call user_access before doing much.
+
+Mon Feb  3 15:02:03 1991  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * Version 3.59.2.
+
+Tue Jan 29 20:30:50 1991  Roland McGrath  (roland at cygint.cygnus.com)
+
+       * read.c (read_all_makefiles): Use allocated_variable_expand to expand
+       `$(MAKEFILES)', since the results are used across calls to
+       read_makefile, which could clobber them.
+
+Wed Jan 23 00:24:10 1991  Roland McGrath  (roland at cygint.cygnus.com)
+
+       * main.c (main): Call install_default_implicit_rules after reading
+       makefiles, not before.
+       * default.c (install_default_implicit_rules): If a suffix-rule file
+       entry has cmds, don't give it any from default_suffix_rules.
+
+Fri Jan 17 17:39:49 1991  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * arscan.c: Added support for AIX archives.
+
+       * remake.c: Don't include ar.h.
+       * main.c: Removed unused atol decl.
+       * arscan.c (ar_scan): Declare arg FUNCTION to return long int.
+       * ar.c (ar_touch): Don't perror for an invalid archive.
+       * make.h: Declare lseek as long int.
+
+       * job.c [hpux]: Define getdtablesize a la USG.
+
+Sun Jan 12 21:08:34 1991  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * Version 3.59.1.
+
+Fri Jan 10 03:48:08 1991  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * job.c (search_path): Take new arg, place to put full pathname (rather
+       than mallocing it).
+       (exec_command): Pass it, using auto storage.
+
+       * main.c (print_version): Updated copyright years.
+
+Wed Jan  8 19:46:19 1991  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * job.c [_POSIX_SOURCE]: Just #include <sys/wait.h>, and define macro
+       WAIT_NOHANG in terms of waitpid.
+       [!_POSIX_SOURCE && (HAVE_SYS_WAIT || !USG)]: Don't #include <signal.h>
+       (make.h does).
+       Define macro WAIT_NOHANG in terms of wait3.
+       (child_handler): #ifdef on WAIT_NOHANG, not HAVE_SYS_WAIT || !USG.
+       Use WAIT_NOHANG macro instead of wait3.
+
+       * file.h (struct file.command_state): Remove unused elt.
+
+Wed Dec 26 18:10:26 1990  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * commands.c (set_file_variables): If FILE got its commands from
+       .DEFAULT, make $< == $@ (4.3 BSD/POSIX.2d11 compat).
+
+Mon Dec 24 17:36:27 1990  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * default.c (default_variables): Rename 2nd LINK.s defn to LINK.S.
+
+Fri Dec 14 15:05:25 1990  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * vpath.c (selective_vpath_search): Check for makefile-mentioned before
+       checking for actual existence.  The old order loses if the containing
+       directory doesn't exist (but a rule might make it).
+
+       * make.h [__GNUC__]: Don't #define alloca if already #define'd.
+
+       * rule.c (convert_to_pattern): Don't look at the target constructed for
+       the empty rule when making the null-suffix rule.  Construct it over
+       again, since the former may have been freed already.
+
+Thu Dec 13 17:21:03 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * make.h [__GNU_LIBRARY__]: Include <unistd.h> to get random fn decls.
+
+Wed Dec 12 17:12:59 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * make.h, arscan.c, glob.c: Only include <memory.h> #ifdef USG.
+
+       * variable.c (define_variable_in_set): Replace env_overrides check that
+       wasn't really redundant (undoing Sep 28 change).  Add comment saying
+       why this check is necessary.
+
+       * job.c, main.c [DGUX]: Needs siglist like USG.
+
+Mon Dec 11 01:19:29 1990  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * default.c [M_XENIX]: For rules that are different for Xenix, use the
+       generic Unix version #ifdef __GNUC__.
+
+       * main.c [M_XENIX]: Use USGr3-style setvbuf call.
+
+       * read.c (find_percent): Do backslash folding correctly, not leaving
+       extra crud on the end of the string.
+
+Sun Dec 10 21:48:36 1990  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * job.c: Don't declare wait3 if it's #defined.
+
+       * GNUmakefile, compatMakefile, make.texinfo: Change make-info
+       to make.info.
+
+Thu Dec  7 21:20:01 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * make.h [STDC_HEADERS || __GNU_LIBRARY__ || _POSIX_SOURCE]: Use
+       ANSI <string.h> and names for str/mem functions.
+       Use <stdlib.h> to declare misc fns rather than explicit decls.
+       [_POSIX_SOURCE]: Don't declare kill (<signal.h> will).
+       Include <sys/types.h> before <signal.h> because some braindead
+       nonconformant 1003.1 implementation needs it.
+       * misc.c: Don't declare malloc, realloc.  Do it in make.h.
+       * arscan.c, glob.c: Use sequence for string fns from make.h verbatim.
+       * make.h (S_ISDIR, S_ISREG): Declare if necessary.
+       * commands.c (delete_child_targets), job.c (search_path), read.c
+       (construct_include_path): Use S_ISfoo(m) instead of
+       (m & S_IFMT) == S_IFfoo.
+       * dir.c, glob.c [_POSIX_SOURCE]: Use dirent.
+
+Wed Nov 29 22:53:32 1990  Roland McGrath  (roland at geech.ai.mit.edu)
+
+       * Version 3.59.
+
+Tue Nov 28 16:00:04 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * arscan.c (ar_name_equal) [APOLLO]: Don't do `.o' hacking.  On Apollos
+       the full file name is elsewhere, and there is no length restriction (or
+       so I'm told).
+
+Thu Nov 23 17:33:11 1990  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * load.c [hp300 && BSD] (LDAV_CVT): Define for this system.
+
+Tue Nov 21 07:58:40 1990  Roland McGrath  (roland at albert.ai.mit.edu)
+
+       * read.c (record_files): Fix trivial bug with deciding to free storage
+       for a file name.
+
+Thu Nov 16 06:21:38 1990  Roland McGrath  (roland at geech.ai.mit.edu)
+
+       * compatMakefile ($(bindir)/make): Install it setgid kmem.
+
+Thu Nov  1 16:12:55 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * GNUmakefile (make-*.tar.Z): Use `h' option to tar (dereference
+       symlinks), to grab texinfo.tex from wherever it lives.
+
+Tue Oct 30 16:15:20 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * Version 3.58.13.
+
+Fri Oct 26 14:33:34 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * GNUmakefile: make-*.tar.Z: Include texinfo.tex.
+
+Tue Oct 23 19:34:33 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * main.c (define_makeflags): When there are no flags to write, make
+       sure the array has two leading nulls, since `MAKEFLAGS' is defined from
+       &flags[1].
+
+       * main.c (default_keep_going_flag): New variable (constant one).
+       (command_switches: -k, -S): Use above for default value.
+       (define_makeflags): Only write flag/flag_off switches if they are on,
+       and either there is no default value, or they are not the default.
+
+Mon Oct 22 16:14:44 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * main.c (struct command_switch): New member `no_makefile'.
+       (command_switches: -n, -q, -t): Set no_makefile == 1.
+       (define_makeflags): Take new arg MAKEFILE: if nonzero, don't use
+       options whose `no_makefile' flags are set.
+       (main): Call define_makeflags with MAKEFILE==1 before remaking
+       makefiles, and again with MAKEFILE==0 before remaking goals.
+
+Tue Oct  2 17:16:45 1990  Roland McGrath  (roland at geech.ai.mit.edu)
+
+       * Version 3.58.12.
+
+Mon Oct  1 15:43:23 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * arscan.c [HPUX]: Use PORTAR==1 format.
+
+Sat Sep 29 16:38:05 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * make.h, remake.c, arscan.c: Don't declare `open'.
+
+Fri Sep 28 04:46:23 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * variable.c (define_variable_in_set): Remove redundant -e check.
+
+Wed Sep 26 00:28:59 1990  Roland McGrath  (roland at geech.ai.mit.edu)
+
+       * job.c (start_job): Set RECURSIVE from the right elt of
+       CHILD->file->cmds->lines_recurse.
+
+       * commands.c (chop_commands): Don't botch the line count for allocating
+       CMDS->lines_recurse.
+
+       * Version 3.58.11.
+
+       * job.c (start_job): Don't always increment CHILD->command_line!  Only
+       do it when CHILD->command_ptr has run out!  (Dumb bug.  Sigh.)
+
+Thu Sep 20 02:18:51 1990  Roland McGrath  (roland at geech.ai.mit.edu)
+
+       * GNUmakefile [ARCH]: Give explicit rule for remote.{c,dep} to use
+       variable `REMOTE' for more flags.
+       ($(prog)): Link in $(LOADLIBES).
+
+Wed Sep 19 02:30:36 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * commands.h (struct commands): New member `ncommand_lines', the number
+       of elts in `command_lines' et al.
+       * commands.c (chop_commands): Set `ncommand_lines' elt of CMDS, and
+       don't put a nil pointer at the end of `command_lines'.
+       * job.h (struct child): New member `command_lines' to hold
+       variable-expanded command lines.
+       * job.c (new_job): Store expanded command lines in `command_lines'
+       member of new child.  Don't clobber FILE->cmds.
+       (start_job): Use CHILD->command_lines in place of
+       CHILD->file->cmds->command_lines.
+
+       * variable.h, variable.c, job.c, expand.c: Undo yesterday's change,
+       which is no longer necessary since we have cleverly avoided the issue.
+
+       * job.c (start_job): Don't variable-expand each command line.
+       (new_job): Do them all here, storing the expansions in the array.
+
+Tue Sep 18 01:23:13 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * variable.h (struct variable): Remove `expanding' member.
+       * variable.c (define_variable_in_set): Don't initialize it.
+       * expand.c (struct variable_expanding): New type, a linked list
+       containing `struct variable' pointers.
+       (variables_expanding): New variable, the chain of variables currently
+       being expanded.
+       (recursively_expand): Don't test and set `expanding' member.
+       Instead, run through the `variables_expanding' chain looking for a link
+       referring to V to find self-reference.  Add a new link to the chain,
+       describing V, before recursive expansion, and pop it off afterward.
+       * job.c (child_handler): Save `variables_expanding' and clear it before
+       calling start_job, and restore it afterward.  This avoids major lossage
+       when the SIGCHLD comes in the middle of variable expansion.
+
+Mon Sep 17 14:46:26 1990  Roland McGrath  (roland at geech.ai.mit.edu)
+
+       * job.c, commands.c: Don't define sigmask.
+       * make.h: Put it here instead.
+
+       * variable.c (target_environment): If `.NOEXPORT' was specified as a
+       target, only export command-line and environment variables, and
+       file-origin variables that were in the original environment.
+
+       * make.man: Add missing ?roff control for `-I' option description.
+
+Thu Sep 13 14:10:02 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * load.c [UMAX]: Move #include <sys/sysdefs.h> to [not UMAX_43].
+
+Wed Sep 12 15:10:15 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * expand.c (recursively_expand): Don't use `reading_filename' and
+       `reading_lineno_ptr' if they're nil.
+
+Thu Aug 30 17:32:50 1990  Roland McGrath  (roland at geech)
+
+       * Version 3.58.10.
+
+Tue Aug 28 04:06:29 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * job.c [USG] (unknown_children_possible): New variable, set nonzero
+       when it's possible for children not in the `children' chain to die.
+       (block_signals) [USG]: Set it.
+       (unblock_signals) [USG]: Clear it.
+       (child_handler) [USG]: Don't complain about unknown children if
+       `unknown_children_possible' is set.
+
+       * read.c (do_define): Make sure there's enough space for the newline,
+       so we don't write off the end of allocated space.
+
+       * arscan.c (ar_name_equal): Fixed to work when MEM is AR_NAMELEN-1 but
+       NAME is not the same length.
+
+Sat Aug 25 16:17:14 1990  Roland McGrath  (roland at geech)
+
+       * job.c (construct_command_argv_internal): Use a static char array for
+       a constant, since old C has no auto aggregate initializers.
+
+Thu Aug 23 16:11:03 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * job.c (search_path): If PATH is nil or "" use a default path.
+
+Wed Aug 22 01:05:32 1990  Roland McGrath  (roland at churchy.ai.mit.edu)
+
+       * Version 3.58.9.
+
+       * job.c (exec_command): Don't take PATH and SHELL args.  Get them from
+       ENVP.
+       (child_execute_job): Don't take FILE arg, and don't pass path and shell
+       to exec_command.
+       (start_job): Don't pass FILE arg to child_execute_job.
+       * function.c (expand_function: `shell'): Ditto.
+       * main.c (main): Don't pass path and shell to exec_command.
+
+Fri Aug 17 23:17:27 1990  Roland McGrath  (roland at geech)
+
+       * job.c (construct_command_argv_internal): New fn broken out of
+       construct_command_argv.  Takes strings SHELL and IFS instead of doing
+       variable expansion for them.  Recurse to make an argv for SHELL,
+       passing SHELL==0.  When SHELL==0, don't recurse for shell argv; make a
+       simple one using /bin/sh.
+       (construct_command_argv): Do the variable expansions and call above.
+
+Thu Aug 16 19:03:14 1990  Roland McGrath  (roland at geech)
+
+       * read.c (multi_glob): For ~USER/FILE, if USER isn't found, don't
+       change the file name at all.
+
+Tue Aug  7 18:33:28 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * function.c (expand_function: `suffix'/`notdir'): Don't kill the last
+       space if we never wrote one.
+
+       * function.c (expand_function: `suffix'): Retain the dot, like the
+       documentation says.
+
+Mon Aug  6 14:35:06 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.58.8.
+
+       * main.c (decode_switches): For positive_int and floating cases, move
+       SW past the arg (and don't set it to ""), so another switch can follow.
+
+Fri Aug  3 00:43:15 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * job.c (child_execute_job): Use unblock_signals instead of
+       push_signals_blocked_p (0).
+
+       * main.c (fatal_signal_mask): New variable, mask of signals caught with
+       fatal_error_signal.
+       (main): Set it.
+       * job.c ({block,unblock}_children): Renamed to {block,unblock}_signals.
+       Block/unblock both child signal and signals in fatal_signal_mask.
+       (children_blocked_p_{stack,max,depth}, {push,pop}_children_blocked_p):
+       Renamed from children to signals.  Use {block,unblock}_signals instead
+       of {block,unblock}_children.
+       * commands.c (fatal_error_signal), job.c (wait_for_children, new_job,
+       child_execute_job, main, log_working_directory), function.c
+       (expand_function: `shell'), job.h: Rename {push,pop}_children_blocked_p
+       to {push,pop}_signals_blocked_p.
+       * job.c (child_handler): Call {block,unblock}_signals instead of just
+       {block,unblock}_remote_children.  We need to block the fatal signals.
+
+Thu Aug  2 22:41:06 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * main.c, function.c: Fixed typos in comments.
+
+       * file.c (print_file_data_base): Fix computation of avg files/bucket.
+
+Tue Jul 31 22:11:14 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.58.7.
+
+Wed Jul 25 16:32:38 1990  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * arscan.c (ar_name_equal): Fixed to really do it right.
+       (ar_member_pos): Fixed order of args.
+       * ar.c (ar_member_date_1): Ditto.
+
+Fri Jul 20 15:30:26 1990  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * arscan.c (ar_name_equal): Rewritten.  Accounts for a possible
+       trailing slash in MEM.
+
+       * remake.c (f_mtime): Keep track of whether ARNAME is used and free it
+       if not.  Also free MEMNAME.
+       * ar.c (ar_member_date, ar_touch): Ditto.
+
+       * arscan.c (arscan) [HPUX or hpux]: Treat same as USGr3 PORTAR==1.
+
+       * make.h: If NSIG is not defined, but _NSIG is, #define NSIG _NSIG.
+
+       * compatMakefile: Don't use $* in explicit rules.
+
+       * default.c (default_variables: "PREPROCESS.S"): Include $(CPPFLAGS).
+
+       * remake.c (f_mtime): If FILE is an ar ref, get the member modtime.
+
+       * function.c (string_glob): Terminate the string properly when it's
+       empty.
+
+Wed Jul 18 11:26:56 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.58.6.
+
+       * commands.c (set_file_variables): Fixed computation for ^F/?F elt len.
+
+Sat Jul 14 13:41:24 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * job.c (construct_command_argv): Always use
+       allocated_variable_expand_for_file instead of variable_expand_for_file
+       because we might be called from inside a variable expansion (for the
+       `shell' function).
+
+       * function.c (expand_function: `shell'): Free the arglist's storage
+       correctly.  construct_command_argv only allocates ARGV and ARGV[0].
+
+       * job.c (children_blocked_p_idx): Renamed to children_blocked_p_depth.
+       (push_children_blocked_p, pop_children_blocked_p): Use ..._depth
+       instead of ..._idx, and do it right!
+
+Wed Jul 11 15:35:43 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * make.h (SIGNAL): New macro to replace `signal' calls.  Does arg and
+       ret value casts to (void *) #ifdef __STDC__ to avoid conflicts btwn
+       ANSI and BSD `signal' and handler types.
+       * main.c (main), job.c (child_handler): Use it.
+
+Fri Jul  6 00:00:38 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * ar.c (ar_member_date, ar_touch): Pass 2nd arg to f_mtime.
+
+       * read.c (read_makefile): Search the include path for MAKEFILES
+       variable makefiles (TYPE == 1), like it says in the manual.
+
+       * file.h (struct file), main.c (struct command_switch): Remove trailing
+       commas from enums.
+
+       * commands.c (execute_file_commands): Remove unused variables.
+       * commands.h: Declare chop_commands.
+       * make.h: Declare uniquize_deps.
+       * main.c (main): Remove unused variable.
+       (decode_switches): Remove unused label.
+       * remake.c: Include "ar.h" for ar_parse_name decl.
+       * implicit.c (try_implicit_rule): Remove unused variable.
+       * function.c (expand_function: `shell'): Declare fork, pipe.
+       * ar.c: Declare ar_name_equal.
+
+       * GNUmakefile: If using gcc, add warning flags to CFLAGS.
+
+       * remake.c: Remove decl of ar_member_date, since it's done in make.h.
+
+       * remake.c (f_mtime): For ar refs, allow the archive to be found via
+       VPATH search if we're searching, and change the ar ref accordingly.
+
+       * ar.c (ar_parse_name): New global fn to parse archive-member
+       references into the archive and member names.
+       (ar_member_date, ar_touch): Use it.
+       * make.h: Declare it.
+
+       * remake.c (f_mtime): After doing rename_file, do check_renamed instead
+       of assuming rename_file will always set FILE->renamed (which it won't).
+
+       * vpath.c (selective_vpath_search): Only accept prospective files that
+       don't actually exist yet are mentioned in a makefile if the file we are
+       searching for isn't a target.
+
+Wed Jul  4 04:11:55 1990  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * remake.c (update_goal_chain): Do check_renamed after calling
+       file_mtime.
+       (check_dep): Ditto after update_file.
+
+       * file.c (rename_file): Prettied up long message for merging cmds.
+
+       * remake.c (update_file_1): Get each dep file's modtime, and allow for
+       it being renamed, before checking for a circular dep, since a renaming
+       may have introduced one.
+
+Tue Jul  3 18:15:01 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * ar.c (ar_touch): Don't free ARNAME since enter_file holds onto the
+       storage.
+
+       * function.c (string_glob): Don't leave a trailing space.
+
+       * read.c (do_define): Allow leading whitespace before `endef'.
+
+Mon Jul  2 14:10:16 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * implicit.c (pattern_search): No longer take NAME arg.  Instead take
+       ARCHIVE flag.  If ARCHIVE is nonzero, FILE->name is of the form
+       "LIB(MEMBER)"; rule for "(MEMBER)" is searched for, and LASTSLASH is
+       set to nil.  Since NAME was only non-nil when it was the archive member
+       name passed by try_implicit_rule, this change easily allows turning off
+       LASTSLASH checking for archive members without excessive kludgery.
+       (try_implicit_rule): Pass ARCHIVE flag instead of file name.
+
+       * Version 3.58.5.
+
+       * commands./c (set_file_variables): Don't kill last char of $(^D) elts.
+
+Sat Jun 30 00:53:38 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * ar.c (ar_member_date): Don't free ARNAME since enter_file holds onto
+       the storage.
+
+       * arscan.c (ar_scan) [sun386 && PORTAR == 1]: Treat like USGr3.
+
+Wed Jun 27 14:38:49 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * main.c (main): Put a newline on the debugging message when deciding
+       not to remake a makefile to avoid a possible loop.
+       Only decide not to remake makefiles that have commands (as well as
+       being targets and having no deps).
+
+Fri Jun 22 12:35:37 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * default.c (default_variables): Define `LINK.s' and `LINK.S'.
+       (default_suffix_rules): Define .S.o rule.
+
+       * job.c (construct_command_argv): If we decide to go the slow route,
+       free all storage for the chopped args.
+       (start_job): Free the argument list's storage correctly.
+       construct_command_argv only allocates ARGV and ARGV[0].
+
+Tue Jun 19 18:27:43 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.58.4.
+
+Fri Jun 15 21:12:10 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * glob.c: New version from ai-lab which doesn't do [^abc].
+
+Thu Jun  7 00:30:46 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * dir.c: Copied dirent vs direct et al mess from glob.c.
+
+       * glob.c: Replaced with updated version from djm.
+       * glob.c: Check macro DIRENT instead of _POSIX_SOURCE for <dirent.h>.
+       __GNU_LIBRARY__ implies DIRENT and STDC_HEADERS.
+
+Thu May 31 22:19:49 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * vpath.c (vpath_search): Don't stop the loop if a pattern matches but
+       the search fails.  All matching patterns have their paths searched
+       (like it says in the manual).
+
+       * make.texinfo (Rules: Directory Search: Selective Search): Say that
+       multiple `vpath' directives with the same pattern DO accumulate, not
+       supersede earlier ones.
+
+       * vpath.c (print_vpath_data_base): Increment the count of vpaths on
+       each loop iteration, rather than letting it stay zero.
+
+       * Version 3.58.3.
+
+       * job.c (block_children, unblock_children): Made static.
+       (push_children_blocked_p, pop_children_blocked_p): New functions to
+       push and pop whether children are blocked or not.
+       * job.h: Declare push_children_blocked_p, pop_children_blocked_p and
+       not block_children, unblock_children.
+       * commands.c (fatal_error_signal), job.c (wait_for_children, new_job,
+       child_execute_job), main.c (main, log_working_directory): Use sequences
+       of push_children_blocked_p (1) and pop_children_blocked_p () instead of
+       explicitly blocking and unblocking children.
+       * function.c (expand_function: `shell'): Don't unblock children.  The
+       push-pop sequence in wait_for_children makes it unnecessary.
+
+Tue May 29 21:30:00 1990  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * read.c (do_define): Don't include the last newline in the definition.
+
+       * function.c (expand_function: `shell'): Call construct_command_argv
+       before forking and don't fork if it returns nil.  Free the argument
+       list's storage before finishing.
+
+       * job.c (start_job): Free the storage for the child's argument list
+       in the parent side of the fork after the child has been spawned.
+
+       * job.c (start_job): If construct_command_argv returns nil, go to the
+       next command line.
+
+       * job.c (construct_command_argv): Use the shell if the command contains
+       an unterminated quote.
+
+Wed May 23 19:54:10 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.58.2.
+
+       * read.c (read_makefile): Parse "override define" correctly.
+
+Thu May 17 15:25:58 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * arscan.c [USG]: Don't declare memcpy and memcmp.  <memory.h> should
+       do this anyway (and lack of declarations is harmless).
+
+       * remote-customs.c: Renamed to remote-cstms.c for System V.
+       * remote.c [CUSTOMS]: Changed accordingly.
+
+Sun May 13 14:38:39 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * GNUmakefile: Use same cmds for doc tar.Z as for dist tar.Z (so the
+       contents go in make-N.NN).
+
+Thu Apr 26 19:33:25 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.58.1.
+
+Wed Apr 25 20:27:52 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * job.c (init_siglist): Don't do SIGUSR1 and SIGUSR2 if they are the
+       same as SIGIO and SIGURG (true on Cray).
+
+Tue Apr 24 20:26:41 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * arscan.c (ar_scan): Do behavior for PORTAR == 1 and USGr3 also
+       #ifdef APOLLO.
+
+Wed Apr 11 10:00:39 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * job.c (exec_command): Set the effective GID to the real GID.  Somehow
+       this code got lost.
+
+       * implicit.c (pattern_search): Use the right index variable when
+       seeing if we need to expand FILE->also_make.
+
+Sun Mar  4 09:18:58 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.58.0.
+
+       * remake.c (remake_file): Treat non-targets without commands under -t
+       the same as anything else without commands.
+
+Sat Feb 24 17:46:04 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * default.c (default_variables: PREPROCESS.S): Removed $< from defn.
+
+       * main.c (main): Ignore arguments that are the empty string, rather
+       than feeding them to enter_file and barfing therein.
+
+Wed Feb 14 16:28:37 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * main.c (main): Call construct_include_path after doing chdirs.
+
+Thu Feb  8 13:43:44 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.58.
+
+Sat Feb  3 22:06:55 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.57.7.
+
+       * make.texinfo (Implicit: Catalogue of Rules): For RCS, noted that
+       working files are never overwritten by the default rule.
+
+Thu Feb  1 17:27:54 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * rule.c (count_implicit_rule_limits): Redid loop control to not run
+       twice on freed rules.
+
+       * GNUmakefile: Made `.dep' files be architecture-specific too.
+
+       * main.c (main, log_working_directory) [USG]: Block children around
+       calls to `getwd' (actually `getcwd' on USG), because that function
+       sometimes spawns a child running /bin/pwd on USG.
+
+Tue Jan 30 14:02:50 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * function.c (subst_expand): Pay attention to SUFFIX_ONLY, putz.
+
+Wed Jan 24 21:03:29 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * make.man: Fixed repeated word.
+
+       * make.texinfo (Missing): Reworded a buggy sentence.
+
+Mon Jan 22 12:39:22 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * main.c (print_version): Added 1990 to copyright notice.
+
+       * Version 3.57.6.
+
+Sat Jan 20 11:52:01 1990  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * file.c (rename_file): Don't free the storage for the old name, since
+       it might not have been malloc'd.
+
+       * job.c (construct_command_argv): Call
+       allocated_variable_expand_for_file instead of variable_expand_for_file
+       to expand `$(SHELL)'.
+
+       * make.texinfo (Bugs): Change address from roland@wheaties.ai.mit.edu
+       to roland@prep.ai.mit.edu.
+
+Tue Jan 16 19:22:33 1990  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Version 3.57.5.
+
+Sun Jan 14 16:48:01 1990  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * job.c (start_job): Only call wait_to_start_job for the first command
+       line in each sequence.
+
+Thu Jan  4 14:27:20 1990  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * load.c [LDAV_BASED] (wait_to_start_job): Loop while job_slots_used >
+       0, not > 1.
+
+       * job.c (search_path): Don't return a pointer to local storage.
+       Allocate data space for the pathname instead.
+
+       * function.c (expand_function: `shell'): Don't write garbage if the
+       child wrote no output.
+
+Wed Jan  3 15:28:30 1990  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.57.4.
+
+       * file.h (struct file): New member `renamed', a `struct file *' that is
+       the place this file has been renamed to (or nil).
+       (check_renamed): Macro to check for a file having been renamed.
+       Dereferences the renaming and sets the given variable.
+       * file.c (rename_file): Completely rewritten.  Renames in place if
+       possible, or moves FILE to a different hash bucket if there is no
+       existing file with the new name.  If there is an existing file with the
+       new name, FILE is merged into it and FILE->renamed is set to point to
+       it.
+       * variable.c (merge_variable_sets): New fn to merge two variable sets.
+       (merge_variable_set_lists): New fn to merge two variable set lists.
+       * variable.h: Declare merge_variable_set_lists.
+       * remake.c (update_file_1, check_dep): Run `check_renamed' after
+       calling file_mtime, check_dep.
+       (update_file): Same after update_file_1.
+       (update_goal_chain, update_file_1, check_dep): Same after update_file.
+
+       * read.c (uniquize_deps): New fn, broken out of record_files, to remove
+       duplicate deps from a chain.
+       (record_files): Use it.
+       * implicit.c (pattern_search): Use uniquize_deps.
+
+       * file.h (file_mtime_1): New macro, like file_mtime, but take second
+       arg, passed to f_mtime.
+       (file_mtime): Implement as file_mtime_1 (file, 1).
+       (file_mtime_no_search): New macro: file_mtime (file, 0).
+       * remake.c (f_mtime): Take new arg SEARCH.  Only do VPATH and `-lNAME'
+       searching if it is nonzero.
+       * main.c (main): Use file_mtime_no_search for makefiles.
+       * remake.c (update_goal_chain): Use file_mtime_no_search if MAKEFILES.
+
+       * main.c (printed_version): New variable, init'd to zero.
+       (print_version): Set it to nonzero before returning.
+       (die): If -v and !printed_version, call print_version before clean up
+       and death.
+
+       * main.c (log_working_directory): Keep track of whether or not the
+       "Entering" message has been printed, and return without printing the
+       "Leaving" message if not.
+
+       * main.c (decode_switches): Don't complain about missing args before
+       checking for a noarg_value elt in the command_switch structure.
+
+Tue Jan  2 15:41:08 1990  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.texinfo (Commands: Recursion: Options/Recursion): Document
+       special case of -j.
+
+       * make.texinfo, main.c, job.c: Changed copyright notices to include
+       1990.
+
+       * make.texinfo (Top): Fixed introductory paragraph, which said that
+       `make' itself (instead of the manual) has various chapters.
+       (Variables: Advanced: Substitution Refs): When pxref'ing about
+       `patsubst', use node `Text Functions', not `Functions'.
+       Add an xref about `patsubst' after description of $(var:a%b=c%d).
+       (Functions: Syntax of Functions): Explain why mixing delimiters in
+       function/var refs is unwise.  Clarify fn arg evaluation order.
+       (Options): Reworded sentence about `-e'.
+       (Implicit: Implicit Variables): Don't say `RM' is unused.
+       Say the dflt values for the flag vars is empty unless otherwise noted,
+       since some have defaults.
+       (Implicit: Pattern Rules: Pattern Examples): Clarified use of $< and $@
+       in first example.
+       (Implicit: Last Resort): Don't say the .DEFAULT example creates files
+       "silently".  It's automatic, but not silent.
+       (Implicit: Search Algorithm): Fixed confusing ungrammatical sentence
+       for item 5.1.
+       (Archives: Archive Update): Added missing `next' pointer.
+       (Archives: Archive Symbols): Note that GNU `ar' deals with this
+       automatically.
+
+       * job.c (search_path): New fn, to search for an executable file in a
+       search path (broken out of exec_command).
+       (exec_command): Take fourth arg, the shell program to use (if
+       necessary).  Use search_path for the program, and the shell program.
+       Pass args "file args ..." to shell program (with no -c), where FILE is
+       the full pathname of the program (script) to be run.
+       (child_execute_job): Pass shell program to exec_command.
+       * main.c (main): Ditto.
+
+       * main.c (main): Don't write a message if exec_command returns, because
+       it will never return.
+
+Fri Dec 22 16:19:58 1989  Roland McGrath  (mcgrath at hecuba.Berkeley.EDU)
+
+       * default.c (default_variables: "LINK.cc"): Use $(C++FLAGS) instead of
+       $(CFLAGS).
+
+Wed Dec 20 09:58:48 1989  Roland McGrath  (mcgrath at hecuba.Berkeley.EDU)
+
+       * job.c (new_job): If start_job set the child's `command_state' to
+       `cs_finished', call notice_finished_file.
+
+Sun Dec 17 19:45:41 1989  Roland McGrath  (mcgrath at hecuba.Berkeley.EDU)
+
+       * Version 3.57.3.
+
+Wed Dec 13 17:57:12 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * rule.c (convert_to_pattern): Accept files with dependencies as
+       suffix rules.
+
+Thu Nov 30 15:47:13 1989  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.57.2.
+
+       * function.c (expand_function: `shell'): Don't clobber BUFFER and then
+       try to free it.
+
+       * remake.c (update_file_1): Took code to force remake of nonexistent
+       deps out of #if 0, and changed the test to nonexistent non-intermediate
+       deps.  In version 4, I think removing this test completely will
+       implement the new feature that if a: b and b: c and c is newer than a,
+       b need not be remade.
+
+Sun Nov 26 16:12:41 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * compatMakefile (load.o, remote.o): Use $*.c instead of explicit file
+       names so that using VPATH works.
+
+Tue Nov 21 14:57:18 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.57.1.
+
+Fri Nov 10 03:28:40 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * remake.c (check_dep): Set *MUST_MAKE_PTR if FILE does not exist after
+       being updated.  (The exact opposite test was here before; why???)
+       (update_file_1): Set a dep's `changed' member after updating it if it
+       is phony and has commands (because they will then always be executed).
+
+Thu Nov  9 13:47:12 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * load.c [UMAX]: #ifdef UMAX_43 include different headers for the
+       `inq_stats' call.
+       * compatMakefile (LOAD_AVG): Document UMAX_43.
+
+       * Version 3.57.0.
+
+       * commands.c (chop_commands): New function to chop commands into lines.
+       * job.c (new_job): Break that code out, and call chop_commands.
+       * remake.c (remake_file): Call chop_commands before looking at
+       FILE->cmds->any_recurse.
+
+       * make.texinfo (Running: Goals): Don't say that the default target
+       won't be taken from an included makefile.
+
+       * remake.c (update_file_1): #if 0 out setting MUST_MAKE if a dep
+       doesn't exist.
+
+Fri Nov  3 15:53:03 1989  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Version 3.57.
+
+       * variable.c (try_variable_definition): Don't calculate useless value.
+
+       * main.c (define_makeflags): Fixed -j propagation.
+
+       * commands.c (execute_file_commands): Removed unused variable.
+
+Sun Oct 29 11:11:15 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c (execute_file_commands): If the commands are empty, call
+       notice_finished_file before returning.
+
+Sat Oct 28 23:06:32 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * remake.c (update_file_1): Don't always update a target that has no
+       deps.  Only do this for double-colon targets.
+
+Wed Oct 25 16:36:16 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * main.c (main) [hpux]: hpux == HPUX.
+       * compatMakefile (defines): Document that HPUX should be defined.
+
+Tue Oct 24 19:19:48 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.56.8.
+
+       * job.c (exec_command): Fixed what mode bits are checked.
+
+       * remake.c (update_file_1): "No cmds and no deps actually changed"
+       loses if ! FILE->is_target.
+
+       * make.texinfo (Variables: Setting): Don't say that spaces after a
+       variable definition are ignored (since they aren't).
+
+Mon Oct 23 14:34:23 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.56.7.
+
+       * remake.c (update_file_1): If, after being updated, any dependency
+       does not exist, remake the target.
+
+       * remake.c (update_file_1): Always update if FILE has commands but no
+       deps.
+
+       * commands.c (execute_file_commands): If we return early because there
+       are no commands, set FILE->updated.
+
+Thu Oct 19 18:47:37 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * arscan.c (ar_scan) [M_XENIX]: Don't run atoi or atol on the
+       `struct ar_hdr' members that are int or long int on Xenix.
+
+Sat Oct 14 10:43:03 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * arscan.c (ar_scan): Cosmetic clean ups.
+       (ar_name_equal): New function to compare names, handling truncated
+       member names and special `.o' truncation.
+       (ar_member_pos): Use ar_name_equal.
+       * ar.c (ar_member_date_1): Use ar_name_equal.
+
+       * Version 3.56.6.
+
+       * file.h (struct file): Made `update_status' a `short int', and moved
+       it before `command_state' so the bitfields can be packed better.
+
+       * remake.c (files_remade): Made global.
+       (notice_finished_file): Don't increment files_remade.
+       * job.c (new_job): Do.
+
+       * job.c (start_job): Don't return a value.  Always set
+       CHILD->file->command_state to either cs_running or cs_finished.
+       (new_job, child_handler): Don't expect start_job to return a value.
+       Instead, look at the file's command_state.
+
+       * commands.c (chop_commands): Merged into job.c (new_job).
+       * commands.h: Don't declare chop_commands.
+
+       * job.c (start_job): Made static.
+       (new_job): New function to create a `struct child' and call start_job.
+       (free_child): New function to free a `struct child'.
+       (child_handler, new_job): Call it.
+       * job.h: Don't declare start_job.  Do declare new_job.
+       * commands.c (execute_file_commands): Call new_job.
+
+       * commands.c (execute_file_commands): Don't set FILE->update_status if
+       start_job fails.
+
+       * function.c (expand_function): Don't use `reading_filename' and
+       `reading_lineno_ptr' if they're nil.
+
+Fri Oct 13 18:16:00 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * read.c (find_semicolon): New function to look for an unquoted ; not
+       preceded by an unquoted # in a string.
+       (read_makefile): Call it before expanding the line.  If it finds a ;,
+       cut the line short there before expanding it.  If not, call it again
+       after expanding.
+
+       * commands.c (execute_file_commands): Don't check FILE->command_state.
+       We won't get called unless it's cs_not_started.
+
+       * read.c (read_makefile): Call collapse_line on the variable-expanded
+       rule line after checking for ; and #.
+
+       * job.c (start_job): When there are no more commands, always return 0.
+       * commands.c (execute_file_commands): Don't put the new child in the
+       `children' chain unless FILE->command_state is cs_running.
+
+       * read.c (read_makefile): Rewrote ;-handling to only do it once (why
+       did I do it twice??) and to check for a # before the ;.
+
+       * job.c (start_job): Set CHILD->file->update_status to 0 when we run
+       out of commands.  Set it to 1 before returning failure.
+       (child_handler): Don't set C->file->update_status to 0 when start_job
+       returns success and commands are not running.
+
+       * read.c (read_makefile): If there is a # before the ; for commands,
+       forget the ; and commands.
+
+Thu Oct 12 15:48:16 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * job.c (child_execute_job): Pass -c to the shell.
+
+Wed Oct 11 18:41:10 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.56.5.
+
+       * main.c (define_makeflags): Cleaned up to keep better track of dashes
+       written, etc.
+
+       * function.c (expand_function: `shell'): When converting newlines to
+       spaces in output, search with `index' calls rather than a simple loop.
+
+       * main.c (main): Make sure stdout is line-buffered.
+
+       * main.c (decode_switches): Always check for missing switch arg.
+
+Mon Oct  9 17:17:23 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.56.4.
+
+Sat Oct  7 00:32:25 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c (set_file_variables): #ifdef NO_ARCHIVES, still set $@ and
+       $%.
+
+       * commands.c (set_file_variables): Include a trailing slash in the
+       directory variables (@D, etc.).
+
+       * job.c (child_handler): Call notice_finished_file after changing a
+       child's state to `cs_finished'.
+       * remake.c (update_file_1): Don't call notice_finished_file if
+       FILE->command_state == cs_finished.
+
+Wed Oct  4 16:09:33 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.56.3.
+
+Tue Oct  3 21:09:51 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * read.c (read_all_makefiles): When setting elements of MAKEFILES from
+       the contents of read_makefiles, make sure we're using the right
+       element.
+
+       * dir.c, glob.c [USGr3 || DIRENT]: Don't define d_ino as d_fileno.
+
+       * Version 3.56.2.
+
+       * remake.c (update_file_1): Return zero after calling remake_file if
+       FILE->command_state != cs_finished.  Test update_status thoroughly.
+
+       * commands.c (execute_file_commands): Don't call notice_finished_file.
+
+       * remake.c (remake_file): Return immediately after calling
+       execute_file_commands.
+
+Sat Sep 30 14:57:05 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.56.1 (alpha).
+
+       * file.h (struct file): Made `update_status' not be a bitfield, since
+       some broken compilers don't handle it right.
+
+       * function.c (expand_function: `join'): Don't clobber the pointers and
+       then try to free them.
+
+       * job.c (exec_command): Fixed & vs = precedence problem.
+
+Thu Sep 28 17:29:56 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * remake.c (update_file_1): Fixed typo in debugging output.
+
+       * remake.c (library_file_mtime): Search for /usr/local/lib/libLIB.a
+       after /usr/lib/libLIB.a.
+
+Tue Sep 26 16:07:58 1989  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * read.c (conditional_line): For `ifeq (a, b)', swallow space after the
+       comma.
+
+Sun Sep 24 13:25:32 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * function.c (patsubst_function): If BY_WORD and the match is not a
+       full word, update the text pointer correctly.
+
+       * function.c (expand_function: `word'): Don't lose track of the second
+       arg's expansion and free something else instead.
+
+Fri Sep 22 16:15:29 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.56.
+
+Thu Sep 21 14:28:42 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * main.c (main): Make an array of the mtimes of the makefiles before
+       updating them, and compare their file_mtimes against this later.  Don't
+       re-exec if a makefile was successfully updated but didn't change.  If a
+       makefile failed to be remade and no longer exists, die.  If a makefile
+       failed to be remade, but changed anyway, re-exec.  If a makefile failed
+       to be remade, but is unchanged, continue on.
+
+Wed Sep 20 18:02:07 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.55.6.
+
+       * implicit.c (pattern_search): Maintain an array CHECK_LASTSLASH of the
+       CHECK_LASTSLASH flag values used to match each member of TRYRULES.
+       When making FILE->stem, if CHECKED_LASTSLASH[FOUNDRULE], prepend the
+       part of FILENAME before LASTSLASH.
+
+Tue Sep 19 17:44:08 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * dir.c (dir_file_exists_p): Check for FILENAME being nil before
+       checking for it being "".
+
+       * main.c (define_makeflags): Fixed test for whether a flag/flag_off
+       option was non-default.  Also changed to generate a string that Unix
+       Make will grok (except for FP/int values and new flags).
+
+       * job.c (child_execute_job): Don't use the shell's -c option.
+       Also fixed an off-by-one bug in the ARGV -> shell arg list copying.
+
+Mon Sep 18 15:17:31 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.55.5.
+
+       * read.c (parse_file_seq): Check the beginning of the file name for a
+       `./', not the two chars after the end of the name (Q rather than P).
+
+       * job.c (child_execute_job): Include all of ARGV in the arg list for
+       the shell.
+
+       * main.c (define_makeflags): Don't include floating and positive_int
+       options in !PF.
+
+       * job.c (exec_command): Set the effective gid to the real gid before
+       execing.
+
+       * job.c (child_execute_job): Don't clobber the arg list when execing
+       the shell.
+
+Sun Sep 17 15:27:19 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * main.c (define_makeflags): Moved all the checking inside the switch.
+
+       * load.c [LDAV_BASED] (load_average): When we can't get the load
+       average, return zero instead of running off the end.
+
+       * file.c: Include variables.h.
+       * job.c: Declare dup2 and {block,unblock}_remote_children.
+       * file.h: Declare f_mtime.
+       * job.c: Don't declare construct_command_argv, since job.h does.
+       * function.c, main.c, load.c, remake.c: Include job.h.
+       * load.c [LDAV_BASED] (load_average): Declare nlist.
+       * variable.h: Declare print_file_variables.
+       * job.c [!USG]: Don't declare sigsetmask.
+       [!USG]: Declare getdtablesize.
+       Don't declare load_average.  Do declare wait_to_start_job.
+       Declare vfork, gete[gu]id, execve.
+       * commands.c: Declare remote_kill, getpid.
+       * make.h: Declare kill, exit, sigblock, pipe, close, ctime, open,
+       lseek, read.
+       * make.h [not USG]: Declare sigsetmask.
+       * job.h: Declare wait_for_children and {block,unblock}_children.
+
+       * dir.c (dir_file_exists_p): If FILENAME is nil, read in the whole
+       directory.
+       (find_directory): When we want to read in the whole directory, call
+       dir_file_exists_p with nil instead of "".
+
+       * file.h (struct file), job.h (struct child),
+         variable.h (struct variable): Use bitfields for flags.
+       * make.h (ENUM_BITFIELD): If GCC or #ifdef ENUM_BITFIELDS, define as
+       :BITS, else empty.
+       * compatMakefile (defines): Document ENUM_BITFIELDS.
+
+Sat Sep 16 12:38:58 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.55.4 (alpha).
+
+       * GNUmakefile (dist): Depend on default and doc.
+
+       * load.c [LDAV_BASED]: Include <nlist.h> rather than <a.out.h>; #ifdef
+       NLIST_NAME_UNION, use n_un.n_name instead of n_name.
+       * compatMakefile (LOAD_AVG): Document NLIST_NAME_UNION.
+
+       * job.c [USG-ish]: Don't redefine WIF{SIGNALED,EXITED} if they're
+       already defined.
+
+Fri Sep 15 13:59:42 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * glob.c, dir.c [USGr3 or DIRENT]: If neither d_ino, nor d_fileno is
+       defined, define d_ino as d_fileno.
+
+Thu Sep 14 18:29:38 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * job.c: Don't declare exec_command static.
+
+       * make.texinfo (Name Index): Changed title to include directives.
+
+       * Version 3.55.3 (alpha).
+
+       * make.texinfo (Running: Options): Document -e.
+
+       * main.c (main): Always give imported environment variables origin
+       `o_env'.
+       * variable.c (define_variable_in_set): Under -e, if ORIGIN, or an
+       existing variable's origin, is `o_env', make it `o_env_override'.
+
+       * load.c: Use the symbol KERNEL_FILE_NAME instead of KERNEL_FILE.
+       * compatMakefile: Changed the comment for `LOAD_AVG' accordinly.
+
+Thu Sep  7 16:46:26 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.55.2 (alpha).
+
+       * variable.c (print_variable_set), rule.c (print_rule_data_base),
+       file.c (print_file_data_base): If NO_FLOAT is defined, don't use
+       floating-point for printing statistics.
+       * compatMakefile (defines): Document NO_FLOAT.
+
+       * make.h (HASH): New macro to add the hashing value of one char to a
+       variable.c.
+       * file.c (lookup_file, enter_file, rename_file): Use it.
+       * dir.c (find_directory, dir_file_exists_p, file_impossible_p): Ditto.
+       * variable.c (define_variable_in_set, lookup_variable): Same here.
+
+       * variable.c, file.c, dir.c: Don't define *_BUCKETS if they are already
+       defined.
+
+       * compatMakefile (defines): Added comment about defining NO_ARCHIVES.
+       (ARCHIVES, ARCHIVES_SRC): New variables for {ar,arscan}.[oc].
+       (objs, srcs): Use $(ARCHIVES) and $(ARCHIVES_SRC).
+       * commands.c (set_file_variables), dir.c (file_exists_p),
+       remake.c (touch_file, name_mtime), implicit.c (try_implicit_rule,
+       pattern_search), make.h: If NO_ARCHIVES is #defined, don't do any
+       archive stuff.
+
+       * commands.c (set_file_variables): Don't kill the last char of
+       directory names in $([@*<%?^]D).
+
+Wed Sep  6 15:23:11 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * default.c (default_terminal_rules {%:: %,v}, {%:: RCS/%,v}): Don't
+       run co if the target exists.
+
+       * glob.c (glob_match): [!xyz], rather than [^xyz], means none of [xyz].
+
+       * glob.c: Misc minor cosmetic changes.
+
+Tue Sep  5 14:49:56 1989  Roland McGrath  (mcgrath at saffron.Berkeley.EDU)
+
+       * load.c [LDAV_BASED] (load_average): Check for == -1, rather than < 0
+       to see if lseek fails.  On some systems, `avenrun' is at an offset >
+       (2**31)-1, and lseek succeeds, returning a negative value.
+
+Mon Sep  4 11:07:58 1989  Roland McGrath  (mcgrath at saffron.Berkeley.EDU)
+
+       * rule.c (new_pattern_rule): Return `int' instead of `void': nonzero if
+       the passed rule was used, zero if not.
+       (install_pattern_rule): Pay attention to the return from
+       new_pattern_rule, and don't set the rule's `terminal' flag or give it
+       commands unless it's used.
+       (create_pattern_rule): Same idea.
+
+       * dir.c (find_directory): Removed unused variable.
+
+       * commands.c (execute_file_commands): Removed unused variable.
+
+       * read.c (record_files): Don't use NAME after freeing it.
+
+Sat Sep  2 00:33:19 1989  Roland McGrath  (mcgrath at saffron.Berkeley.EDU)
+
+       * Version 3.55.1 (alpha).
+
+       * function.c (string_glob): Don't add spaces after file names that
+       aren't added.  (Also means don't add spaces without checking the size
+       of the buffer.)
+
+       * remake.c (update_goal_chain): Don't remove makefiles with cmds and no
+       deps from the chain.
+       * main.c (main): Do it here, before calling update_goal_chain.
+
+       * remake.c (update_goal_chain): When updating fails, change STATUS even
+       if MAKEFILES is set.  Also stop remaking when updating fails if not
+       under -k and MAKEFILES is not set.
+
+       * remake.c (remake_file, update_file_1, notice_finished_file),
+       commands.c (execute_file_commands), make.h, commands.h: The functions
+       remake_file, notice_finished_file, and execute_file_commands no longer
+       return values, and their callers no longer expect values returned.
+
+       * remake.c (notice_finished_file): Don't set FILE's modtime to now if
+       it is a non-target with no commands.
+
+Fri Sep  1 00:04:39 1989  Roland McGrath  (mcgrath at saffron.Berkeley.EDU)
+
+       * read.c (read_all_makefiles): After freeing each element on MAKEFILES,
+       replace it with the name stored in read_makefiles by read_makefile.
+
+       * remake.c (update_file_1): Don't decide not to remake if FILE has no
+       cmds and no deps actually changed if FILE doesn't have any deps.
+
+       * file.c (remove_intermediate): Remove precious files that also have
+       the `dontcare' flag set.
+
+       * remake.c (update_file_1): Don't always remake if FILE has cmds but no
+       deps; only if FILE is double-colon.  (I don't know why this should be
+       done for double-colon targets, but that's what Unix make does.)
+
+       * load.c [LDAV_BASED] (load_average): Write error messages if the
+       various system calls fail.  Keep track of if we've failed before.
+       The first time we fail, write a message saying -l won't be enforced.
+       The first time we succeed after having failed, write a message saying
+       -l will be enforced again.
+
+       * remake.c [USG]: Don't #include <sys/file.h>
+
+       * load.c [generic Unix LDAV_BASED]: #include <fcntl.h> #ifdef USG,
+       else <sys/file.h> instead.
+
+       * job.c [USG && !USGr3 && !HAVE_DUP2]: Remove redundant
+       #include <errno.h> and declaration of `errno'.
+       [...] (dup2): Fixed so it won't always lose.
+
+       * default.c (default_suffix_rules: .texinfo.dvi): Copy, rather than
+       move, the aux and index files, so the TeX run can use them.
+
+       * compatMakefile: Remove redundant comment.
+
+       * load.c [generic Unix LDAV_BASED]: Include <a.out.h> instead of
+       <nlist.h>, since the `struct nlist' declaration in <nlist.h> varies
+       more than the one in <a.out.h>.
+       (load_average): Use the `n_un.n_name' field of the `struct nlist',
+       since the <a.out.h> declaration uses the union.
+
+       * main.c (main): For the temporary files made for stdin makefiles, set
+       the `intermediate' and `dontcare' flags.
+       * file.c (remove_intermediates): Don't print any messages for files
+       whose `dontcare' flag is set.  (The only files that will be
+       intermediate and `dontcare' will be the temporary files made for stdin
+       makefiles.)
+
+       * job.c (exec_command): Made global.
+       * job.h: Declare it.
+       * main.c (main): Use exec_command when re-execing.
+
+       * make.h: Declare environ.
+       * make.c: Don't.
+
+       * job.c (child_execute_job): New function to perform everything done in
+       the child side of a fork (for a job or `shell' function).
+       (start_job): Call it.
+       * job.h: Declare construct_command_argv and child_execute_job.
+       * function.c (expand_function: `shell'): Use child_execute_job.
+
+Thu Aug 31 18:42:51 1989  Roland McGrath  (mcgrath at saffron.Berkeley.EDU)
+
+       * function.c (expand_function: `shell'): Remove a trailing newline
+       instead of turning it into a space.
+
+       * main.c (main): Do init_siglist #ifdef HAVE_SIGLIST.
+
+       * job.c [WTERMSIG || (USG && !HAVE_SYS_WAIT)]: Test each W* macro
+       separately and define all those that aren't defined.
+
+Sat Aug 26 15:13:21 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * ar.c (ar_name): Return zero for `(foo)'.
+
+       * Version 3.55.
+
+       * make.texinfo (Rules: Multiple Targets): Make this node's `next'
+       pointer point to `Static Pattern'.
+       * make.texinfo (Makefiles: MAKEFILES Variable): Make this node's `prev'
+       pointer point to `Makefile Names'.
+
+       * make.1: Renamed to make.man.
+       * compatMakefile: Define `mandir' and `manext'.
+       (install): Depend on $(mandir)/make.$(manext).
+       ($(mandir)/make.$(manext)): Depend on make.man and copy it to $@.
+       ($(bindir)/make): Use `make' rather than $<; so Unix make can grok it.
+
+Thu Aug 24 03:35:48 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * variable.c (target_environment): Allow variables that start with
+       underscores.
+
+Wed Aug 23 22:50:32 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * variable.c (target_environment): Reject variables that don't start
+       with letters.
+
+Tue Aug 22 04:14:29 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * GNUmakefile (make-$(version).tar.Z): Put make.1 (the Unix manual
+       page) in the tar file.
+
+       * variable.c (target_environment): Don't write variables with origin
+       o_default (i.e., ones from default.c).
+       * make.texinfo (Commands: Recursion: Variables/Recursion): Document
+       that default variables are not put in the environment.
+
+       * remake.c (update_file_1): Remake all targets with commands but no
+       deps.
+
+Sat Aug 19 06:03:16 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * remake.c (update_file_1): In the final loop, set the deps'
+       `changed' members if they are newer than FILE.
+
+       * remake.c (update_goal_chain): Under -d, print a message if we decide
+       not to remake a makefile so as to avoid a possible infinite loop.
+
+Fri Aug 18 20:30:14 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * remake.c (remake_file): Cleaned up.
+
+       * commands.c (execute_file_commands): If the commands are empty, set
+       FILE->update_status to zero before returning.
+
+       * remake.c (notice_finished_file): Set `last_mtime' fields to zero
+       instead of calling name_mtime; file_mtime will do that later if anybody
+       cares.
+
+Thu Aug 17 10:01:11 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * make.texinfo (Rules: Wildcards: Wildcard Examples): Give this node a
+       `prev' pointer.
+
+       * Version 3.54.9 (alpha).
+
+       * make.texinfo: Fixed some @nodes.
+
+       * remake.c (check_dep): Don't set *MUST_MAKE_PTR if FILE doesn't exist
+       after running update_file.
+
+       * remake.c (notice_finished_file): If FILE has no commands, pretend its
+       modtime is now.
+
+       * remake.c (update_file_1): In the loops that call update_file on the
+       deps, compare modtimes before and after (unless deps are still being
+       made) and set the deps' `changed' members.  Do not set the `changed'
+       members in the loop that prints the newer/older debugging messages.
+       * remake.c (update_file_1): If no deps changed and FILE has no
+       commands, decide it doesn't need remaking.
+
+       * remake.c (update_file_1): Print a debugging message if we take
+       commands from default_file.
+
+       * make.texinfo (Rules: Directory Search: Selective Search): Removed
+       note about warning for `vpath' with a constant pathname, since it isn't
+       warned about anymore.
+
+       * remake.c (update_goal_chain): If MAKEFILES, remove makefiles which
+       are targets and have no deps.
+       * make.texinfo (Makefiles: Remaking Makefiles): Document that makefiles
+       will not be remade if they are targets but have no dependencies.
+
+Tue Aug 15 00:00:08 1989  Roland McGrath  (roland at apple-gunkies.ai.mit.edu)
+
+       * remake.c (notice_finished_file): Increment files_remade for non-phony
+       files if they didn't exist before (even if they still don't).
+
+       * job.c: Include <errno.h> and declare errno.
+
+       * job.c (exec_command): If the execve fails with ENOEXEC (Exec format
+       error), return instead of exiting the child process.
+
+       * job.c (start_job): In the child side, if exec_command fails, try
+       using the shell.
+
+       * job.c (start_job): In the child side, call unblock_children instead
+       of sigsetmask.
+
+       * remake.c (notice_finished_file): Under -n or -q, always increment
+       files_remade for non-phony files.
+
+       * rule.c (intall_pattern_rule): Use find_percent.
+
+       * vpath.c (vpath_search): Pass the `percent' members to
+       pattern_matches.
+
+Mon Aug 14 23:30:24 1989  Roland McGrath  (roland at apple-gunkies.ai.mit.edu)
+
+       * vpath.c (struct vpath): New member `percent', to hold a pointer into
+       the pattern where the % is.
+       (construct_vpath_list): Call find_percent on the pattern and set the
+       new `percent' member.
+       * read.c (read_makefile): Don't run find_percent on `vpath' directive
+       patterns.
+
+       * function.c (pattern_matches): Take new arg PERCENT, a pointer into
+       PATTERN where the % is.  If PERCENT is nil, copy PATTERN into local
+       space and run find_percent on it.
+       (expand_function: `filter', `filter-out'): Pass new arg to
+       pattern_matches.
+       * read.c (record_files): Pass PATTERN_PERCENT to pattern_matches for
+       static pattern rules.  Save the percent pointer into implicit rule
+       targets, and pass them to create_pattern_rule.
+       * rule.c (convert_to_pattern): Pass new arg to create_pattern_rule.
+       (create_pattern_rule): Take new arg TARGET_PERCENTS, nil or an array of
+       pointers into the corresponding elements of TARGETS, where the %s are.
+
+Sun Aug 13 00:29:19 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * Version 3.54.8.
+
+       * README.templatate, README-doc.template: New files, turned into README
+       and README-doc to go into the two distribution tar files.
+       * GNUmakefile: Added a rule to edit the version number in
+       README.template and README-doc.template, producing README and
+       README-doc.
+
+       * remake.c (update_goal_chain): If -n or -q is in effect for a
+       makefile, and it got updated, don't change STATUS, so we can still
+       return -1 (meaning nothing was done).  This avoids an infinite loop on
+       "make -n Makefile".
+
+Sat Aug 12 23:14:24 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * remake.c (notice_finished_file): Treat -q the same as -n.
+
+       * remake.c (update_goal_chain): Fixed handling of return from
+       update_file.  If -n or -q is in effect, ignore it.
+
+       * job.c (start_job): Don't test for -t.  We should never get called in
+       that case.
+
+Fri Aug 11 04:09:14 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * function.c (expand_function): Removed unused variables.
+       (handle_function): Removed unused variable.
+
+       * main.c (main): Removed unused variable.
+
+Wed Aug  9 09:37:10 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * Version 3.54.7.
+
+       * remake.c (notice_finished_file): If FILE's modtime actually changed,
+       increment files_remade.
+       (remake_file): Don't increment files_remade.
+
+       * remake.c (update_file): Don't print "up to date" messages for
+       phony files.
+
+       * job.c (child_handler): Don't set C->file->update_status to 1 if
+       start_job returns nonzero under -n or -t.
+
+       * expand.c (variable_expand): Count parens in $(foo:a=b) refs.
+
+       * main.c: Removed old declaration of `glob_tilde' (which hasn't existed
+       for a few months).
+
+Tue Aug  8 23:53:43 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * job.c (exec_command): Fixed to not ignore the last path component and
+       to do the right thing with an empty path.
+
+Fri Aug  4 15:58:19 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * remake.c (library_file_mtime): Look for libLIB.a, not /libLIB.a.
+       Do VPATH search on libLIB.a, not /usr/lib/libLIB.a
+
+Thu Aug  3 20:42:00 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * job.c [HAVE_SYS_WAIT or not USG]: If WIFSIGNALED is not defined by
+       <sys/wait.h>, define it as (WTERMSIG != 0).
+
+Tue Aug  1 19:25:34 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * remake.c (remake_file): If FILE has no commands and is a target,
+       don't set its time to now.  The time gets reset by notice_finished_file
+       anyway, and it isn't needed since check_dep checks for nonexistence.
+
+       * Version 3.54.6.
+
+       * read.c (read_makefile): Don't read off the end of the string after an
+       `include'.
+
+       * job.c (exec_command): New function to search the path for a file and
+       execute it.
+       (start_job): Use exec_command rather than execvp.
+
+       * read.c (read_makefile): Expand `include' directive args before
+       parsing them.  Allow trailing whitespace after filename.
+
+       * variable.c (target_environment): Put makelevel + 1, rather than
+       makelevel, in the `MAKELEVEL' envariable.
+
+Sat Jul 29 10:27:04 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * remake.c (notice_finished_file): Don't get the new modtime of phony
+       files.
+
+       * remake.c (remake_file): Run commands instead of touching under -t if
+       FILE->cmds->any_recurse is set.
+
+       * commands.h (struct commands): Add new member `any_recurse', to be set
+       nonzero if any `lines_recurse' element is nonzero.
+       * commands.c (chop_commands): Set the `any_recurse' member.
+
+       * commands.c (execute_file_commands): Split chopping of commands into
+       lines into new function chop_commands.
+       * commands.h: Declare chop_commands.
+
+       * read.c (read_makefile): Test for a line beginning with a tab after
+       checking for conditional lines, but before all other checks.
+
+Fri Jul 28 18:10:29 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * read.c (read_makefile): Match directives against collapsed line
+       and use that for their args.
+
+       * read.c (read_makefile): Warn about extra text after `include'.
+
+Tue Jul 25 14:34:25 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * make.texinfo (Rules: Directory Search: Selective Search): Fixed
+       example to use correct `vpath' syntax.
+
+Mon Jul 24 12:10:58 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * Version 3.54.5.
+
+       * job.c (start_job): In the child side, unblock SIGCHLD.
+
+Fri Jul 21 18:25:59 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * make.h: Don't include <sys/types.h> #ifdef sun.
+
+Mon Jul 17 14:29:10 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * implicit.c (pattern_search): If ar_name (FILENAME), don't check for
+       directory names.
+
+       * job.c (wait_for_children): Changed "waiting for children" message to
+       "waiting for unfinished jobs".
+
+Fri Jul 14 13:17:13 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * load.c (load_average): Use an unsigned offset into kmem.
+
+Thu Jul 13 18:44:49 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * variable.c (pop_variable_scope): Don't free the head of the chain of
+       variables in each bucket twice.
+
+Tue Jul 11 06:45:24 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * GNUmakefile: Include COPYING in the doc tar file.
+
+       * variable.c, read.c, misc.c, job.c, function.c: Replace some identical
+       "for" loops with next_token or end_of_token calls.
+
+Mon Jul 10 16:55:08 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * Version 3.54.4.
+
+       * compatMakefile: Documented new conditionals.
+
+       * job.c: Don't define sys_siglist if HAVE_SIGLIST is defined.
+       Don't define dup2 if HAVE_DUP2 is defined.
+
+       * job.c (child_handler): Interpret the return from start_job correctly.
+
+       * remake.c (update_file_1): Don't write "target not remade because of
+       errors" message under -n or -q.
+
+       * read.c: Declare getpwnam.
+
+       * glob.c: Use <dirent.h> if DIRENT is defined.
+       [USG]: Don't declare memcpy, since <memory.h> does.
+
+Fri Jul  7 20:53:13 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * misc.c (collapse_line): Copy the line over in the right place.
+
+Fri Jul  7 18:33:24 1989  Roland McGrath    (fsf at void.ai.mit.edu)
+
+       * remake.c: Conditionalize inclusion of <sys/file.h> on not
+       USG, since HP-UX defines a `struct file' there.
+
+Fri Jul  7 12:11:30 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * job.c: If WTERMSIG is defined by <sys/wait.h>, define WAIT_T as int,
+       and don't define other macros; this covers HP-UX.
+       If WTERMSIG is not defined, use int or union wait based on USG and
+       HAVE_SYS_WAIT; this covers BSD and SysV.
+
+       * Version 3.54.3 (alpha).
+
+       * job.c [USG and not USGr3]: Include <errno.h> and declare errno.
+
+       * job.c (unblock_children [USG]): Declare child_handler.
+
+       * job.c: Renamed WRETCODE to WEXITSTATUS.
+       [HAVE_SYS_WAIT or not USG]: Undefine WTERMSIG, WCOREDUMP, and
+       WEXITSTATUS before defining them.  The HP-UX <sys/wait.h> defines them.
+
+       * main.c (main): If there are no goals, fatal AFTER printing the data
+       base under -p.
+
+Thu Jul  6 22:43:33 1989  Roland McGrath  (roland at apple-gunkies.ai.mit.edu)
+
+       * glob.c [USG]: #define rindex as strrchr.
+
+       * job.c [USG]: Include <sys/param.h> and #define getdtablesize() as
+       NOFILE.
+
+Wed Jul  5 09:36:00 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * Version 3.54.2 (alpha).
+
+       * expand.c (variable_expand): When expanding recursive variable
+       references (${${a}}), use the correct delimiters in the constructed
+       variable reference.
+
+Mon Jul  3 18:29:26 1989  Roland McGrath  (roland at apple-gunkies.ai.mit.edu)
+
+       * compatMakefile: Clear out and redefine the .SUFFIXES list because
+       silly Sun 4 make defines .cps.h.
+
+       * compatMakefile: Fix comment about -DNO_MINUS_C_MINUS_O.
+
+       * remake.c: Include <sys/file.h> for O_* on 4.2.
+
+       * commands.c: Define sigmask if it's not defined.
+
+Fri Jun 30 07:33:08 1989  Roland McGrath  (roland at apple-gunkies.ai.mit.edu)
+
+       * remake.c (remake_file): Don't always increment files_remade.
+
+       * variable.c (push_new_variable_scope): Zero the new variable hash
+       table.
+
+Thu Jun 29 17:14:32 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * expand.c (variable_expand): When terminating the variable expansion
+       buffer, use variable_buffer_output instead of a simply zero store,
+       because the buffer may need to be enlarged.
+
+Wed Jun 28 16:53:47 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * Version 3.54.
+
+       * default.c (default_suffixes): Added `.ln'.
+       (default_suffix_rules): Changed lint rules to use -C.
+
+Thu Jun 22 20:49:35 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * job.c (start_job): Set `environ' to CHILD->environment before execing
+       in the child process!
+
+Tue Jun 20 17:23:13 1989  Roland McGrath  (roland at spiff.ai.mit.edu)
+
+       * compatMakefile: Put job.h and rule.h in `srcs'.
+
+       * Version 3.53.
+
+Mon Jun 19 16:25:18 1989  Roland McGrath  (roland at spiff.ai.mit.edu)
+
+       * job.c (start_job): If there are no more commands, return nonzero
+       under -n or -t.
+
+       * compatMakefile (make): Pass `-f' to mv.
+
+       * GNUmakefile: If `ARCH' or `machine' is defined, make $(ARCH)/*.o and
+       $(ARCH)/make instead of *.o and make.
+
+       * function.c (string_glob): Don't try to use freed storage!
+
+       * read.c (readline): If there is only one byte of space in the buffer,
+       enlarge the buffer before reading more.
+
+       * arscan.c [M_XENIX]: Miscellaneous minor changes for Xenix.
+
+Sun Jun 18 13:07:45 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * GNUmakefile (depend): Split commands into two lines so they won't be
+       so long when variable-expanded.
+
+       * compatMakefile: Documented MINUS_C_MINUS_O meaning.  The line
+       describing it got removed when the USG/wait stuff was documented.
+
+Sat Jun 17 22:56:54 1989  Roland McGrath  (roland at hobbes.ai.mit.edu)
+
+       * Version 3.52.
+
+Mon Jun 12 17:45:11 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * remake.c (check_dep): Drop circular dependencies instead of fataling.
+       (update_file_1 already does this.)
+
+       * default.c (default_suffix_rules): For .s -> .o, put the -o flag to
+       the assembler before the source file name.
+
+Sun Jun 11 12:00:52 1989  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.51.
+
+       * make.texinfo (Features): Noted 1003.2 requirement of `+' meaning.
+
+       * file.c (remove_intermediates): If !SIG, write a single "rm" command
+       line, listing all files.
+
+       * read.c (read_makefile): Don't free the storage for the passed
+       filename, since it might not be malloc'd.  When doing an included
+       makefile, free the name's storage.
+       (read_all_makefiles): Use variable_expand to find the value of
+       `MAKEFILES'.  Free the storage for the names of -f makefiles.
+       (read_makefile): Allocate storage for the makefile name in the
+       `struct file' in read_makefiles.
+
+       * make.texinfo (Running: Instead of Execution): Document the effect of
+       + and $(MAKE)/${MAKE}.
+
+       * make.texinfo (Functions: Foreach Function): Document that if the
+       iteration variable was undefined before the `foreach' call, it will be
+       undefined after the call.
+
+       * commands.c: Split into commands.c, job.h, and job.c.
+
+       * rule.c (try_implicit_rule, pattern_search): Moved to new file
+       implicit.c.
+
+       * rule.c: Split into rule.h, rule.c, and default.c.
+       * default.c (install_default_pattern_rules): Renamed to
+       install_default_implicit_rules.
+       * make.h, main.c (main): Renamed uses.
+
+       * make.c: Renamed to misc.c.
+
+       * make.c (main, log_working_directory, decode_switches,
+       decode_env_switches, define_makeflags, die, print_version,
+       print_data_base): Moved to new file main.c.
+
+       * commands.c (execute_file_commands): Don't collapse backslash-newlines
+       here.  When chopping the commands up into lines, don't chop at
+       backslash-newlines.
+       (start_job): Collapse backslash-newlines after printing the line.
+
+       * commands.c (start_job): Don't collapse backslash-newlines here.
+       (execute_file_commands): Collapse backslash-newlines before chopping
+       the commands up into lines.
+
+       * commands.c (set_file_variables): Initialize the length counters for
+       $^ and $? to zero!
+
+       * commands.c (start_job): Use vfork instead of fork.  Someone else says
+       the child and parent DO have separate file descriptors.
+
+       * variable.c: Split internals into variable.c, function expansion into
+       function.c, and variable expansion into expand.c.
+       * function.c (handle_function): New function to check for a function
+       invocation and expand it.
+       * expand.c (variable_expand): Use handle_function.
+       * variable.c (push_new_variable_scope): New function to push a new
+       empty variable set onto the current setlist.
+       (pop_variable_scope): New function to pop the topmost set from the
+       current setlist and free its storage.
+       * function.c (expand_function: `foreach'): Push a new variable scope
+       for the iteration variable and pop the scope when finished.
+       * variable.h: Declare new functions.
+       * variable.c (initialize_variable_output): New function to return a
+       pointer to the beginning of the output buffer.
+       (save_variable_output): New function to save the variable output state.
+       (restore_variable_output): New function to restore it.
+       * expand.c (variable_expand): Use initialize_variable_output.
+       (allocated_variable_expand): Use {save,restore}_variable_output.
+       * variable.c (current_setlist): Renamed to current_variable_set_list
+       and made global.
+
+Sat Jun 10 00:11:25 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * remake.c (library_file_mtime): Check for libNAME.a in the current
+       directory before doing VPATH search.
+
+       * variable.c (print_variable_set): Don't write "# Variables", and write
+       fewer blank lines.
+       (print_variable_data_base): Precede the variables with "# Variables".
+
+       * make.c (main): Print the data base under -p after doing everything
+       else, just before exitting.  This way it gets info determined in
+       updating the goal targets.
+
+       * variable.c (print_variable_data_base): Split into print_variable,
+       which prints one variable, and print_variable_set, which prints a set.
+       Replaced with a call to print_variable_set for the global set.
+       (print_file_variables): New function to print a given file's local
+       variables.
+
+       * file.c (print_file_data_base): Call print_file_variables to print
+       each file's local variables.
+
+       * commands.c (set_file_variables): Actually define the values for
+       the $^ and $? variables!!!
+
+       * make.texinfo (Implicit: Pattern Rules: Automatic): Document new D and
+       F versions of $^ and $?.
+
+       * commands.c (start_job): In the child fork, use getdtablesize and a
+       loop to close all file descriptors other than 0, 1, and 2.  We need to
+       do this since not only the bad stdin pipe, but also some directories,
+       may be open.
+
+       * commands.c (start_job): Use fork instead of vfork, because a vfork
+       parent and child share file descriptors, and our child needs to diddle
+       with stdin.
+
+       * variable.c (initialize_file_variables): When created a new variable
+       set, zero out the hash table.
+
+       * variable.c (target_environment): Don't use variables whose names are
+       not made up of alphanumerics and underscores.
+
+       * remake.c (update_file_1): Set the `parent' member of each dependency
+       to FILE before updating it.
+
+       * file.h (struct file): Add `parent' member.
+
+       * variable.c (initialize_file_variables): Don't take second arg PARENT.
+       Use FILE->parent instead.  If FILE->parent->variables is nil, recurse
+       to initialize it.
+
+       * variable.h: Declare {allocated_}variable_expand_for_file.
+
+       * variable.c (allocated_variable_expand): Now
+       allocated_variable_expand_for_file, calling variable_expand_for_file,
+       and taking second arg FILE.
+       (allocated_variable_expand): New function, a wrapper around
+       allocated_variable_expand_for_file, passing a nil second arg.
+
+Fri Jun  9 12:11:45 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c (start_job): On the child side of the fork, always close
+       the bad stdin file descriptor.
+
+       * commands.c (struct child): New member `environment', to hold the
+       environment for the child.
+       (execute_file_commands): Set the new childs `environment' member to nil
+       before calling start_job.
+       (start_job): Set up CHILD->environment before running the commands if
+       it is nil.
+
+       * make.c (main): Don't call new_environ.  `shell' functions will now be
+       run with the environment make was called with.
+
+       * commands.c (child_handler): Don't check C->command_ptr before calling
+       start_job since we now have to check C->file->cmds->command_lines and
+       it's easier to let start_job handle all that.
+
+       * commands.c (struct child): New member `command_line', to hold an
+       index into file->cmds->command_lines.
+       (execute_file_commands): Set the new child's `command_line' to 0 and
+       its `commands' and `commands_ptr' to nil.
+       (start_job): When CHILD->command_ptr runs out, increment
+       CHILD->command_line and run the corresponding line from
+       CHILD->file->cmds->command_lines.  Run it even under -t, -q, or -n if
+       the CHILD->file->cmds->lines_recurse element for that line is set.
+
+       * commands.c (execute_file_commands): Chop CMDS up into lines, setting
+       its `command_lines' and `lines_recurse' members, if it wasn't already
+       chopped.
+
+       * commands.h (struct commands): New members `command_lines' and
+       `lines_recurse'.  The first is an array of chopped-up lines; the second
+       is an array of flags, each nonzero if the corresponding line is
+       recursive.
+
+       * variable.c (variable_expand_for_file): If FILE is nil, just do a
+       vanilla variable_expand.
+       (expand_function: `shell'): Pass second arg (as nil) to
+       construct_command_argv.
+
+       * commands.c (construct_command_argv): Use variable_expand_for_file on
+       `$(SHELL)' and `$(IFS)' instead of lookup_variable to check those
+       variables.  This handles file-local and recursive values correctly.
+       To support this, take an additional argument FILE.
+
+       * variable.c (initialize_file_variables): New function to initialize
+       FILE's variable set list from PARENT's setlist.  PARENT is the
+       immediate dependent that caused FILE to be remade, or nil if FILE is a
+       goal.  (When user-level per-file variables are implemented, PARENT
+       should be passed as nil when defining per-file variables.)
+
+       * variable.c (variable_expand_for_file): New function to expand a line
+       using the variable set of a given file, and reporting error messages
+       for the file and line number of that file's commands.
+
+       * variable.h: Don't declare lookup_variable_for_file.
+
+       * variable.c (lookup_variable_*): Turned back into lookup_variable.  It
+       now uses current_setlist.
+       (global_setlist): New static `struct variable_set_list', a setlist
+       containing global_variable_set.
+       (current_setlist): New static `struct variable_set_list *', a pointer
+       to the current variable set list.
+       (define_variable): Define in the current top-level set, not the global
+       set.
+
+       * commands.c (set_file_variables): New function to set up the automatic
+       variables for a file in its own variable set.
+       (execute_file_commands): Use set_file_variables.
+
+       * variable.c (new_environ): Replaced with target_environment, taking an
+       argument FILE, and returning an environment for FILE's commands.
+
+       * variable.c, variable.h: Remove all global special variable pointers.
+
+       * variable.c (define_variable_for_file): New function like
+       define_variable, but takes additional arg FILE, and defines the
+       variable in the variable set at the top of FILE's chain.
+       (lookup_variable_for_file): New function like lookup_variable, but
+       takes additional arg FILE, and looks the variable up in all of FILE's
+       variable sets.
+
+       * file.h (struct file): New member `variables', a `struct
+       variable_set_list' containing the list of variable sets used in the
+       expansion of the file's commands.
+
+       * variable.c (variables): Replaced with static `struct variable_set'
+       global_variable_set.
+       (define_variable): Now define_variable_in_set, taking additional
+       argument SET, the `struct variable_set' to define it in.
+       (define_variable): Use define_variable_in_set with global_variable_set.
+       (lookup_variable): Now lookup_variable_in_set, taking additional
+       argument SET, the `struct variable_set' to look it up in.
+       (lookup_variable): Use lookup_variable_in_set with global_variable_set.
+       (lookup_variable_in_setlist): New function to look up a variable in a
+       `struct variable_set_list' using lookup_variable_in_set.
+
+       * variable.h (struct variable_set): New structure, containing a hash
+       table and the number of hash buckets.
+       (struct variable_set_list): New structure, containing a link for a
+       linked-list, and a `struct variable_set'.
+
+       * commands.c (start_job): Under -n, return what the recursive start_job
+       call returns, since it might actually start a child.
+
+       * make.texinfo (Rules: Wildcards): Document ~ and ~USER expansion.
+
+       * commands.c (execute_file_commands): If start_job returns
+       failure, but -t is set, set FILE->update_status to success.
+       (start_job): If -t is set, and the commands are not recursive, return
+       failure (is is done for -q).
+
+       * remake.c (touch_file): New function to touch FILE.
+       (remake_file): Use touch_file.  When touching a file, still do
+       execute_file_commands.
+
+       * remake.c (remake_file): Don't check question_flag (-q), since we
+       can't know here if the commands are recursive.
+
+       * commands.c (start_job): Don't use the `recursive' member of
+       CHILD->file->cmds.  Instead, check for leading +s and $(MAKE) or
+       ${MAKE} in the command line here.
+
+       * commands.h (struct commands): Remove `recursive' member.
+
+       * rule.c (install_default_pattern_rules): Remove use of `recursive'
+       member.
+
+       * read.c (record_files): Don't check commands from $(MAKE) and set
+       their `recursive' member.
+
+       * commands.c (fatal_error_signal): Treat SIGQUIT like SIGINT, SIGHUP,
+       and SIGTERM, but don't send it to ourselves because it will cause a
+       core dump.
+
+Thu Jun  8 20:30:04 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.50.
+
+       * variable.c (variable_expand): Use allocated_variable_expand instead
+       of expand_argument in a few places.
+
+       * variable.c (allocated_variable_expand): Do static variable shuffling
+       here instead of using expand_argument.
+       (expand_argument): Use allocated_variable_expand.
+
+       * variable.c (recursively_expand): New function to recursively expand
+       its argument (a `struct variable'), returning the malloc'd value.
+       (variable_expand): Use recursively_expand.
+
+Sun May 28 12:49:27 1989  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.c (main): Fixed buggy fix in deciding to increase space for
+       command-line variable definitions.  (First it never did it, then it
+       always did it; now it does it when necessary.)
+
+Sat May 27 14:01:54 1989  Roland McGrath  (mcgrath at hecuba.Berkeley.EDU)
+
+       * make.c (main): Fixed bug in deciding to increase space for
+       command-line variable definitions.
+
+Fri May 26 15:48:01 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * read.c (multi_glob): Use allocated_expand_variable for checking
+       `HOME' variable for ~ expansion, since this may be called from inside a
+       `wildcard' function expansion.
+
+       * variable.h: Declare allocated_expand_variable.
+
+       * variable.c (allocated_expand_variable): New function to do variable
+       expansion in an allocated buffer, rather than the static one.
+
+       * make.c (main): Don't set glob_tilde (it no longer exists).
+
+       * variable.c (string_glob): Use multi_glob and parse_file_seq.
+
+       * read.c (multi_glob): Do ~ expansion here.
+
+       * glob.c (glob_tilde, glob_filename): Removed ~ expansion.
+
+       * variable.c (define_variable, lookup_variable): Use a smarter hashing
+       algorithm (the same one used for files and directories).
+       (VARIABLE_BUCKETS): Increased to 523.
+
+       * file.c (enter_file, lookup_file, rename_file): Use a smarter hashing
+       algorithm, spreading the bits about somewhat.
+
+       * make.c (log_working_directory): Under `-p', precede the directory
+       message with a `#'.
+
+       * make.c (print_version): Under `-p', precede each line with a `#'.
+       (print_data_base): Precede the header line with a `#' and include the
+       date and time on it.
+
+       * vpath.c (print_vpath_data_base): Precede non-directive
+       lines with `#'s.
+
+       * commands.c (print_commands): Precede the non-command line with a `#'.
+
+       * rule.c (print_rule_data_base), file.c (print_file_data_base): Precede
+       non-rule lines with `#'s.
+
+       * dir.c (print_dir_data_base): Precede all lines with `#'s.
+
+       * variable.c (print_variable_data_base): Changed format so that it can
+       be makefile input.  Lines that are not variable definitions are
+       preceded with `#'.  Nonrecursive variable definitions are made with all
+       dollar signs doubled to reproduce the initial value.  Recursive
+       variable definitions containing newlines are done with `define'
+       directives.  Nonrecursive variable definitions containing newlines, and
+       variable names containing :, =, or newlines, will come out garbled.
+
+Wed May 24 00:20:04 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.49.
+
+Tue May 23 19:18:00 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * variable.c (expand_function: `filter'/`filter-out'): Use
+       find_percent instead of pattern_p.
+
+       * variable.c (expand_function: `patsubst'): Pass new args (both nil)
+       to patsubst_expand.
+       (variable_expand): For $(var:pat%=rep%) references, pass new args to
+       patsubst_expand so as to avoid find_percent and thus disallow
+       quoting the %s.
+
+       * read.c (record_files): Pass new args to patsubst_expand.
+
+       * variable.c (patsubst_expand): Take two new args: PATTERN_PERCENT
+       and REPLACE_PERCENT.  Each of these, if non-nil, means that PATTERN
+       (or REPLACE) has already been run through find_percent, and
+       PATTERN_PERCENT (or REPLACE_PERCENT) is the result.
+
+       * make.h: Declare find_percent instead of pattern_p.
+
+       * read.c (pattern_p): Changed to find_percent, returning a pointer
+       to the %, or nil if there is none.
+       (record_files): Take another arg, PATTERN_PERCENT, a pointer to the
+       % in PATTERN.
+       (read_makefile): Pass PATTERN_PERCENT to record_files.
+
+       * make.texinfo (Rules: Static Pattern: Static Usage,
+       Rules: Directory Search: Selective Search,
+       Functions: Text Functions): Documented that `%' can be quoted.
+
+       * variable.c (expand_function: `filter'/`filter-out'): Use pattern_p
+       to allow quoted %s in patterns.
+
+       * variable.c (patsubst_expand): Use pattern_p on PATTERN and REPLACE
+       to allow quoted %s.  Quoting backslashes are removed from REPLACE
+       even if PATTERN contains no unquoted %.
+
+       * read.c (pattern_p): Made global.
+       * make.h: Declare pattern_p.
+
+       * read.c (pattern_p): New function to search for an unquoted % in a
+       string.  Backslashes quote %s and backslashes.  Quoting backslashes
+       are removed from the string by compacting it into itself.  Returns
+       nonzero if an unquoted % was found, zero if not.
+       (record_files): Use pattern_p to check for implicit rules.
+       (read_makefile): Use pattern_p to check for static pattern rules.
+       Also use it to allow quoted %s in `vpath' patterns; warn about
+       `vpath' patterns with no %s.
+
+Mon May 22 16:31:52 1989  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * glob.c (glob_filename): Replace a `1' with the `l' that should
+       have been there.  This incidentally stops it from dumping core.
+
+       * glob.c (glob_filename): If the path is just a directory, with no
+       file name pattern, return the directory alone.
+
+       * glob.c (glob_tilde): New global variable (int), defaults to zero.
+       (glob_filename): If glob_tilde is nonzero, expand ~ or ~USER.
+
+       * variable.c (string_glob): Keep a static allocated buffer for file
+       names taken from the list, instead of allocating and freeing one
+       every time.
+
+Fri May 19 18:06:26 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * make.c (decode_switches): Get floating numbers from the right string.
+
+Sun May 14 13:48:04 1989  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * commands.c (delete_child_targets): When deleting `also_make'
+       files, include the target's name in the message:
+               make: *** [foo] Deleting file `bar'
+
+Sat May 13 17:34:26 1989  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.c (max_load_average, default_load_average): Default to -1.
+
+       * load.c (wait_to_start_job): Return if max_load_average is < 0.0,
+       not equal.
+
+Fri May 12 16:08:05 1989  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * variable.c (variable_buffer_output): Don't try to do pointer
+       arithmetic between objects not in the same array.
+
+Wed May 10 15:55:29 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * rule.c [M_XENIX] (default_suffix_rules, default_variables): Minor
+       changes to allow for strange compiler syntax.
+
+       * rule.c (default_variables): Don't include "> $@" in
+       $(PREPROCESS.S), since it's already in the .S.s rule.
+
+       * file.c (enter_file): Make a new double-colon file the `prev'
+       member of the bottom `prev' file (the one whose `prev' is nil).
+
+       * read.c (do_define): Append newlines after copying the lines into
+       the value buffer, so we end up with a trailing newline.
+
+       * make.c (print_version): If the global variable
+       `remote_description' is not nil or "", append "-%s" (its value) to
+       the version number.
+       * remote-*.c: Define remote_description appropriately.
+
+Sun May  7 15:15:53 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c (error_status): Converted to new function child_error,
+       taking new arguments TARGET_NAME and IGNORED, and writing an error
+       message: "*** [target] Error 1" (or signal #, etc.), appending
+       " (ignored)" if IGNORED is nonzero.
+       (child_handler): Use child_error instead of error_status.
+
+       * compatMakefile (all): Don't depend on `doc'.
+
+       * compatMakefile (clean): Don't remove make-info*.
+       (realclean): New rule, depends on `clean', removes tags, TAGS,
+       and all Info and TeX files.
+
+Thu May  4 17:00:46 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * variable.c (print_variable_data_base), file.c
+       (print_file_data_base), rule.c (print_rule_data_base),
+       Use floating-point for averages and percentages.
+
+       * make.c (print_data_base): Print messages before and after the data
+       base information.
+
+       * commands.c (print_commands): Changed output format to separate
+       lines in commands and prefix them with tabs.
+
+       * dir.c (print_dir_data_base): Changed output format slightly.
+
+       * vpath.c (struct vpath, construct_vpath_list,
+       selective_vpath_search): Remove the `exists' member and its uses.
+
+       * vpath.c (print_vpath_data_base): New function to print all
+       selective and general VPATH search paths (for -p).
+
+       * make.c (print_data_base): Call print_vpath_data_base.
+
+       * file.c (print_file_data_base): Changed format to look more like a
+       makefile rule.  Now reports all information in the `struct file'.
+
+       * rule.c (print_rule_data_base): Changed format of display from:
+         %: (terminal)
+          depends on: RCS/%,v
+       to:
+         %: RCS/%,v
+           is terminal.
+           references nonexistent subdirectory.
+       Also include number and percent that refer to nonexistent
+       subdirectories.
+
+Thu Apr 27 15:45:40 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * make.c (main): Figure out the level of recursion before writing
+       the `Entering directory' message.
+       * variable.c (define_automatic_variables): Don't figure out the
+       level of recursion from `MAKELEVEL'.  It's now done in main.
+
+       * Version 3.48.
+
+Wed Apr 26 16:39:17 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c (child_handler): Set `update_status' to zero when there
+       are no more commands.
+
+       * make.c (log_working_directory): If MAKELEVEL > 0, indicate the
+       recurson in the message (make[1]: ...).
+
+       * commands.c (child_handler): Change status to `cs_finished' when
+       commands fail.
+
+       * commands.c (start_job): Return 0 (success) if there were no more
+       commands for the child.
+       (child_handler): Change the status to `cs_finished' when start_job
+       fails to start the commands.
+
+       * make.c (main): Don't handle SIGEMT if it's not defined.
+       Do handle SIGDANGER if it is defined.
+
+       * commands.c (child_handler): Reorganized inner loop so that it
+       doesn't try to inspect the child before finding it.
+
+Tue Apr 25 16:28:24 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * make.c (end_of_token): Fixed bug wherein backslashes caused
+       immediate return.
+
+       * Version 3.47.
+
+       * make.texinfo (Implicit: Pattern Rules: Automatic): Document
+       setting of `$*' for explicit rules.  Add note clarifying that
+       automatic variables, though referred to in the documentation as
+       `$<', etc. are no different than `$(<)', etc.
+
+Fri Apr 21 18:00:12 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * file.c (enter_file): Don't strip leading `./'s.
+
+       * read.c (parse_file_seq): Strip leading `./'s.
+
+Thu Apr 13 17:26:41 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * make.texinfo (Commands: Parallel, Running: Options): Document that
+       -l with no argument removes a previous load limit.
+
+       * make.c (struct command_switch): New member `default_value'.
+       (default_job_slots): Default value (of 1) for -j.
+       (default_load_average): Default value (of 0, unlimited) for -l.
+       (command_switches): Use default values for -j and -l.
+       Also, -l without an arg now means no load limit.
+       (define_makeflags): Don't write positive_int or floating options
+       whose values are their defaults.
+
+       * make.c (main): Under -w, write a `Leaving directory' message
+       before re-execing.
+
+Tue Apr 11 16:46:29 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.46.
+
+       * Makefile: Provide an easy place for system-specific definitions
+       (-DUSG, etc.) and extra object files (for whatever).
+
+       * make.texinfo: Miscellaneous fixes from RMS.
+
+Mon Apr 10 19:31:34 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * rule.c (pattern_search): Put rules with `subdir' flags set in
+       TRYRULES, since these might be valid with VPATHs.  In the TRYRULES
+       loop, don't do lookup_file or file_exists_p calls for dependencies
+       of rules with `subdir' flags set, but still do vpath_search calls
+       and intermediate-file searches.
+
+Thu Apr  6 16:33:00 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * make.texinfo (Implicit: Pattern Rules: Automatic): Document the
+       new definition of $* for explicit rules.
+
+       * commands.c (execute_file_commands): If FILE->stem is nil, figure
+       out if FILE->name ends in a suffix in the .SUFFIXES list; if so,
+       store the name sans suffix in FILE->stem (and $*).
+
+Wed Apr  5 15:24:48 1989  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * file.c (remove_intermediates): Don't use `file_exists_p' to check
+       for the existence of intermediate files, because the hashed
+       directories will probably be out of date.
+
+       * commands.c (child_handler): Free the good stdin before running the
+       next command line.
+
+       * commands.c [USG] (init_siglist): Don't case SIGEMT if it's not
+       defined.  Do case SIGDANGER (for IBM RT) if it is defined.
+
+       * commands.c: Changed `SYS_WAIT' to `HAVE_SYS_WAIT'.
+       (child_handler): Use `wait3' if HAVE_SYS_WAIT is #defined.
+
+       * file.c (enter_file): If any `./'s are stripped off, allocate a new
+       copy of the shortened name.
+
+       * rule.c (pattern_search): Allocate the right length strings for
+       `also_make' members.
+
+Sat Apr  1 13:28:38 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.45.
+
+       * GNUmakefile: Make a separate tarfile of the DVI and info files.
+
+       * make.c (define_makeflags): If a switch that takes an argument has
+       its default value, put the switch in MAKEFLAGS with no arguments.
+
+       * make.c (command_switches): Pass `-l' in MAKEFLAGS.
+
+Wed Mar 29 17:50:05 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * GNUmakefile: Don't include the DVI and info files in the dist.
+
+       * commands.c (child_handler): Don't call
+       check_changed_{directories,vpaths}.
+
+       * make.h: Don't declare check_changed_{directories,vpaths}.
+
+       * vpath.c (check_changed_vpaths): Removed this function.
+
+       * dir.c (struct directory): Remove `modtime' member.
+       (find_directory): Don't set `modtime' member.
+       (check_changed_directories): Removed this function.
+
+       * remake.c (update_file_1): Set FILE->command_state to cs_finished
+       if it didn't need to be remade.
+
+       * remake.c (update_file): Only write the "up to date" message if the
+       target went from `not_started' state to `finished' state without
+       incrementing the count of files remade.
+
+       * commands.c [USG] (init_siglist): If both SIGCHLD and SIGCLD are
+       defined, don't put them both in the `switch'.
+
+Tue Mar 28 15:37:02 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * file.c (rename_file): Change FILE's name!!!
+
+       * rule.c (create_pattern_rule): Set the `terminal' member of the new
+       rule after calling new_pattern_rule, which zeros it.
+
+       * rule.c (default_variables): Use $(C++) in $(COMPILE.cc)!
+
+Sun Mar 26 15:52:30 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Makefile: Added a `clean' target.
+
+Fri Mar 24 15:08:46 1989  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * Version 3.44.
+
+       * file.c (rename_file): If a `struct file' for the renamed-to name
+       exists, and it is a target or has deps or commands, barf.
+       If not just remove the old one for put in the new one.
+
+       * remake.c (update_file_1, check_dep): Changed it back so that equal
+       modtimes to NOT make dependencies be considered newer.  RCS checks
+       out files with equal modtimes as the RCS files, so this screws it.
+
+       * make.h, glob.c: If __GNUC__ is defined, use __builtin_alloca.
+
+       * Makefile: Use variables `ALLOCA' and `ALLOCASRC' so systems
+       without a good standard alloca can get it from the Emacs
+       distribution (or somewhere).
+
+       * dir.c: Don't include <sys/stat.h>, since make.h does.
+
+       * make.c: Removed debugging version of getwd.
+
+Thu Mar 23 16:16:27 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.43.
+
+       * remake.c (update_file_1): If a dependency loop is found, don't
+       fatal.  Emit an error message and remove the dependency.
+
+       * remake.c (library_file_mtime): Fixed to use the right names.
+       (update_file_1, check_dep): Consider a dependency "newer" than its
+       dependent if they have the same modification time.
+
+Wed Mar 22 19:31:35 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * file.c (remove_intermediates): Don't try to remove nonexistent files.
+
+Mon Mar 20 10:21:22 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.42.
+
+       * rule.c (default_variables): Set F77 to $(FC) and F77FLAGS to
+       $(FFLAGS) so explicit rules expecting these (which are in System V)
+       will work.  However, there is no way to make setting these affect
+       the implicit rules, unless we trash FC and FFLAGS (which BSD uses).
+       [USG]: Set GET to `get' rather than `/usr/sccs/get'.
+
+Sun Mar 19 20:00:27 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * vpath.c (construct_vpath_list): Don't replace VPATH[ELEM] with
+       dir_name (V), because the latter may get freed.
+
+Sat Mar 18 15:01:39 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.41.
+
+       * make.texinfo: Cleaned-up edition 0.1 Beta from RMS and Bob Chassell.
+
+       * file.c (rename_file): If a file with the new name already existed,
+       use the same storage space, after freeing the old file's name, deps,
+       and `also_make' member, preserving the link in the chain.
+       Also write an error message telling the user to report the incident;
+       I don't think this should be able to happen, but I'm not sure.
+
+       * file.c (rename_file): Don't add the hash values of the old and new
+       names together!  Reset HASHVAL before computing the second value.
+
+       * dir.c (check_changed_directories): Zero the new file hash table
+       after allocating it.
+
+       * dir.c (dir_file_exists_p): If FILENAME is "", return 1 if the
+       directory exists.
+
+       * vpath.c (check_changed_vpaths): New function to run through the
+       search paths of all VPATHs, making the `exists' members correspond
+       to reality.
+
+       * commands.c (child_handler): Call check_changed_vpaths.
+
+       * make.h: Declare check_changed_vpaths.
+
+       * vpath.c (struct vpath): New element `exists', an array of char
+       flags; exists[N] is nonzero if searchpath[N] exists.
+       (construct_vpath_list): Set the `exists' member.
+       (selective_vpath_search): Don't search directories whose `exists'
+       elements are zero.
+
+       * read.c (read_makefile): Set the `dontcare' flag of makefiles
+       from the MAKEFILES variable if they were not mentioned anywhere but
+       in the MAKEFILES variable.
+
+       * read.c (read_makefile): Don't write an error message if fopen
+       fails for a makefile from the MAKEFILES variable.
+
+       * dir.c (struct directory): Add `modtime' member to record the
+       modification time of the directory when it was opened.
+       (check_changed_directories): New function to check all known
+       directories; if their modtimes have changed since they were opened,
+       their file tables are cleared and they are reset to be read in.
+
+       * commands.c (child_handler): Call check_changed_directories before
+       returning.
+       make.h: Declare check_changed_directories.
+
+Tue Mar 14 20:07:13 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.40.
+
+       * make.c (print_version): Made the copyright say 1988, 1989.
+
+       * read.c (read_all_makefiles): Don't set *MAKEFILES to the name of
+       the end of the read_makefiles chain, since the latter may be from an
+       included makefile.  (Why did I do this before?)
+
+       * make.c (main): Set argv[0] to "" if it was nil.  Don't put the
+       command-line variable definitions into argv[0], only into the MAKE
+       variable!
+
+Sun Mar  5 20:44:08 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * ar.c (ar_member_date, ar_touch): Remove the trailing ) from the
+       member name.
+
+Fri Mar  3 18:15:15 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c (construct_command_argv): Initialize NEW_ARGV to 0.  At
+       `slow' label, if NEW_ARGV is not 0, free it; then allocate 4 strings.
+
+Tue Feb 28 14:29:39 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.39.
+
+       * COPYING, make.texinfo: New GNU General Public License, version 1.
+
+       * *.c, *.h, Makefile: New copyright notices for the new GNU General
+       Public License, version 1.
+
+       * commands.c [USG]: Define WRETCODE correctly (again).
+
+       * variable.c (expand_function: `shell'): Don't capture the standard
+       error output of the shell command.
+
+       * ar.c (ar_touch, ar_member_date): Allocate MEMNAME with the right
+       length.
+
+       * load.c [not UMAX] (load_average): Don't clobber the first nlist
+       member when trying to set the second!
+
+Thu Feb 23 13:13:53 1989  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * commands.c (child_handler): Really ignore errors under -i and for
+       - lines, don't just print a different message.
+
+       * make.c (decode_switches): Fixed handling of arguments (or lack
+       thereof) to switches.
+
+Wed Feb 22 16:25:39 1989  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * commands.c (construct_command_argv): Don't clobber LINE when
+       checking the IFS variable.
+
+Sun Feb 19 11:17:07 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * load.c [UMAX, not NO_LDAV] (load_average): Return 0.0 rather than
+       randomness when calls fail.
+
+       * Version 3.38.
+
+       * commands.c (fatal_error_signal): If handling a user kill signal
+       (TERM, INT, HUP), wait for the children without printing the
+       "Waiting for children" message, since they will die quickly.
+
+       * Version 3.37.
+
+       * remote-stub.c (remote_status): Take another arg, BLOCK.  If this
+       is nonzero block waiting for remote children.  If not, return 0 if
+       we would have to block.
+
+       * commands.c (child_handler) [not USG]: If called as a signal
+       handler, use wait3 and don't block.
+       [USG]: If called as a signal handler, return after handling one child.
+
+Sat Feb 18 13:37:04 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * file.c (snap_deps): Process all double-colon entries of each file,
+       not just the first one.
+
+       * Version 3.36.
+
+       * remote-stub.c: remote.c renamed.
+       remote.c: Just include remote-stub.c
+
+       * commands.c (child_handler): If we were called as a signal handler,
+       return after handling one child.
+
+       * commands.c [not USG]: Include <signal.h> and define `sigmask' if
+       <signal.h> doesn't.
+       (block_children, unblock_children): Use sigmask rather than
+       bitshifting explicitly (and incorrectly).
+
+       * remote.c (remote_kill): New function to send a signal to a
+       remote child.
+
+       * commands.c (fatal_error_signal): If we get a SIGTERM, send one to
+       each living child.  If we get a SIGTERM, SIGINT, or SIGHUP, delete
+       all pending targets before waiting for children.
+       (struct child): Add new member `deleted'.
+       (start_job): Initialize `deleted' member to 0.
+       (delete_child_targets): New function to delete a given child's
+       targets, unless the `deleted' flag in the `struct child' says they
+       have already been deleted.  Sets this flag before returning.
+
+Thu Feb 16 18:32:07 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c [USG]: Define `WRETCODE' correctly (X & 0xff00).
+
+Tue Feb 14 16:05:00 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c (construct_command_argv): Don't make the 0th element of
+       the argument list be "sh" when executing /bin/sh, because start_job
+       uses the 0th element as the program name.
+
+Sun Feb 12 17:42:05 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.35.
+
+       * read.c (readline): Put a null in the beginning of the buffer
+       before starting the reading loop.
+
+       * read.c (read_makefile): Made main reading loop while
+       !feof (infile), and removed EOF check after calling readline.
+
+Sun Feb  5 19:52:38 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * remote.c (block_remote_children, unblock_remote_children): New
+       (stub) functions to block and restore asynchronous notification of
+       remote child death.
+
+       * commands.c (block_children): Call block_remote_children.
+       (unblock_children): Call unblock_remote_children.
+       (child_handler): If called as a signal handler, block remote
+       children on entry and unblock them before returning.
+
+       * commands.c (child_handler): For unknown children, if they are
+       remote, give their remote ID; if local, give their PID and make's.
+
+       * commands.c (execute_file_command): Don't put a new child in the
+       chain unless start_job succeeds.  Block children before calling
+       start_job, and unblock them after putting the child in the chain and
+       incrementing `job_slots_used' (if start_job succeeded).
+
+       * commands.c (block_children, unblock_children): Make these globally
+       visible (not `static').
+       commands.h: Declare block_children and unblock_children.
+
+       * variable.c (expand_function: `shell'): Use
+       `shell_function_completed'.  Block children before forking and
+       unblock after `shell_function_pid' is set properly and
+       `shell_functon_completed' is reset to 0.
+
+       * commands.c (child_handler): When the child of the `shell' function
+       completes, set `shell_function_completed' to 1 if it actually ran,
+       or -1 if it didn't (due to fork or exec failure).
+
+       * commands.c (block_children, unblock_children): New functions to
+       block and unblock the child termination signal.
+       (wait_for_children): Use block_children and unblock_children.
+       (execute_file_commands): Block children around the critical section
+       wherein a new child is put on the chain.
+
+       * make.c (main): Change the environment to contain the correct
+       MAKELEVEL before re-execing.
+
+Sat Feb  4 18:28:48 1989  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.34.
+
+Fri Feb  3 16:36:49 1989  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * rule.c (default_variables): Fixed $(LINK.c).
+
+Wed Feb  1 18:05:07 1989  Roland McGrath  (mcgrath at pepper.Berkeley.EDU)
+
+       * Version 3.33.
+
+       * version.c: Removed copyright notice, since this is a one-line file.
+
+       * commands.c (error_status): Made it return BUF, rather than running
+       off the end (this apparently worked on Sun 3s for some reason).
+
+       * ar.c, commands.c, dep.h, load.c, make.c, make.h, read.c, remake.c,
+       rule.c, variable.c, Makefile: Changed copyrght notices to cover 1989.
+
+Mon Jan 30 15:51:28 1989  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.32.
+
+Fri Jan 27 20:09:24 1989  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * remake.c (remake_file): Don't touch phony targets.
+
+       * rule.c (convert_to_pattern): Fixed an incorrect length passed to
+       savestring.
+
+       * variable.c (expand_function: `shell'): Close the read side of the
+       pipe on the parent side of the fork.
+
+       * commands.c (start_job): On the child of the fork, close the
+       BAD_STDIN fd if we're not using it.
+
+       * read.c (record_files): A file beginning with a dot can be a
+       default target if it also contains a slash (as in `../foo').
+
+       * commands.c (wait_for_children): For BSD, block SIGCHLD rather than
+       ignoring it to avoid a race condition when child_handler is returning.
+
+       * commands.c (child_handler): Do blocking waits.
+       (error_status): Return a string describing exit status.  (Split out
+       of child_handler).
+
+       * read.c (multi_glob): Change VECTOR to VEC for Alliant.
+
+Thu Jan  5 00:06:51 1989  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.31.
+
+       * make.texinfo (Features): Noted $(foo:PAT=SUB) from SunOS 4.0.
+
+       * make.texinfo (Options/Recursion): -d and -p go in the environment.
+
+       * load.c: Include "commands.h".
+
+Wed Jan  4 17:49:25 1989  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * make.c (switches): -d and -p can come from the environment and are
+       put into it.
+
+       * read.c (record_files): Fixed the checking for duplicate deps so it
+       doesn't clobber the first one.
+
+       * make.texinfo: Documented default implicit rule changes.
+
+       * rule.c: Revamped default suffix rules.  They now use Sun's style
+       of using variables `COMPILE.c', `LINK.c', etc. for each suffix, and
+       use `TARGET_ARCH' and `TARGET_MACH' variable where appropriate.
+       Also support Modula-2 compilation (suffixes .sym, .def, and .mod).
+       Ratfor Yacc support is gone, since nobody has yacc -r.
+       All EFL support is gone, since nobody uses EFL.
+
+       * ar.c, arscan.c: Don't assume `long int' and `int' are the same.
+
+       * commands.c [USG]: Fixed wait status bit encoding.
+       [USG and not USGr3] (dup2): Define this for SysVr2.
+
+       * make.h, dep.h, make.c [iAPX286]: Make allowances for this
+       brain-damaged compiler.
+
+       * make.texinfo (Variables: Flavors): Fixed a typo.
+
+Tue Jan  3 18:09:31 1989  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * ar.c (ar_member_date, ar_touch): Truncate member names to 15 chars.
+
+       * Version 3.30.
+
+       * commands.c [SYS_WAIT]: If this is defined, use BSD <sys/wait.h>
+       and wait3 even if USG.
+
+       * read.c (record_files): Defining .DEFAULT with no deps or commands
+       clears its commands.
+
+       * rule.c (default_suffixes): Added `.sh'.
+       (default_suffix_rules): Added single-suffix .sh rule, copies source
+       to target and makes target executable.
+       make.texinfo (Catalogue of Rules): Documented .sh rule and its use
+       in conjunction with SCCS.
+
+       * rule.c (set_default_suffixes): Define variable `SUFFIXES' to the
+       default list ("" under -r).
+       make.texinfo (Suffix Rules): Document `SUFFIXES' variable.
+
+       * rule.c (default_variables), make.texinfo (Implicit Variables):
+       Variable AR defaults to `ar', ARFLAGS to `rv', and RM to `rm -f'.
+
+       * rule.c (install_default_pattern_rules): Default variables are made
+       recursive.
+       (default_variables): Added "CPP", defined to "$(CC) -E".
+       (default_suffixes): Added `.S', before `.s'.
+       (default_suffix_rules): New rule for .S to .s, runs CPP.
+       All rules that use CPP now include "$(CPPFLAGS)".
+       make.texinfo (Catalogue of Implicit Rules, Implicit Variables):
+       Documented above changes.
+
+       * commands.c [USG] (sys_siglist): Don't define.
+       [USG] (init_siglist): New function to initialize sys_siglist.
+
+       * make.texinfo (Variables: Reference): Documented `$(foo:PAT=SUB)'
+       references.
+
+       * variable.c (variable_expand): A reference `$(foo:PAT=SUB)' is
+       equivalent to `$(patsubst PAT,SUB,$(foo))'.
+
+       * variable.c (variable_expand): Free the storage for the expansion
+       of a recursive variable when it is nod longer needed.
+
+       * variable.c (variable_expand): When checking for `$($(foo))', use
+       lindex so as not to search for the second `$' outside the parens.
+
+       * make.c (struct stringlist, main, decode_switches): Changed `index'
+       member to `idx'.
+
+Sat Dec 24 16:02:32 1988  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c (wait_for_children [USG]): Handle SIGCLD with SIG_DFL,
+       rather than SIG_IGN.  Ignoring SIGCLD reportedly makes wait return -1.
+
+       * arscan.c [USGr3]: Define PORTAR to 1 (as with sun386).
+       (ar_scan [USGr3]): Remove trailing slashes from member names.
+
+Thu Dec 22 17:54:05 1988  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * make.texinfo (Makefiles: Overriding Makefiles): New node
+       documenting use of .DEFAULT to have one makefile defer unmakeable
+       targets to another.
+
+       * make.texinfo (Implicit: Using Implicit, Implicit: Last Resort):
+       Mention empty commands and xref node `Empty Commands'.
+
+Wed Dec 21 20:12:40 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Version 3.29.
+
+       * make.c (struct command_switch, command_switches, et al): New
+       member `noarg_value', if not nil, ptr to value to use if no arg is
+       given to a switch that would otherwise require one.  The -j option
+       can now be given w/o an arg, to mean infinite jobs.
+       * commands.c: If job_slots is zero, infinite jobs.
+
+       * read.c (read_all_makefiles, read_makefile): Make makefiles precious.
+
+       * make.c (decode_switches): For a positive_int or floating option,
+       if we moved to the next argument word, but found no argument for the
+       option, move back to the correct word.
+
+       * make.c (decode_switches): If we got any unknown options, die after
+       processing all arguments.
+
+       * GNUmakefile: Moved `include depend' to the end, so the default
+       goal will be set before then.
+
+       * load.c (wait_to_start_job [Unix, UMAX]): Merged into one version
+       under #ifdef LDAV_BASED.  Only loop while we have jobs running.
+       Sleep for increasing amounts (increase one second per iteration)
+       before checking the load average (after the first check).
+       Get the load average from function load_average.
+       (wait_to_start_job [not LDAV_BASED]): Always return.
+       (load_average [UMAX]): Fetch load average for Encore UMAX.
+       (load_average [not NO_LDAV]): Fetch load average from /dev/kmem.
+       [not NO_LDAV]: Define LDAV_BASED.
+
+Tue Dec 20 18:54:50 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Version 3.28.
+
+       * commands.c (wait_for_children): Take second arg, ERROR.  If
+       nonzero, and there are children, print a message on stderr.
+       (execute_file_commands, fatal_error_signal): Pass second arg.
+       * make.c (die), remake.c (update_goal_chain), variable.c
+       (expand_function: `shell'): Ditto.
+
+Sat Dec 17 01:05:38 1988  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * commands.c (start_job): Call wait_to_start_job before forking.
+
+       * load.c (load_average): Converted to wait_to_start_job.
+
+       * remote.c: New file for remote execution functions.
+       (start_remote_job_p): Return nonzero if the next job should be run
+       remotely.
+       (start_remote_job): Start a remote job and return an ID for it.
+       (remote_status): Get status of dead remote children.
+
+Fri Dec 16 16:51:07 1988  Roland McGrath  (mcgrath at hecuba.Berkeley.EDU)
+
+       * commands.c (start_job): If start_remote_job_p () returns nonzero,
+       call start_remote_job to start the job rather than fork and exec.
+       (child_handler):
+
+       * commands.c (execute_file_commands): Moved load average checking to
+       start_job.
+
+       * commands.c (child_handler: USG): Record the pid wait returns.
+
+       * load.c (UMAX): Added some #include's needed for UMAX.
+
+       * read.c (multi_glob), variable.c (string_glob): Ignore a (char **)
+       -1 return from glob_filename.
+
+       * variable.c (variable_expand): Make sure we don't increment past
+       the end of the string we were passed.
+
+       * variable.c (variable_expand): Terminate the expansion.
+
+       * file.c (rename_file): If there is already a file under the new
+       name, set its contents equal to FILE's (ick).
+
+       * variable.c (define_automatic_variables): Pass all the args to
+       define_variable when defining MAKELEVEL!
+
+       * commands.c (execute_file_commands): If max_load_average > 0, and
+       we have children running, don't start up another child until the
+       load average goes below max_load_average.
+
+       * make.c: New variable `max_load_average'.
+       (struct command_switch, decode_switches, decode_env_switches):
+       Handle floating-point (double) args.
+       (command_switches): Added `-l' switch to set `max_load_average'.
+
+       * load.c (load_average): New file and function to return a double
+       that is the current load average (1.00 scale).
+       * GNUmakefile, oldMakefile: Pass flags in $(LOAD_AVG) for load.c.
+
+Thu Dec 15 15:22:08 1988  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Makefile: Renamed to oldMakefile.
+       * GNUmakefile: Make Makefile from oldMakefile and depend.
+
+       * read.c (read_all_makefiles): When putting the default makefiles in
+       the read_makefiles chain so they will be remade, put them in the
+       right order.
+
+       * remake.c (update_goal_chain): If MAKEFILES is nonzero, always make
+       in serial, and return as soon as one goal whose `changed' member is
+       nonzero  is successfully remade.
+
+       * commands.c: Don't include <sys/fcntl.h>.
+
+       * commands.c (construct_command_argv): Added ` to sh_chars.
+
+       * make.h: Don't declare construct_makeflags.
+
+       * make.c (main): Set up MAKEFLAGS and MFLAGS and make an environment
+       both before and after reading the makefiles, so the makefiles can
+       use them and possible change them, and later children will get the
+       right information.
+       (construct_makeflags): Replaced with define_makeflags (static void),
+       which defines the two variables.
+       * variable.c (define_automatic_variables): Don't define MAKEFLAGS
+       and MFLAGS.
+
+Mon Dec 12 14:40:31 1988  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * Version 3.27.
+
+       * commands.c (child_handler): Reset the handler to ourselves when
+       called for USG, since it has no safe signals.
+
+       * commands.c: For USG, use an int rather than a `union wait' for
+       wait calls, and dissect it with bitmasks.
+       (child_handler): No wait3 system call in USG.  Since we can't
+       protect from hanging, always return immediately if we have no
+       children we know about and we're not running a `shell' function.
+       (There is still the danger of hanging waiting for a child that died
+       without our being notified.)
+
+       * remake.c: Include <fcntl.h> instead of <sys/file.h>.  What we need
+       is really in <fcntl.h>, and while BSD <sys/file.h> includes
+       <fcntl.h>, USG doesn't.
+
+       * make.c (main): Figure out the program name before doing anything
+       which might need it (in a call to error or fatal).
+
+       * dir.c, glob.c: Use `struct dirent' and <dirent.h> for USGr3.
+
+       * arscan.c (ar_scan): Added missing & before buf (which is an int)
+       if SARMAG is not defined (SysV).
+
+Fri Dec  9 18:44:13 1988  Roland McGrath  (mcgrath at pepper.Berkeley.EDU)
+
+       * Version 3.26.
+
+       * dir.c (find_directory, dir_file_exists_p): Keep track of how many
+       directories we have open and don't let it be more than
+       MAX_OPEN_DIRECTORIES (currently 10).
+
+       * variable.c (expand_function: `foreach'): Use expand_argument
+       rather than variable_expand so each repetition doesn't clobber the
+       last!!!
+
+Mon Dec  5 15:58:46 1988  Roland McGrath  (mcgrath at hecuba.Berkeley.EDU)
+
+       * Version 3.25.
+
+       * Makefile: Define `install' target.
+
+       * GNUmakefile: Don't include GNUmakefile or depend in the
+       distribution file.
+
+Wed Nov 30 15:53:42 1988  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * commands.c (execute_file_commands): Don't clobber a null into
+       random storage if there were no $^ and/or $? words.
+
+       * remake.c (check_dep): Set *MUST_MAKE_PTR nonzero if a dependency
+       doesn't exist.
+
+       * ar.c (ar_member_date, ar_touch): Make sure the modtime of the
+       archive file itself is known before we fetch or change the modtime
+       of one of its members.
+
+       * read.c (read_makefile): Expand variable and function references
+       before parsing rules so variable can contain special characters
+       (colons and semicolons).
+
+Sat Nov 26 11:36:31 1988  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * variable.c (expand_function: `filter', `filter-out'): Fixed so
+       that filter-out works right.
+
+       * variable.c (expand_function: `filter', `filter-out'): Made these
+       functions use each word of their first argument as a pattern.
+
+Fri Nov 25 10:51:47 1988  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.24.
+
+       * read.c (record_files): If a target is listed more than once in a
+       single rule (that defines commands), give a warning message rather
+       than the counter-intuitive message saying commands were already
+       defined (in the same place).
+
+       * make.c (fatal, error): Made them both take 6 args since there is
+       at least one error message that need that many.  Too bad vfprintf is
+       not universal!
+
+       * Version 3.23.
+
+       * read.c (read_makefile): Moved the construction of the `struct
+       commands' into record_files.  Call record_files before recursing for an
+       included makefile so the higher-up will determine the default goal.
+       (record_files): Take arguments COMMANDS, COMMANDS_IDX and
+       COMMANDS_STARTED and construct a `struct commands.
+
+Thu Nov 24 14:36:33 1988  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.22.
+
+       * make.c (main): Made it a fatal error if we can't move back to the
+       directory we started in before re-execing.
+
+       * make.c (main): Get the current directory before doing anything
+       else, so we know it even if we don't need it for the value of
+       `MAKE', since we might want it when re-execing.
+
+Wed Nov 23 13:34:44 1988  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.21.
+
+       * read.c (record_files): Eliminate duplicate deps in a chain.
+
+       * variable.c (expand_function: `sort'): Pass the right number to
+       qsort, not one less.
+
+       * remake.c (remake_file): Always call notice_finished_file if
+       FILE->command_state == cs_finished.
+
+       * commands.c (execute_file_commands): Call notice_finished_file to
+       set FILE's status correctly when start_job fails (because it's out
+       of commands or running under -n).
+
+Fri Nov 18 15:31:12 1988  Roland McGrath  (mcgrath at saffron.Berkeley.EDU)
+
+       * Version 3.20.
+
+       * remake.c (update_file_1): Set the `update_status' of FILE to
+       nonzero and set FILE's `updated' bit if we have decided to give up
+       on remaking FILE because of errors in the dependencies.
+
+       * rule.c (pattern_search): Debugging messages use `dependency' (vs.
+       `dependent') properly.
+
+       * make.texinfo (Conditionals: Conditional Syntax): Function index
+       entries for `ifndef' and `ifneq'.
+
+       * variable.c (define_automatic_variables): Define `MAKELEVEL' to the
+       decimal number of the makelevel, since it may be malformed or blank.
+
+       * remake.c (remake_file): Call notice_finished_file after touching.
+
+Sat Nov 12 19:29:34 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Version 3.19.
+
+       * GNUmakefile (dist): Pass the `-f' flag to compress.
+
+       * vpath.c (build_vpath_lists): Check for VPATHS being nil after
+       constructing the general VPATH list from the `VPATH' variable.
+
+Fri Nov 11 08:02:26 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.c (fatal, error): Made error messages for recursive runs be
+       shorter.
+
+Thu Nov 10 16:51:36 1988  Roland McGrath  (mcgrath at basil.Berkeley.EDU)
+
+       * Version 3.18.
+
+       * read.c (read_makefile): Made it eat leading spaces and formfeeds
+       (but not tabs), like it's documented to.
+
+       * read.c (read_makefile): Let included makefiles determine the
+       default goal, as is done by System V Make.
+
+Tue Nov  1 19:03:08 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * variable.c (new_environ): Don't increment VCNT when a variable is
+       rejected.
+
+Fri Oct 28 16:54:15 1988  Roland McGrath  (mcgrath at basil.Berkeley.EDU)
+
+       * Version 3.17.
+
+       * rule.c (convert_to_pattern): Don't use the same storage for a name
+       in two rules since new_pattern_rule may free this storage when a
+       rule is discarded.
+
+       * rule.c (new_pattern_rule): Undid useless change I made Oct 25.
+
+Thu Oct 27 19:17:53 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Version 3.16.
+
+       * GNUmakefile, Makefile: Fixed a typo in a comment.
+       * Makefile: Removed malloc.o from object file list.
+
+       * variable.c: Removed old debugging #define's for xmalloc and
+       xrealloc so non-ANSI cpp's won't barf.
+
+       * make.c (main): Made local array for temp file name static so
+       compilers that don't do auto aggregate initialization won't barf.
+
+       * read.c: Removed static declaration of copy_dep_chain since it is
+       no longer static.
+
+Tue Oct 25 16:59:30 1988  Roland McGrath  (mcgrath at pepper.Berkeley.EDU)
+
+       * rule.c (new_pattern_rule): If we threw out the new rule because it
+       matched an old one and OVERRIDE was zero, don't put the freed
+       pointer in the chain!
+
+Wed Oct 19 15:07:43 1988  Roland McGrath  (mcgrath at pepper.Berkeley.EDU)
+
+       * Version 3.15.
+
+       * variable.c (expand_function: `sort'): Don't do the sorting and
+       writing out if there were no words in the first place.
+
+       * remake.c (remake_file): Only fail with a "no way to make" message
+       for a dependency (non-target) file.  If we don't know how to remake
+       a target file, pretend it was successfully remade and is very new.
+
+       * remake.c (remake_file): Don't increment `files_remade' for a
+       non-target file we don't know how to remake.
+
+       * read.c (record_files): Don't die with "both : and :: entries" for
+       a file whose `is_target' flag is not set.
+
+Tue Oct 18 17:24:11 1988  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * variable.c (expand_function: `patsubst', `subst'): Free the right
+       things!
+
+       * variable.c (expand_function: `subst'): Don't clobber the
+       pointer to the end of the second arg and then try to use it!!!
+
+Mon Oct 17 16:44:45 1988  Roland McGrath  (mcgrath at catnip.Berkeley.EDU)
+
+       * variable.c (expand_function: `patsubst'): Don't clobber the
+       pointer to the end of the second arg and then try to use it!!!
+
+       * variable.c (expand_function: `word' function): Made it parse its
+       second argument correctly.
+
+       * ar.c (ar_touch): Return 1 rather than -1 for on errors.
+
+Sat Oct 15 15:12:16 1988  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.14.
+
+       * GNUmakefile: Removed explicit rule for make.dvi since the built-in
+       implicit rule now works.
+
+       * rule.c (default_suffix_rules): Fixed .texinfo.dvi rule yet again
+       so that it really works, now that parens are counted.
+
+       * remake.c (update_file_1): Set FILE's `updated' flag after calling
+       remake_file if it failed or finished immediately.
+
+       * remake.c (update_file): Use the `updated' flag rather than the
+       command state to decide if a file was fully considered, and
+       therefore might give an "up to date" message.
+
+       * variable.c (expand_function): Made all functions that take more
+       than one argument count parens of the appropriate flavor in their
+       args and ignore commands nested in parens.
+
+Fri Oct 14 18:35:00 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * read.c (read_all_makefiles): Pass second arg to read_makefile for
+       default makefiles.
+
+Thu Oct 13 16:40:08 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Version 3.13.
+
+       * GNUmakefile: Added an explicit rule for make.dvi since the
+       built-in .texinfo.dvi implicit rule is screwed up.
+
+       * rule.c (default_suffix_rules): Added a comment that the
+       .texinfo.dvi rule does not work because of an ahem, feature of Make
+       that at some point will be fixed--er, enhanced to alleviate this
+       difficulty.
+
+       * rule.c (default_suffix_rules): Fixed Texinfo -> DVI rule (again).
+
+       * make.texinfo (Commands: Execution): Documented new competing for
+       standard input among children.
+
+       * commands.c (struct child): Added `good_stdin' flag to tell if this
+       child has the stdin that doesn't point into nirvana.
+       (good_stdin_used): New variable to tell if any child has the good
+       standard input.
+       (child_handler): Reset `good_stdin_used' if a dead child's
+       `good_stdin' flag is set.
+       (start_job): Give the new child the good standard input if
+       `good_stdin_used' is no set, and set the child's `good_stdin' flag
+       appropriately.
+
+       * rule.c (default_suffix_rules): Changed Texinfo -> DVI rule to work
+       better (I hope).
+
+       * read.c (read_all_makefiles): Stop reading default makefiles after
+       one is found.
+
+       * read.c (read_makefile): Reset `reading_filename' and
+       `reading_lineno_ptr' after recursing for an included makefile.
+
+       * GNUmakefile: New GNU Make-specific makefile that does everything
+       Makefile does plus distribution stuff, and doesn't contain any hacks
+       to try to work with Unix make.
+
+       * Makefile: Removed distribution stuff.
+
+       * make.c (main): Use mktemp to construct the names of temporary
+       files used for standard input makefiles.
+
+       * make.c (main): Don't turn standard input into a broken pipe.
+
+       * commands.c (start_job): Keep two extra file descriptors around: a
+       good standard input, and a bad one that reads from a broken pipe.
+       On the child side of the fork, if there are other children, give
+       this one the broken pipe so they won't compete; if this is the only
+       one, give it the good standard input.
+
+       * make.h: Declare notice_finished_file.
+
+       * commands.c (execute_file_commands): Use noticed_finished_file
+       after waiting for the child when there is only one job slot.
+
+       * remake.c (notice_finished_file): New function to re-check mtime's
+       and such things to be done when commands finish.
+       (update_file_1): Use notice_finished_file.
+
+       * commands.c (child_handler, execute_file_commands): Use new
+       variable `job_slots_used' to record the number of jobs currently
+       running, rather than diddling with `job_slots'.
+       (execute_file_commands): Increment `job_slots_used' before calling
+       start_job and decrement it on failure to avoid race condition.
+       If there is only one job slot, wait for the child to finish and
+       return its status so commands are run in linear order, as if there
+       were no parallelism.
+
+Wed Oct 12 15:59:03 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * remake.c (remake_file): Don't print a "No way to make" message for
+       targets whose `dontcare' flags are set.
+
+       * read.c (read_all_makefiles): Set the `dontcare' flag of the
+       `struct file' each default makefile added to the chain.
+
+       * file.h (struct file): Add `dontcare' member.
+
+       * read.c (read_all_makefiles): When no default makefiles are found,
+       put the names of all those tried in the `read_makefiles' chain so
+       they will be updated if possible, giving their `struct dep's'
+       `changed' members the value of 0 so we won't care if they cannot be
+       found or remade.
+
+       * make.texinfo (Makefiles: Remaking Makefiles): Documented that
+       default makefiles will be remade if not found.
+
+       * read.c (read_all_makefiles): If no default makefiles can be found,
+       go through the list of default names, trying to make one, stopping
+       if one is made.
+
+       * remake.c (remake_file): Set STATUS to 0 after successfully touching.
+
+       * dir.c (file_impossible, file_impossible_p): Don't clobber FILENAME
+       to "" and then try to to a strcmp on it!!!
+
+Mon Oct 10 16:09:18 1988  Roland McGrath  (mcgrath at cinnamon.Berkeley.EDU)
+
+       * make.c (main): Don't do `dir_load (".")'.
+
+       * rule.c (count_implicit_rule_limits), vpath.c
+       (construct_vpath_list): Test the existence of a given directory by
+       `dir_file_exists_p (DIR, ".")' and assume that if this returns zero,
+       it means the directory really does not exist.
+
+       * dir.c (struct dirdata): Replaced with `struct directory' for
+       directories, each containing a chain of `struct dirfiles', one for
+       each file (real or impossible).
+       (dir_load): Removed.
+       (find_directory): New function to find the `struct directory' for a
+       named directory and return it (possibly creating a new one).
+       (dir_file_exists_p): Read the directory on the fly if its stream is
+       still valid (and ever was) if the file we're looking for is not
+       already in the hash tables.
+       (file_impossible, file_impossible_p, dir_name, print_dir_data_base):
+       Use the new directory/file scheme.
+
+       * make.texinfo: Miscellaneous editorial changes and clarifiactions.
+
+       * commands.c (struct child): Remove `environ' member.
+       (child_handler, start_job, execute_file_commands): Remove use of
+       `environ' member and new_environ.
+
+       * make.c (main): Call new_environ after reading makefiles.
+
+       * variable.h: Declare `new_environ' to return void.
+
+       * variable.c (new_environ): Put the environment in `environ' and
+       return void.
+
+Fri Oct  7 15:48:39 1988  Roland McGrath  (mcgrath at pepper.Berkeley.EDU)
+
+       * Version 3.12.
+
+       * Makefile: Don't make the uncompressed tar file.
+
+       * variable.c (expand_function: `shell' function): Made it not expect
+       read to null-terminate the buffer.
+
+       * Makefile: Made it use a temporary symlink to . rather than a
+       temporary directory to make the distribution tar file.
+
+Thu Oct  6 17:52:35 1988  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.11.
+
+       * make.texinfo: Fixed a line that got garbaged somehow.
+
+Mon Oct  3 16:14:39 1988  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * make.c (main): Try to move back to the directory we started in
+       before re-exec ourself.
+
+       * remake.c (update_file_1): A double-colon target with no deps
+       always needs to be remade.
+
+       * remake.c (remake_file): Changed "No way to make" message to say
+       `target' rather than `file'.
+
+Sun Oct  2 12:50:47 1988  Roland McGrath  (mcgrath at catnip.Berkeley.EDU)
+
+       * remake.c (update_file_1): Set FILE->update_status to the return
+       value of remake_file.
+
+       * rule.c (convert_to_pattern): Fixed swapped lengths passed to
+       xmalloc for source/target suffixes.
+
+       * make.texinfo: Documented that MAKEFLAGS and MFLAGS are read in
+       from makefiles.  Updated the `Features' section a bit.
+
+       * make.c (main): Read switches from MAKEFLAGS and MFLAGS variables
+       after reading in makefiles.
+
+       * make.c (main): Put a line "/tmp/foo:;" rather than ".PHONY:
+       /tmp/foo" in front of temp files made for stdin makefiles.
+
+       * remake.c (update_file): Test the state of the right `struct file'
+       for double-colon files.
+
+       * make.c (main): Put a ".PHONY: /tmp/foo" line in front of temp
+       files made for stdin makefiles so they won't be remade when we
+       re-exec.  Kludge-o-matic!!
+
+       * remake.c (update_goal_chain): Judge files as being finished based
+       on their `updated' flag, not their state.
+
+       * read.c (read_makefile): Don't check for FILENAME being "-".
+       (read_all_makefiles): Set each element of MAKEFILES to the name put
+       in READ_MAKEFILES by read_makefile, since read_makefile may free the
+       storage for the name it is passed, and someone might want to look at
+       the elements of MAKEFILES again.
+
+       * make.c (main): For each `-f' flag with arg `-' (standard input),
+       read standard input into a temp file and pass the temp file's name
+       to read_all_makefiles, after making sure it will not be remade.
+
+       * make.c (construct_makeflags): Always put out `-j1'.
+
+Sat Oct  1 00:19:59 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * commands.c (execute_file_commands): If commands are nothing but
+       whitespace, set the state to `cs_finished' before returning 0.
+
+       * make.c (decode_switches): Allocate space for args in stringlists
+       so they can be freed later.
+
+       * make.h: Declare `makelevel'.
+
+       * variable.c (makelevel): Moved to make.c (and made global).
+
+       * make.c (fatal, error): Print the makelevel if it's > 0.
+       (perror_with_name): Use error rather than calling fprintf directly.
+       (pfatal_with_name): Use fatal rather than fprintf and die.
+
+       * variable.c (new_environ): Don't put default variables (origin
+       `o_default') into the environment; they just take up space.
+
+       * read.c (read_makefile): Don't add FILENAME to the chain of read
+       makefiles if it's "-" (standard input).
+
+       * remake.c (update_goal_chain): Set STATUS correctly when nothing
+       happens (as well as in all other situations).
+
+       * make.c (construct_makeflags): Put a `-' before each switch and
+       spaces between them.
+
+       * Version 3.10.
+
+       * commands.c (wait_for_children): Don't check if `children' is nil.
+       This is the case when waiting for the child of a `shell' function.
+
+       * dir.c (dir_load): Don't add a hash-table entry for directory
+       DIRNAME and filename "" if DIRNAME doesn't exist.
+
+       * commands.c (execute_file_commands): Return 0 after start_job
+       returns 1 (failure) under the -n flag.
+
+       * remake.c (remake_file): Set the state to `cs_finished' when not
+       calling execute_file_commands.
+
+       * remake.c (update_goal_chain): Second arg is now MAKEFILES, nonzero
+       meaning to disable -t, -q, and -n for each target unless the target
+       was also given on the command-line.
+
+       * read.c (read_makefile): Enter the `struct file's for the makefiles
+       added to the `read_makefiles' `struct dep' chain.
+
+       * remake.c (update_goal_chain): Made it not enter the files for the
+       goals in the chain.  It will already have been done.
+
+       * rule.c (convert_to_pattern): Null-terminate the names of targets
+       and deps of the pattern rules properly.
+
+Fri Sep 30 18:56:20 1988  Roland McGrath  (mcgrath at nutmeg.Berkeley.EDU)
+
+       * make.c (main): Call install_default_pattern_rules.
+
+       * make.h: Declare copy_dep_chain.
+
+       * read.c (copy_dep_chain): Moved to make.c (and made global).
+
+       * make.c (main): Call update_goal_chain to update goals.
+       Update read makefiles and re-exec self if they change.
+
+       * remake.c (update_file): Make this function static.
+       (update_goal_chain): New function to update a `struct dep' chain of
+       goals, waiting until they are all finished before returning.
+
+       * make.h: Don't declare update_file.  Declare update_goal_chain.
+
+       * make.c (main): Call snap_deps, etc. that were in read_all_makefiles.
+
+       * read.c (find_makefile): Removed this function.
+       (read_all_makefiles): Don't update makefiles, don't diddle with
+       pattern rules, don't call snap_deps, etc.  Return a `struct dep'
+       chain of all makefiles read.
+       (read_makefile): Now takes two args: FILENAME and TYPE, which is 0
+       for a normal makefile, 1 for MAKEFILES variable or 2 for an included
+       makefile.  Add a `struct dep' containing the name of the makefile
+       (as it was found in the search path for type 2s), and TYPE in the
+       `changed' member to the global `read_makefiles' chain.
+
+       * make.h, rule.c (displace_pattern_rules,
+       add_displaced_pattern_rules): Removed these functions.
+
+       * read.c (read_makefile): Variable-expand the name of an `include'd
+       makefile before calling find_makefile on it.
+
+       * file.c (snap_deps): If the `struct file' for a `struct dep'
+       already exists, free the `struct dep's `name' member before setting
+       it to nil (since this info is in the `struct file').
+
+       * read.c (copy_dep_chain): Made it copy each name rather than
+       leaving multiple `struct dep's with the same pointers.
+
+Thu Sep 29 19:08:13 1988  Roland McGrath  (mcgrath at catnip.Berkeley.EDU)
+
+       * make.c (decode_switches): Fixed second decode_env_switches call to
+       use correct length of "MFLAGS" (6, not 5).
+
+       * read.c (read_makefile): Don't stop reading when readline returns
+       zero lines read.  Only stop when the stream reaches EOF.  This makes
+       it recognize the last line of a makefile without a newline.
+
+       * remake.c (remake_file): If we don't know how to make FILE, set its
+       command state to `cs_finished'.
+
+       * remake.c (update_file): Don't write the "up to date" message if
+       update_file_1 returned a nonzero status.
+
+Wed Sep 28 16:30:07 1988  Roland McGrath  (mcgrath at catnip.Berkeley.EDU)
+
+       * commands.c (child_handler): Set the `update_status' member
+       properly for ignored errors.
+
+       * rule.c (convert_to_pattern): Made it not care about if the target
+       suffix comes before the source suffix in the .SUFFIXES list.
+
+       * make.texinfo: Misc editorial changes.
+
+       * commands.c (wait_for_children): Return immediately if `children'
+       is nil (there are no children).
+
+Tue Sep 27 15:33:14 1988  Roland McGrath  (mcgrath at pepper.Berkeley.EDU)
+
+       * Version 3.09.
+
+       * commands.c (struct child): New member `command_ptr' to hold the
+       current position in the commands.  The `commands' member is never
+       changed.
+       (start_job, child_handler, execute_file_commands): Use new method
+       for `commands' and `command_ptr' members.
+
+       * make.c (decode_env_switches): Skip past an invalid letter (instead
+       of looping forever).
+
+       * commands.c (struct child): Add `environ' member to hold the
+       environment for this child.
+       (execute_file_commands): Get a new environment from new_environ and
+       put in the the new `struct child's `environ' member.
+       (child_handler): When freeing a child, free its `commands' member, the
+       elements of its `environ' array and its `environ' member itself.
+       (start_job): Set `environ' to the child's `environ' member before
+       exec'ing the command.
+
+       * variable.h, variable.c (new_environ): Made it return the new
+       environment, not putting it in `environ'.
+
+       * remake.c (update_file): Don't give a "is up to date" message
+       unless no files were remade and the state went from `cs_not_started'
+       to `cs_finished', so repeat calls to finish jobs won't get the message.
+
+Mon Sep 26 16:26:08 1988  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * Version 3.08.
+
+       * make.texinfo (Commands: Execution): Documented that children will
+       be waited for rather than killed.
+
+       * commands.c (fatal_error_signal): Wait for children.
+       (kill_children): Removed this function.
+
+       * make.c (main, die): Wait for children to die, don't kill them.
+
+       * variable.c (expand_function): Use wait_for_children.
+
+       * make.c (main): Use wait_for_children rather than child_handler.
+
+       * commands.c (wait_for_children): New function to block waiting for
+       children, insuring that child_handler is not called recursively.
+       (execute_file_commands, kill_children): Use wait_for_children.
+
+       * commands.c (child_handler): Start up additional commands in a
+       sequence after an ignored error.
+
+       * remake.c (update_file): Don't print "`foo' is up to date" messages
+       when update_file_1 returns while commands are executing.
+
+       * remake.c (update_file_1): Pass the file name to name_mtime, not
+       the bloody `struct file', dammit!!
+
+       * commands.c (child_handler): Print out the "*** ..." error message
+       when not under -i.  (I somehow forgot this.)
+
+       * remake.c (update_file_1): Use name_mtime rather than file_mtime to
+       re-get the mtime of a file whose commands have finished.
+
+       * make.c (command_switches, decode_switches, decode_env_switches):
+       Make all switches that take string args allow them right after the
+       switch letter.
+
+       * commands.c (child_handler): Check for a child being the `shell'
+       function's command returning and set the global variable for
+       expand_function to check.
+
+       * variable.c (expand_function): For the `shell' function, instead of
+       waiting for the child shell ourselves, let child_handler do it and
+       loop around waiting for something to happen.
+
+       * make.c (print_version): Made the copyright year static, not dynamic.
+
+       * make.h, make.c: Remove construct_argv function.
+
+       * make.c (main): Say "no goal target" instead of "no target".
+
+       * make.texinfo (Commands: Parallel): Don't send SIGKILL.
+
+       * commands.c (kill_children): Don't send SIGKILL to children that
+       aren't killed by the first signal.
+
+       * make.c (main), commands.c (kill_children): Decide between SIGCHLD
+       and SIGCLD based on whether or not SIGCHLD is defined, not on USG.
+
+       * Makefile: Link make with $(LOADLIBES).
+
+       * read.c (construct_include_path): Fixed another bad xrealloc call.
+
+       * make.c (decode_switches): Fixed an xrealloc call with no first arg.
+
+Sat Sep 24 01:16:21 1988  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * Version 3.07.
+
+       * remake.c (update_file_1): If deps are running, set state to
+       `cs_deps_running' and return 0.  If deps are done, run commands.
+
+       * commands.c (child_handler): Made it delete non-precious targets
+       killed by fatal signals.
+
+       * make.texinfo: Documented parallelism.
+
+Fri Sep 23 16:52:27 1988  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * remake.c (update_file_1): Don't return if FILE's state is
+       `cs_deps_running'.  In that case, we need to run through and check
+       the states of all our dependencies.
+
+       * commands.c (execute_file_commands): Decrement `job_slots' after
+       starting a new job to run file commands.
+
+       * commands.c (start_job): Made it set the state to `cs_running'.
+
+       * make.c (main): Fixed usage of `g', `lastgoal', and `goals' in the
+       goal-making loop.
+
+       * commands.c (child_handler): When commands finish, set the
+       corresponding file's `update_status' and `updated' flags as
+       appropriate, and reset the modtimes of the file and any `also_make'
+       files it has.
+
+       * remake.c (remake_file): Don't re-set `last_mtime' and set `updated'.
+
+       * commands.c (fatal_error_signal): Don't swallow all the children
+       with a loop around `wait ((union wait *) 0)'!!!
+
+       * make.c (struct command_switch): Added `positive_int' type.
+       (switches): Added -j (job_slots).
+       (construct_makeflags, decode_switches, decode_env_switches):
+       Handle`positive_int'-type switches.
+
+       * glob.c (glob_vector): Rename local variable `vector' to `VeCtOr'.
+       This is said to avoid a conflict with some system's global `vector'
+       variable.
+
+       * variable.c (expand_function): Made the `shell' function use
+       construct_command_argv and do its own child control and piping.
+
+       * make.c (main): Turn standard input into a broken pipe after
+       reading in all makefiles (the last time it will be needed).
+
+       * commands.c (struct child): Remove `pipe_fd' member.  We don't use
+       pipes any more.
+       (start_job): Return 0 for success, 1 or failure (rather than void).
+       Don't use pipes.  Don't turn the child's stdin into a broken pipe.
+       (child_handler): Print "*** Error" messages when necessary.
+       Die on failed commands when -k was not given.
+       (execute_file_commands): Check the return of start_job and remove
+       the child from the chain and return failure if it is nonzero.
+
+       * make.c (die): New function to clean up and exit.
+       (fatal, pfatal_with_name): Use die.
+
+Thu Sep 22 14:27:11 1988  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * commands.c (struct child): Added `commands', `pipe_fd', and
+       `noerror' members to keep track of info about a command thread.
+       (start_job): New function to start a job and update the argument
+       `struct child' to reflect its status.
+       (execute_file_commands): Merged run_file_commands back in.
+       Made it use new start_job function.
+
+       * rule.c (freerule): Don't free the `struct commands' of the
+       discarded rule.  It may be used in more than one place.
+
+       * commands.c (execute_command_line): Made it not try to delete the
+       possibly partly-made file.  The child_handler function will do this.
+       (fatal_error_signal): Ditto + call kill_children.
+
+       * make.h: Declare job_slots.
+
+       * make.c (main): Collect goals in a dep chain and run through this
+       chain waiting for a child, eliminating finished goals, updating all
+       remaining goals, and quitting if they fail and not -k.
+
+       * commands.c (child_handler): If called with SIG < 0, - SIG is the
+       max number of children to bury.
+
+       * commands.c (child_handler): If called with SIG as zero,
+       block waiting for running children.
+       (kill_children): Call child_handler with zero rather than SIGCHLD.
+
+       * remake.c (update_file_1): Use the `command_state' member of FILE
+       and its dependencies to determine what commands are running, what to
+       do, etc.  If commands or dep commands are running when we are
+       called, return success (0).  If commands finished since the last
+       time we were called, return their status.
+
+       * commands.h: Declare kill_children.
+
+       * commands.c: Define `struct child' to keep track of child
+       processes, with the chain in `children'.
+       (child_handler): New function to catch child-termination signals
+       (SIGCHLD, or SIGCLD for USG), store the returned status in the
+       appropriate structure, take the now-obsolete `struct child' out of
+       the chain, and free its storage.
+       (execute_file_commands): Put all of the stuff invloving running the
+       commands into new function run_file_commands.  Execute_file_commands
+       now does process management for the commands, while
+       run_file_commands (which is run in a subprocess) runs the commands.
+       (kill_children): New function to kill all running children by
+       sending them signal SIG.  If there are any children still living
+       after they are all sent SIG, they are all sent SIGKILL.
+
+       * make.c (main): Catch SIGCHLD (SIGCLD for USG) with child_handler.
+
+       * commands.h: Declare child_handler function.
+
+       * commands.c (execute_file_commands): Check the `command_state'
+       member of FILE and return 0 if it is `cs_running' or
+       `cs_deps_running' and return the stored status if it is `cs_finished'.
+
+       * file.h (struct file): Added `command_state' member.
+
+       * commands.c (execute_command_line): Add `$' to the list of
+       characters special to the shell.
+
+Wed Sep 21 15:57:41 1988  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * read.c (read_all_makefiles): Call convert_to_pattern before
+       recomputing the limits after adding the displaced rules.
+
+       * make.c (main): Move calls to snap_deps, convert_to_pattern, and
+       build_vpath_lists to read_all_makefiles.
+
+       * read.c (read_all_makefiles): Install the default pattern rules
+       before checking to remake the makefiles, displace these rules before
+       reading in the makefiles, and then add the displaced rules to the
+       chain after reading in all the makefiles.
+
+       * make.c (main): Don't call install_default_pattern_rules or
+       count_implicit_rule_limits.
+
+       * make.h: Declare displace_pattern_rules and
+       add_displaced_pattern_rules.
+
+       * rule.c (displace_pattern_rules, add_displaced_pattern_rules): New
+       functions to stow the chain and add the stowed chain on the end of
+       the current chain.
+
+       * make.texinfo (Implicit: Search Algorithm): Fixed PREV reference.
+
+       * make.c (main): Call construct_include_path right after decoding
+       the switches.
+
+       * read.c (find_makefile): Use rename_file.
+
+       * file.h: Declare rename_file.
+
+       * file.c (rename_file): New function to rename a `struct file' and
+       put it in the correct hash bucket.
+
+       * read.c (find_makefile): New function to find and update a makefile.
+        (read_all_makefilese): Use find_makefile.
+        (read_makefile): Don't do updating.  Removed UPDATEIT arg.
+
+       * remake.c (update_file_1): Took out setting the `updated' member to
+       -1 rather than 1 sometimes.
+
+       * make.c (main): Made it print version info before doing anything else.
+
+       * remake.c (library_file_mtime, f_mtime): Removed use of last two
+       arguments to vpath_search.
+
+       * rule.c (pattern_search): Removed use of last two arguments
+       to vpath_search.
+
+       * vpath.c (vpath_search, selective_vpath_search): Removed unused
+       DIRPREFIX and DPLEN args.
+
+       * read.c (read_makefile): Also turn off -n when updating makefiles.
+
+Tue Sep 20 17:01:10 1988  Roland McGrath  (mcgrath at pepper.Berkeley.EDU)
+
+       * Makefile: Put tags files in the tarfile.
+
+       * read.c (read_makefile): Get the modtime of the makefile via a stat
+       call so that a later file_mtime call won't do VPATH search for it.
+
+       * read.c (read_makefile): Don't turn off -t and -q if the makefile
+       was a command-line target.
+
+       * make.c (main): Enter command-line targets as files and set their
+       `cmd_target' members.
+
+       * file.h (struct file): Added `cmd_target' member.
+
+       * read.c (read_makefile): Temporarily turn off -t and -q while
+       updating makefiles.
+
+       * make.c (main): Don't use arg 0 from other_args (which is now
+       argv[0]; i.e., the program's name).
+
+       * read.c (read_makefile): Only return nonzero if commands were
+       actually run to remake the makefile.
+
+       * remake.c (update_file_1): Set FILE->updated to -1 if no commands
+       were actually run (because no update was done or -t was given).
+
+       * make.c (decode_switches): Fixed bug wherein xrealloc was passed
+       bad args if it tried to expand other_args->list.
+
+       * read.c (read_all_makefiles): Made it not look at the `MAKE'
+       variable, just use argv[0].
+
+Sun Sep 18 17:34:11 1988  Roland McGrath  (mcgrath at paris.Berkeley.EDU)
+
+       * read.c (rerun_make): New function to re-exec make.
+
+       * make.c (construct_makeflags, construct_argv): New functions to
+       construct the `MAKEFLAGS' variable and to construct an arg list from
+       parsed info.
+
+       * read.c (read_makefile): New arg UPDATEIT, if nonzero, says to
+       update the makefile as a target before reading it in.  When reading
+       included makefiles, pass this as zero.  Now returns nonzero if the
+       makefile was updated, zero if not.
+       (read_all_makefiles): Pass a nonzero UPDATEIT arg to read_makefile
+       for all default and -f makefiles and all makefiles from the
+       `MAKEFILES' variable.  If any of the makefiles has changed, re-exec
+       self to re-read them.
+
+       * remake.c (update_file): Print a "File `foo' up to date'" message
+       under -p.
+
+       * commands.c (execute_file_commands): Allocate one byte for each of
+       $^ and $< rather than zero if they are to be empty.
+
+Fri Sep 16 13:59:59 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Version 3.06.
+
+       * make.c (command_switches): Fixed entry for `-o' switch.
+
+       * make.texinfo: Renamed -c switch to -C.
+
+       * make.c: Renamed -c switch to -C.
+
+       * Miscellaneous de-linting.
+
+       * read.c (record_files): Made it not free the storage for the name
+       if it started with `./' and was therefore not quite the same as in
+       the `struct file'.
+
+       * read.c (record_files): If commands were specified twice, the error
+       message specifies in what files and at what line numbers.
+
+       * make.c (main): If any of the signals we usually fatal on were
+       ignored by the parent (probably a shell), ignore them.
+
+       * make.c (main): Print version info for -v, -p, or -d.
+       (print_data_base): Don't print version info.  It will be done in main.
+
+       * variable.c: Increased number of hash buckets to 257.
+
+       * file.c: Increased number of hash buckets to 1007.
+
+       * rule.c (count_implicit_rule_limits): Moved comptation of
+       `maxsuffix' to convert_to_pattern, since that function uses
+       `maxsuffix', and must be called before count_implicit_rule_limits.
+
+       * rule.c (pattern_search): If an existent (non-intermediate)
+       dependendency was found via a terminal rule, set its
+       `tried_implicit' flag, so it will never have implicit rule search done.
+
+       * glob.c: Bug fix to avoid alloca(0).
+
+       * arscan.c: USG and Sun386i fixes.
+
+Thu Sep 15 19:40:26 1988  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * make.texinfo: Fixed some typos and spelling errors.
+
+Wed Sep  7 14:20:39 1988  Roland McGrath  (mcgrath at helen.Berkeley.EDU)
+
+       * make.c (decode_switches): Fixed bug wherein a bad option would
+       give a useless error message and loop forever.
+
+Tue Sep  6 14:36:02 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.texinfo: Documented `shell' function.
+
+       * variable.c (expand_function): New function `shell', does
+       backquote-style command expansion of its arg.
+
+       * commands.c (execute_command_line): Second arg OUTBUF, if not nil,
+       gets filled in with a malloc'd buffer containing the piped stdout of
+       the command.
+       (execute_file_commands): Use above (pass nil).
+
+Mon Sep  5 17:03:49 1988  Roland McGrath  (mcgrath at hecuba.Berkeley.EDU)
+
+       * Makefile: Added copyright notice.
+       Added a comment about defining `NO_MINUS_C_MINUS_O' if necessary.
+
+       * Version 3.05.
+
+       * rule.c (default_suffix_rules): Don't pass `-o' switches with `-c'
+       switches if `NO_MINUS_C_MINUS_O' is #define'd.
+
+       * make.texinfo: Documented `GNUmakefile'.
+
+       * read.c (read_all_makefiles): Made it try default makefile
+       `GNUmakefile' before others.
+
+       * make.texinfo: Added new-style Texinfo header thingies.
+
+Sat Sep  3 18:09:39 1988  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * Version 3.04.
+
+       * make.texinfo (Chained Rules): Added a @cindex about using
+       .PRECIOUS to preserve intermediate files.
+
+       * remake.c (update_file_1): Made it not just return before executing
+       commands under -p.
+
+       * rule.c (default_pattern_rules, default_variables): Made it use
+       `$(AR)' for `ar r' (to put files in archives).
+
+       * vpath.c (build_vpath_lists): Made it recursively expand the
+       `VPATH' variable (by using variable_expand instead of lookup_variable).
+
+       * read.c (conditional_line): Made it not swallow whitespace after
+       the comma in an `ifeq' using the `(a,b)' syntax.
+
+       * rule.c (count_implicit_rule_limits): Made it not crash if a
+       pattern rule dep begins with `/'.
+
+Sun Aug 28 15:51:12 1988  Roland McGrath  (mcgrath at homer.Berkeley.EDU)
+
+       * make.texinfo: Clarified that the arg to the `origin' function is a
+       variable *name*, not a reference.
+
+       * make.texinfo: Clarified that both -Idir and -I dir are allowed.
+
+Sat Aug 27 13:49:28 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * remake.c (remake_file): Made touching phonies work right.
+
+Wed Aug 24 20:40:48 1988  Roland McGrath  (mcgrath at nutmeg.Berkeley.EDU)
+
+       * make.texinfo: Removed reference to `RANLIB' variable.
+
+       * Version 3.03.
+
+       * variables.c (expand_function): Added `origin' function.
+       * make.texinfo: Documented same.
+
+       * read.c (record_files): Made double-colon entries work.
+
+Sat Aug 20 21:09:39 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.c (collapse_continuations): Bug fix from RMS.
+
+       * rule.c (install_default_pattern_rules): Made it set the
+       `in_use' flag of the created rules to zero, rather than letting
+       it be random garbage.
+
+       * rule.c (pattern_search): Fixed putting `also make' targets into
+       file strucutres.
+
+       * read.c (record_files): Fixed bug which made double-colon entries
+       make it read off into space.
+
+       * make.c (decode_switches): Made it understand `ignored' switches
+       rather than dumping core.
+
+Sun Aug 14 16:49:00 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * read.c (read_makefile): Made `include' filenames be
+       variable-expanded.
+
+       * read.c (read_makefile): Fixed an error message.
+
+       * read.c (read_makefile): Made it accept ^L's as whitespace.
+       * make.c (next_token, end_of_token): Ditto.
+
+       * vpath.c (vpath_search): Fixed it so that the general VPATH (from
+       the variable) is always checked, even if a selective VPATH (from a
+       directive) matched the filename.
+
+Sat Aug 13 14:20:46 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.c (decode_switches, main): Made the command switches be
+       processed from a table of switches, variables, and types.  No
+       functions are passed argc and argv any more.  They are passed arrays
+       of strings they need to process.
+       * read.c (read_all_makefiles): Made it take an array rather than
+       argc and argv.
+       (construct_include_path): Ditto.
+
+       * make.c (collapse_continuations): Made it work right (I hope).
+
+       * make.texinfo: Minor editorial changes.
+
+       * read.c (read_makefile): Minor speed improvement by freeing and
+       then mallocing something rather than reallocing it to avoid the
+       unnecessary bcopy.
+
+Thu Aug 11 00:10:43 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.texinfo: Fixed some unquoted @'s.
+
+       * make.texinfo: Documented multiple-target pattern rules.
+       Miscellaneous minor editorial changes and corrections.
+
+       * make.texinfo (Implicit: Catalogue of Rules): Removed the list of
+       variables.  That's what the next section is for.
+       (Implicit: Implicit Variables): Made it agree with reality.
+
+Wed Aug 10 00:55:39 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * variable.c (print_variable_data_base): Fixed bug which made -p
+       dump core.  (This was a really idiotic bug.)
+
+       * rule.c (pattern_search): Fixed a bug which made it make the
+       `also_make' member of the file in question nil if the first of
+       the successful rule's targets was the matching one.
+       Made it use only as much storage as necessary in the `also_make'
+       member.
+       (create_pattern): Made it use only as much storage as necessary in
+       the `lens' and `suffixes' members of the created rule.
+
+       * remake.c (library_file_mtime): Made it `static'.
+
+       * file.c: Added a declaration for `errno', which is declared in some
+       <errno.h>'s, but not all.
+
+       * file.h (struct file): Added `also_make' member for multiple-target
+       implicit rules.
+       * rule.c (pattern_search): Made it put the names of files updated by
+       the given file's commands in its `also_make' member.
+       * remake.c (update_file_1): Made it mark the files in a file's
+       `also_make' member as updated when the file is updated.
+
+       * variable.c (try_variable_definition): Fixed a bug which made it
+       define a variable with the name of the whole definition when there
+       was no space before the = or :=.
+
+       * make.texinfo (Features): Made the changes which were made in RCS
+       revision 2.7 but somehow lost since then.  Added -W.
+
+Tue Aug  9 10:04:50 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * variable.h: Added `o_default' to `enum variable_origin'.
+       * variable.c (print_variable_data_base): Made it print the origins of
+       the variables.
+       * rule.c (install_default_pattern_rules): Made it define the default
+       variables with origin `o_default'.
+
+       * make.texinfo: Documented -W.
+
+       * make.c (decode_switches, main): Added the -W flag to give files a
+       time-stamp of now, for a `what if' effect when used with -n.
+
+       * commands.c (print_commands): Made it say `(built-in)' for commands
+       that are built into the default ruleset.
+
+       * read.c (record_file): Made .SUFFIXES get its deps frontwards (again).
+       * rule.c (set_default_suffixes, convert_to_pattern): Made it read
+       .SUFFIXES's deps frontwards, so the converted rules will not be in
+       reverse order.
+
+       * rule.c (new_pattern_rule): Fixed a bug wherein it would keep
+       searching after it had removed a matching rule and ended up diddling
+       with freed storage.
+
+       * rule.c (freerule): Made it take the given rule off the chain.
+       (new_pattern_rule, count_implicit_rule_limits): Use freerule to
+       remove rules from the chain.
+
+       * vpath.c (construct_vpath_list): Made it return after cleaning out
+       all previous searchpaths when given a nil DIRPATH arg, so it won't
+       go into the construction code and dump core dereferencing a nil
+       pointer.
+
+       * variable.c (patsubst_expand): Fixed a bug which made it not match
+       correctly and sometimes dump core.
+
+Mon Aug  8 16:35:48 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * rule.c (default_suffix_rules): Made the .texinfo.dvi rule remove
+       the files used in the comparison to determine whether or not a
+       second TeX run is necessary.
+
+       * make.texinfo: Fixed some overfull TeX hboxes.
+
+       * make.texinfo (Implicit: Catalogue of Rules): Fixed a Texinfo error.
+
+       * rule.c (create_pattern_rule): Fixed bug wherein index was not
+       being passed its second arg.
+
+       * read.c (getline): Merged back into readline.
+
+       * rule.c (default_suffixes, default_suffix_rules,
+       default_variables): Added .texinfo.info rule.
+       * make.texinfo (Implicit: Catalogue of Rules): Documented
+       .texinfo.dvi and .texinfo.info rules.
+
+       * make.texinfo (Top): Changed `last updated' date to be correct (for
+       the last time it was updated, not today).  Changed `for version
+       3.00' since it's not going to be called that.
+
+Sat Aug  6 19:51:10 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * commands.c (print_commands): Added this function to print the
+       contents of a `struct commands' for -p.
+       * rule.c (print_rule_data_base): Use above.
+       * file.c (print_file_data_base): Ditto.
+
+       * rule.c (count_implicit_rule_limits, new_pattern_rule,
+       install_pattern_rule, print_rule_data_base): Made it understand the
+       changed `struct rule' and act accordingly.
+       (freerule): Added this function to free all the storage used by a rule.
+
+       * rule.c (pattern_search): Made it grok multiple targets of pattern
+       rules.  The matching is done properly, but at present, only the
+       matching pattern's target is used to give deps and commands.
+
+Fri Aug  5 18:00:29 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * rule.c (struct rule): Changed name, namelen, and patsuffix members
+       to targets, lens, and suffixes, which are arrays, for multiple targets.
+       (create_pattern_rule): Now takes first arg TARGETS, a nil-terminated
+       array of targets, rather than a single target and patsuffix pointer.
+
+       * read.c (record_files): If it finds an implicit pattern rule, it
+       collects all the targets into an array and passes the whole thing to
+       create_pattern_rule.  If there are non-pattern targets, it is a
+       fatal error.
+
+Tue Aug  2 15:06:38 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.c (readline): Split backslash-newline checking from reading
+       and buffer-expanding.
+       (getline): Created to do the reading and buffer-expanding formerly
+       done in readline.
+
+       * rule.c (pattern_search): Made it reject nonterminal match-anything
+       rules when a specific rule has matched, rather than rejecting
+       terminal match-anything rules in this case.
+
+       * rule.c (convert_to_pattern): Fixed a bug caused when the change to
+       make it only recognize two-suffix rules whose target suffixes
+       precede their dependency suffixes which made it work in the opposite
+       direction (even worse than it started out).
+
+       * rule.c (pattern_search): Made it reject nonterminal match-anything
+       rules as intermediate targets when searching for both real and
+       intermediate dependencies, rather than only when searching for
+       intermediate ones.
+
+Sun Jul 31 00:33:56 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * rule.c (convert_to_pattern): Made it only recognize two-suffix
+       rules whose target suffix comes before the dependency suffix in the
+       .SUFFIXES list.
+
+       * variable.c (define_automatic_variables): Made all automatic
+       variables be defined with origin `o_automatic'.
+
+       * variable.h: Added `o_automatic' to `enum variable_origin'
+
+       * file.c (remove_intermediates): Made it not print an error message
+       if the error was that the file does not exist.
+
+       * rule.c: Removed `recursive' member from `struct rule'.
+
+       * remake.c (library_file_mtime): Made it not use the directory hash
+       functions, as reading in and hashing /usr/lib and /lib is slow and
+       most likely unnecessary.
+
+       * remake.c (remake_file): Changed message from ``No specification
+       for making'' to ``No way to make'' so it will be short enough that
+       most filenames will fit on a line.
+       Made it look at the `recursive' member of the `struct commands',
+       rather than of the `struct file' (which no longer has one).
+
+       * commands.c (execute_file_commands): Made it look at the
+       `recursive' member of the `struct commands', rather than of the
+       `struct file' (which no longer has one).
+
+       * file.h: Removed `recursive' member from `struct file'.
+
+       * commands.h: Added `recursive' member to `struct commands'.
+
+       * dep.h: Removed unused `quotedparen' member from `struct nameseq'
+       and `struct dep'.
+
+       * read.c (dequote): Removed this function.
+       (multi_glob): Removed reference to `quotedparen' member of
+       a `struct nameseq' and calls to dequote.
+
+       * read.c (record_files): Made it set the stem for $* for all static
+       pattern rules, not just those with commands given at that time.
+       Removed check for recursive commands.
+       Made it check for pairs of .SUFFIXES dependencies to reject as
+       default goals as well as single ones (that don't start with dots).
+       (read_makefile): Added checks for recursive commands to set
+       the `recursive' flag in the `struct commands'.
+
+Sat Jul 30 15:47:23 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.c (find_next_token): Made the LENGTHPTR arg optionally nil.
+
+       * make.c: Removed `files_made' variable which is defined static in
+       remake.c and used only there.
+       (main): Cleaned up somewhat.
+       (decode_switches): Cleaned up a bit.  Made an unknown option be a
+       non-fatal error.
+       (decode_env_switches): Made LEN arg unsigned.  Cleaned up.
+       (print_version): Made it say ``see the source'' rather than ``see
+       the source file'', since there is more than one.
+
+       * file.h: Made `num_intermediates' declared unsigned.
+
+       * file.c: Made `num_intermediates' variable unsigned.
+       (remove_intermediates): Removed unused FORMAT arg.
+       (enter_file): Made it handle double-colon files properly, adding the
+       new entry as the old entry's prev pointer.
+
+       * dir.c: Re-indented the `struct dir' definition to be right.
+       (dir_load): Cleaned up slighty.
+       (file_exists_p): Removed comment saying we could use `access', since
+       that is a bad idea (except for setuid programs).  Cleaned up slightly.
+
+       * commands.c: Changed some comments slightly.
+       (execute_file_commands): Cleaned up a bit.  Changed some comments,
+       added others.  Moved freeing of storage for $^ and $? to the same
+       place as for the other automatic variables.
+       (execute_command_line): Made `#' trigger a shell.
+       Added some comments.  Cleaned up a bit.  Put all the special chars
+       that trigger shells into an array easily changeable at the top.
+
+       * ar.c: Added comments explaining each function.
+       (ar_scan_1): Merged into ar_member_date.
+       (ar_member_date): Changed call to ar_scan_1 to the body of that
+       function.
+       (ar_member_date_1): Simplified to a ?: expression rather than an
+       if-else statement.
+       (ar_member_touch): Changed error handling around a bit.
+       None of these errors are fatal now.
+
+       * variable.c (subst_expand): Added a new arg BY_WORD, to do substs
+       only on full words.
+       (patsubst_expand): Fixed bug which made calls whose patterns
+       contained no `%' to not work correctly, by using above.
+       (variable_expand): Pass extra arg to `subst_expand'.
+
+       * variable.c (expand_function): Fixed bug which made `foreach' calls
+       with one-word lists run off into never-never land.
+
+Fri Jul 29 20:12:36 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * variable.c (expand_function): Made a very minor speed improvement
+       by avoiding an unnecessary strlen call.
+
+Wed Jul 27 16:01:47 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * rule.c (default_suffixes): Rearranged the list somewhat; added
+       `.el' and `.elc' to speed things up (especially when building
+       Emacs), for the same reason `.h' is there.
+
+       * read.c (record_files): Changed `lineno' from `long' to
+       `unsigned int'.
+
+Sun Jul 24 02:15:30 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * variable.c (expand_function): Eliminated use of `wstok'
+       because it is non-reentrant and unreliable.
+       Fixed a minor bug which would cause something not to be freed.
+       * make.c (wstok): Removed `wstok' because it is no longer used.
+
+       * variable.c (expand_function): Made `foreach' function put
+       spaces between output texts like it's supposed to.
+       
+Sat Jul 23 17:32:55 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * rule.c (default_suffixes, default_suffix_rules): Added rule
+       to make %.dvi from %.texinfo.
+
+       * dir.c (print_dir_data_base): Made it say a bit more.
+
+Fri Jul 22 23:13:16 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * make.c (print_data_base): Split this function up into one
+       for each thing.
+       * variable.c (print_variable_data_base): One of the above.
+       * rule.c (print_rule_data_base): Ditto.
+       * file.c (print_file_data_base): Ditto.
+       * dir.c (print_dir_data_base): Ditto.
+
+       * rule.c (install_pattern_rule): Fixed a bug which caused the
+       terminal and recursive flags to always be zero for rules
+       entered by this function.
+
+       * make.texinfo (Rules: Double-colon): Added a paragraph
+       explaining the purpose of double-colon rules.
+
+       * make.texinfo (Implicit: Catalogue of Rules): Updated to
+       reflect new C++, TeX, Web, and Texinfo rules.  Other slight
+       editorial changes.
+
+       * commands.c (execute_file_commands): Fixed a bug wherein
+       random memory could get written for files with no deps.
+       
+Wed Jul 20 19:30:31 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * read.c (readline): Fix bug wherein it would not recognize a
+       backslash-newline if the buffer filled up and was enlarged
+       right before reading the newline.
+       
+Tue Jul 19 19:55:02 1988  Roland McGrath  (mcgrath at chilli.Berkeley.EDU)
+
+       * read.c: Added default suffix rules for .cc (using $(C++),
+       which defaults to `g++', and $(C++FLAGS)), .tex, .dvi, .web
+       and .cweb (using $(TEX), $(WEAVE), $(TANGLE), $(CWEAVE) and
+       $(CTANGLE)).
+       
+Sat Jul 16 21:24:28 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Made error formats use %u rather than %ld for line numbers,
+       which are now unsigned int's rather than long's.
+
+       * read.c (conditional_line): Fixed some bugs caused by use of
+       unsigned int rather than int in one place.
+
+       * read.c (conditional_line): Put the info about active
+       conditionals in a struct.
+       (read_makefile): Make a new struct of info about conditionals
+       for included makefiles and restore the old one after the
+       included makefile has been read.
+
+       * read.c (read_makefile): Don't try to read a makefile with
+       name "" after giving an error message because an `include'
+       directive gave no filename.
+
+       * read.c (read_makefile): Give an error message for
+       non-whitespace text after the filename in an `include' directive.
+
+       * make.c (error): Take five args, like `fatal'.  It managed to
+       lose with only two.  Is there a better way to do this without vfprintf?
+
+       * read.c (read_makefile): Commands consisting of only
+       whitespace are not the same as no commands.  I thought I'd
+       fixed this bug months ago; it seems to have come back.
+
+       * make.c (collapse_continuations): All whitespace around a
+       backslash-newline combination is turned into a single space.
+
+       * Added COPYING file and copyright notices to all files.
+
+       * make.texinfo (Running: Goals): Fix a typo.
+
+       * read.c (do_define): Take an arg for the origin of the
+       variable being defined.
+       (read_makefile): Grok `override define'.
+
+       * make.texinfo (Variables: Override Directive, Defining):
+       Document the `override define' combination directive.
+
+       * ar.c (ar_member_date): Make a 0 return from `ar_scan' return
+       (time_t) -1 (nonexistent file), rather than (time_t) 0, which,
+       when put in the `struct file', makes `file_mtime' try to get
+       the mtime over and over again.
+
+       * variable.c (pattern_matches): Fix a bug that made patterns
+       not beginning with `%' never match.
+       
+Fri Jul 15 21:01:44 1988  Roland McGrath  (mcgrath at tully.Berkeley.EDU)
+
+       * Took Make out of RCS.
+
+       * Split the monolithic `make.c' into several smaller files.
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..328fd69
--- /dev/null
@@ -0,0 +1,307 @@
+# NOTE: If you have no `make' program at all to process this makefile, run
+# `build.sh' instead.
+#
+# Copyright (C) 1988, 89, 91, 92, 93, 94, 1995 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+# 
+# GNU Make is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU Make is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with GNU Make; see the file COPYING.  If not, write to
+# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+#
+#      Makefile for GNU Make
+#
+
+# Ultrix 2.2 make doesn't expand the value of VPATH.
+VPATH = @srcdir@
+# This must repeat the value, because configure will remove `VPATH = .'.
+srcdir = @srcdir@
+
+CC = @CC@
+
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+
+# Define these for your system as follows:
+#      -DNO_ARCHIVES           To disable `ar' archive support.
+#      -DNO_FLOAT              To avoid using floating-point numbers.
+#      -DENUM_BITFIELDS        If the compiler isn't GCC but groks enum foo:2.
+#                              Some compilers apparently accept this
+#                              without complaint but produce losing code,
+#                              so beware.
+# NeXT 1.0a uses an old version of GCC, which required -D__inline=inline.
+# See also `config.h'.
+defines = @DEFS@ -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\"
+
+# Which flavor of remote job execution support to use.
+# The code is found in `remote-$(REMOTE).c'.
+REMOTE = @REMOTE@
+
+# If you are using the GNU C library, or have the GNU getopt functions in
+# your C library, you can comment these out.
+GETOPT = getopt.o getopt1.o
+GETOPT_SRC = $(srcdir)/getopt.c $(srcdir)/getopt1.c $(srcdir)/getopt.h
+
+# If you are using the GNU C library, or have the GNU glob functions in
+# your C library, you can comment this out.  GNU make uses special hooks
+# into the glob functions to be more efficient (by using make's directory
+# cache for globbing), so you must use the GNU functions even if your
+# system's C library has the 1003.2 glob functions already.  Also, the glob
+# functions in the AIX and HPUX C libraries are said to be buggy.
+GLOB = glob/libglob.a
+
+# If your system doesn't have alloca, or the one provided is bad, define this.
+ALLOCA = @ALLOCA@
+ALLOCA_SRC = $(srcdir)/alloca.c
+
+# If your system needs extra libraries loaded in, define them here.
+# System V probably need -lPW for alloca.  HP-UX 7.0's alloca in
+# libPW.a is broken on HP9000s300 and HP9000s400 machines.  Use
+# alloca.c instead on those machines.
+LOADLIBES = @LIBS@
+
+# Any extra object files your system needs.
+extras = @LIBOBJS@
+
+# Common prefix for machine-independent installed files.
+prefix = @prefix@
+# Common prefix for machine-dependent installed files.
+exec_prefix = @exec_prefix@
+
+# Directory to install `make' in.
+bindir = $(exec_prefix)/bin
+# Directory to find libraries in for `-lXXX'.
+libdir = $(exec_prefix)/lib
+# Directory to search by default for included makefiles.
+includedir = $(prefix)/include
+# Directory to install the Info files in.
+infodir = $(prefix)/info
+# Directory to install the man page in.
+mandir = $(prefix)/man/man$(manext)
+# Number to put on the man page filename.
+manext = 1
+# Prefix to put on installed `make' binary file name.
+binprefix =
+# Prefix to put on installed `make' man page file name.
+manprefix = $(binprefix)
+
+# Whether or not make needs to be installed setgid.
+# The value should be either `true' or `false'.
+# On many systems, the getloadavg function (used to implement the `-l'
+# switch) will not work unless make is installed setgid kmem.
+install_setgid = @NEED_SETGID@
+# Install make setgid to this group so it can read /dev/kmem.
+group = @KMEM_GROUP@
+
+# Program to install `make'.
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+# Program to install the man page.
+INSTALL_DATA = @INSTALL_DATA@
+# Generic install program.
+INSTALL = @INSTALL@
+
+# Program to format Texinfo source into Info files.
+MAKEINFO = makeinfo
+# Program to format Texinfo source into DVI files.
+TEXI2DVI = texi2dvi
+
+# Programs to make tags files.
+ETAGS = etags -w
+CTAGS = ctags -w
+
+objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o     \
+       rule.o implicit.o default.o variable.o expand.o function.o      \
+       vpath.o version.o ar.o arscan.o signame.o remote-$(REMOTE).o    \
+       $(GLOB) $(GETOPT) $(ALLOCA) $(extras)
+srcs = $(srcdir)/commands.c $(srcdir)/job.c $(srcdir)/dir.c            \
+       $(srcdir)/file.c $(srcdir)/getloadavg.c $(srcdir)/misc.c                \
+       $(srcdir)/main.c $(srcdir)/read.c $(srcdir)/remake.c            \
+       $(srcdir)/rule.c $(srcdir)/implicit.c $(srcdir)/default.c       \
+       $(srcdir)/variable.c $(srcdir)/expand.c $(srcdir)/function.c    \
+       $(srcdir)/vpath.c $(srcdir)/version.c                           \
+       $(srcdir)/remote-$(REMOTE).c                                    \
+       $(srcdir)/ar.c $(srcdir)/arscan.c                               \
+       $(srcdir)/signame.c $(srcdir)/signame.h $(GETOPT_SRC)           \
+       $(srcdir)/commands.h $(srcdir)/dep.h $(srcdir)/file.h           \
+       $(srcdir)/job.h $(srcdir)/make.h $(srcdir)/rule.h               \
+       $(srcdir)/variable.h $(ALLOCA_SRC) $(srcdir)/config.h.in
+
+
+.SUFFIXES:
+.SUFFIXES: .o .c .h .ps .dvi .info .texinfo
+
+all: make
+info: make.info
+dvi: make.dvi
+# Some makes apparently use .PHONY as the default goal if it is before `all'.
+.PHONY: all check info dvi
+
+make.info: make.texinfo
+       $(MAKEINFO) -I$(srcdir) $(srcdir)/make.texinfo -o make.info
+
+make.dvi: make.texinfo
+       $(TEXI2DVI) $(srcdir)/make.texinfo
+
+make.ps: make.dvi
+       dvi2ps make.dvi > make.ps
+
+make: $(objs)
+       $(CC) $(LDFLAGS) $(objs) $(LOADLIBES) -o make.new
+       mv -f make.new make
+
+# -I. is needed to find config.h in the build directory.
+.c.o:
+       $(CC) $(defines) -c -I. -I$(srcdir) -I$(srcdir)/glob \
+             $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
+
+# For some losing Unix makes.
+SHELL = /bin/sh
+@SET_MAKE@
+
+glob/libglob.a: FORCE config.h
+       cd glob; $(MAKE) libglob.a
+FORCE:
+
+tagsrcs = $(srcs) $(srcdir)/remote-*.c
+TAGS: $(tagsrcs)
+       $(ETAGS) $(tagsrcs)
+tags: $(tagsrcs)
+       $(CTAGS) $(tagsrcs)
+
+.PHONY: install installdirs
+install: installdirs \
+        $(bindir)/$(binprefix)make $(infodir)/make.info \
+        $(mandir)/$(manprefix)make.$(manext)
+
+installdirs:
+       $(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(infodir) $(mandir)
+
+$(bindir)/$(binprefix)make: make
+       $(INSTALL_PROGRAM) make $@.new
+       @if $(install_setgid); then \
+          if chgrp $(group) $@.new && chmod g+s $@.new; then \
+            echo "chgrp $(group) $@.new && chmod g+s $@.new"; \
+          else \
+            echo "$@ needs to be owned by group $(group) and setgid;"; \
+            echo "otherwise the \`-l' option will probably not work."; \
+            echo "You may need special privileges to install $@."; \
+          fi; \
+        else true; fi
+# Some systems can't deal with renaming onto a running binary.
+       -rm -f $@.old
+       -mv $@ $@.old
+       mv $@.new $@
+
+$(infodir)/make.info: make.info
+       if [ -r ./make.info ]; then dir=.; else dir=$(srcdir); fi; \
+       for file in $${dir}/make.info*; do \
+         name="`basename $$file`"; \
+         $(INSTALL_DATA) $$file \
+           `echo $@ | sed "s,make.info\$$,$$name,"`; \
+       done
+# Run install-info only if it exists.
+# Use `if' instead of just prepending `-' to the
+# line so we notice real errors from install-info.
+# We use `$(SHELL) -c' because some shells do not
+# fail gracefully when there is an unknown command.
+       if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
+         install-info --infodir=$(infodir) $$dir/make.info; \
+       else true; fi
+
+$(mandir)/$(manprefix)make.$(manext): make.man
+       $(INSTALL_DATA) $(srcdir)/make.man $@
+
+
+loadavg: loadavg.c config.h
+       $(CC) $(defines) -DTEST -I. -I$(srcdir) $(CFLAGS) $(LDFLAGS) \
+             loadavg.c $(LOADLIBES) -o $@
+# We copy getloadavg.c into a different file rather than compiling it
+# directly because some compilers clobber getloadavg.o in the process.
+loadavg.c: getloadavg.c
+       ln $(srcdir)/getloadavg.c loadavg.c || \
+       cp $(srcdir)/getloadavg.c loadavg.c
+check-loadavg: loadavg
+       @echo The system uptime program believes the load average to be:
+       -uptime
+       @echo The GNU load average checking code believes:
+       ./loadavg
+check: check-loadavg
+
+
+.PHONY: clean realclean distclean mostlyclean
+clean: glob-clean
+       -rm -f make loadavg *.o core make.dvi
+distclean: clean glob-realclean
+       -rm -f Makefile config.h config.status build.sh stamp-config
+       -rm -f config.log config.cache
+       -rm -f TAGS tags
+       -rm -f make.?? make.??s make.log make.toc make.*aux
+       -rm -f loadavg.c
+realclean: distclean
+       -rm -f make.info*
+mostlyclean: clean
+
+.PHONY: glob-clean glob-realclean
+glob-clean glob-realclean:
+       cd glob; $(MAKE) $@
+
+Makefile: config.status $(srcdir)/Makefile.in
+       $(SHELL) config.status
+glob/Makefile: config.status $(srcdir)/glob/Makefile.in
+       $(SHELL) config.status
+config.h: stamp-config ;
+stamp-config: config.status $(srcdir)/config.h.in
+       $(SHELL) config.status
+       touch stamp-config
+
+# These rules cause too much trouble.
+#configure: configure.in
+#      autoconf $(ACFLAGS)
+#config.h.in: configure.in
+#      autoheader $(ACFLAGS)
+
+# This tells versions [3.59,3.63) of GNU make not to export all variables.
+.NOEXPORT:
+
+# The automatically generated dependencies below may omit config.h
+# because it is included with ``#include <config.h>'' rather than
+# ``#include "config.h"''.  So we add the explicit dependency to make sure.
+$(objs): config.h
+
+# Automatically generated dependencies will be put at the end of the file.
+
+# Automatically generated dependencies.
+commands.o : commands.c make.h dep.h commands.h file.h variable.h job.h 
+job.o: job.c make.h commands.h job.h file.h variable.h
+dir.o: dir.c make.h
+file.o : file.c make.h commands.h dep.h file.h variable.h 
+misc.o: misc.c make.h dep.h
+main.o: main.c make.h commands.h dep.h file.h variable.h job.h getopt.h
+read.o: read.c make.h commands.h dep.h file.h variable.h glob/glob.h
+remake.o: remake.c make.h commands.h job.h dep.h file.h
+rule.o : rule.c make.h config.h commands.h dep.h file.h variable.h rule.h 
+implicit.o : implicit.c make.h rule.h dep.h file.h 
+default.o: default.c make.h rule.h dep.h file.h commands.h variable.h
+variable.o : variable.c make.h commands.h variable.h dep.h file.h 
+expand.o: expand.c make.h commands.h file.h variable.h
+function.o : function.c make.h variable.h dep.h commands.h job.h 
+vpath.o : vpath.c make.h file.h variable.h 
+version.o: version.c
+ar.o : ar.c make.h file.h dep.h 
+arscan.o: arscan.c make.h
+signame.o: signame.c signame.h
+remote-stub.o : remote-stub.c make.h commands.h 
+getopt.o: getopt.c getopt.h
+getopt1.o : getopt1.c getopt.h 
+getloadavg.o: getloadavg.c
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..6c97107
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,557 @@
+GNU make NEWS -- history of user-visible changes.  26 January 1995
+
+Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+See the end for copying conditions.
+
+Please send GNU make bug reports to bug-gnu-utils@prep.ai.mit.edu.
+\f
+Version 3.73
+
+* Converted to use Autoconf version 2, so `configure' has some new options.
+  See INSTALL for details.
+
+* You can now send a SIGUSR1 signal to Make to toggle printing of debugging
+  output enable by -d, at any time during the run.
+\f
+Version 3.72
+
+* DJ Delorie has ported Make to MS-DOS using the GO32 extender.
+  He is maintaining the DOS port, not the GNU Make maintainer;
+  please direct bugs and questions for DOS to <djgpp@sun.soe.clarkson.edu>.
+  MS-DOS binaries are available for FTP from oak.oakland.edu:pub/msdos/djgpp.
+
+* The `MAKEFLAGS' variable (in the environment or in a makefile) can now
+  contain variable definitions itself; these are treated just like
+  command-line variable definitions.  Make will automatically insert any
+  variable definitions from the environment value of `MAKEFLAGS' or from
+  the command line, into the `MAKEFLAGS' value exported to children.  The
+  `MAKEOVERRIDES' variable previously included in the value of `$(MAKE)'
+  for sub-makes is now included in `MAKEFLAGS' instead.  As before, you can
+  reset `MAKEOVERRIDES' in your makefile to avoid putting all the variables
+  in the environment when its size is limited.
+
+* If `.DELETE_ON_ERROR' appears as a target, Make will delete the target of
+  a rule if it has changed when its commands exit with a nonzero status,
+  just as when the commands get a signal.
+
+* The automatic variable `$+' is new.  It lists all the dependencies like
+  `$^', but preserves duplicates listed in the makefile.  This is useful
+  for linking rules, where library files sometimes need to be listed twice
+  in the link order.
+
+* You can now specify the `.IGNORE' and `.SILENT' special targets with
+  dependencies to limit their effects to those files.  If a file appears as
+  a dependency of `.IGNORE', then errors will be ignored while running the
+  commands to update that file.  Likewise if a file appears as a dependency
+  of `.SILENT', then the commands to update that file will not be printed
+  before they are run.  (This change was made to conform to POSIX.2.)
+\f
+Version 3.71
+
+* The automatic variables `$(@D)', `$(%D)', `$(*D)', `$(<D)', `$(?D)', and
+  `$(^D)' now omit the trailing slash from the directory name.  (This change
+  was made to comply with POSIX.2.)
+
+* The source distribution now includes the Info files for the Make manual.
+  There is no longer a separate distribution containing Info and DVI files.
+
+* You can now set the variables `binprefix' and/or `manprefix' in
+  Makefile.in (or on the command line when installing) to install GNU make
+  under a name other than `make' (i.e., ``make binprefix=g install''
+  installs GNU make as `gmake').
+
+* The built-in Texinfo rules use the new variables `TEXI2DVI_FLAGS' for
+  flags to the `texi2dvi' script, and `MAKEINFO_FLAGS' for flags to the
+  Makeinfo program.
+
+* The exit status of Make when it runs into errors is now 2 instead of 1.
+  The exit status is 1 only when using -q and some target is not up to date.
+  (This change was made to comply with POSIX.2.)
+\f
+Version 3.70
+
+* It is no longer a fatal error to have a NUL character in a makefile.
+  You should never put a NUL in a makefile because it can have strange
+  results, but otherwise empty lines full of NULs (such as produced by
+  the `xmkmf' program) will always work fine.
+
+* The error messages for nonexistent included makefiles now refer to the
+  makefile name and line number where the `include' appeared, so Emacs's
+  C-x ` command takes you there (in case it's a typo you need to fix).
+\f
+Version 3.69
+
+* Implicit rule search for archive member references is now done in the
+  opposite order from previous versions: the whole target name `LIB(MEM)'
+  first, and just the member name and parentheses `(MEM)' second.
+
+* Make now gives an error for an unterminated variable or function reference.
+  For example, `$(foo' with no matching `)' or `${bar' with no matching `}'.
+
+* The new default variable `MAKE_VERSION' gives the version number of
+  Make, and a string describing the remote job support compiled in (if any).
+  Thus the value (in this release) is something like `3.69' or `3.69-Customs'.
+
+* Commands in an invocation of the `shell' function are no longer run with
+  a modified environment like target commands are.  As in versions before
+  3.68, they now run with the environment that `make' started with.  We
+  have reversed the change made in version 3.68 because it turned out to
+  cause a paradoxical situation in cases like:
+
+       export variable = $(shell echo value)
+
+  When Make attempted to put this variable in the environment for a target
+  command, it would try expand the value by running the shell command
+  `echo value'.  In version 3.68, because it constructed an environment
+  for that shell command in the same way, Make would begin to go into an
+  infinite loop and then get a fatal error when it detected the loop.
+
+* The commands given for `.DEFAULT' are now used for phony targets with no
+  commands.
+\f
+Version 3.68
+
+* You can list several archive member names inside parenthesis:
+  `lib(mem1 mem2 mem3)' is equivalent to `lib(mem1) lib(mem2) lib(mem3)'.
+
+* You can use wildcards inside archive member references.  For example,
+  `lib(*.o)' expands to all existing members of `lib' whose names end in
+  `.o' (e.g. `lib(a.o) lib(b.o)'); `*.a(*.o)' expands to all such members
+  of all existing files whose names end in `.a' (e.g. `foo.a(a.o)
+  foo.a(b.o) bar.a(c.o) bar.a(d.o)'.
+
+* A suffix rule `.X.a' now produces two pattern rules:
+       (%.o): %.X      # Previous versions produced only this.
+       %.a: %.X        # Now produces this as well, just like other suffixes.
+
+* The new flag `--warn-undefined-variables' says to issue a warning message
+  whenever Make expands a reference to an undefined variable.
+
+* The new `-include' directive is just like `include' except that there is
+  no error (not even a warning) for a nonexistent makefile.
+
+* Commands in an invocation of the `shell' function are now run with a
+  modified environment like target commands are, so you can use `export' et
+  al to set up variables for them.  They used to run with the environment
+  that `make' started with.
+\f
+Version 3.66
+
+* `make --version' (or `make -v') now exits immediately after printing
+  the version number.
+\f
+Version 3.65
+
+* Make now supports long-named members in `ar' archive files.
+\f
+Version 3.64
+
+* Make now supports the `+=' syntax for a variable definition which appends
+  to the variable's previous value.  See the section `Appending More Text
+  to Variables' in the manual for full details.
+
+* The new option `--no-print-directory' inhibits the `-w' or
+  `--print-directory' feature.  Make turns on `--print-directory'
+  automatically if you use `-C' or `--directory', and in sub-makes; some
+  users have found this behavior undesirable.
+
+* The built-in implicit rules now support the alternative extension
+  `.txinfo' for Texinfo files, just like `.texinfo' and `.texi'.
+\f
+Version 3.63
+
+* Make now uses a standard GNU `configure' script.  See the new file
+  INSTALL for the new (and much simpler) installation procedure.
+
+* There is now a shell script to build Make the first time, if you have no
+  other `make' program.  `build.sh' is created by `configure'; see README.
+
+* GNU Make now completely conforms to the POSIX.2 specification for `make'.
+
+* Elements of the `$^' and `$?' automatic variables that are archive
+  member references now list only the member name, as in Unix and POSIX.2.
+
+* You should no longer ever need to specify the `-w' switch, which prints
+  the current directory before and after Make runs.  The `-C' switch to
+  change directory, and recursive use of Make, now set `-w' automatically.
+
+* Multiple double-colon rules for the same target will no longer have their
+  commands run simultaneously under -j, as this could result in the two
+  commands trying to change the file at the same time and interfering with
+  one another.
+
+* The `SHELL' variable is now never taken from the environment.
+  Each makefile that wants a shell other than the default (/bin/sh) must
+  set SHELL itself.  SHELL is always exported to child processes.
+  This change was made for compatibility with POSIX.2.
+
+* Make now accepts long options.  There is now an informative usage message
+  that tells you what all the options are and what they do.  Try `make --help'.
+
+* There are two new directives: `export' and `unexport'.  All variables are
+  no longer automatically put into the environments of the commands that
+  Make runs.  Instead, only variables specified on the command line or in
+  the environment are exported by default.  To export others, use:
+       export VARIABLE
+  or you can define variables with:
+       export VARIABLE = VALUE
+  or:
+       export VARIABLE := VALUE
+  You can use just:
+       export
+  or:
+       .EXPORT_ALL_VARIABLES:
+  to get the old behavior.  See the node `Variables/Recursion' in the manual
+  for a full description.
+
+* The commands from the `.DEFAULT' special target are only applied to
+  targets which have no rules at all, not all targets with no commands.
+  This change was made for compatibility with Unix make.
+
+* All fatal error messages now contain `***', so they are easy to find in
+  compilation logs.
+
+* Dependency file names like `-lNAME' are now replaced with the actual file
+  name found, as with files found by normal directory search (VPATH).
+  The library file `libNAME.a' may now be found in the current directory,
+  which is checked before VPATH; the standard set of directories (/lib,
+  /usr/lib, /usr/local/lib) is now checked last.
+  See the node `Libraries/Search' in the manual for full details.
+
+* A single `include' directive can now specify more than one makefile to
+  include, like this:
+       include file1 file2
+  You can also use shell file name patterns in an `include' directive:
+       include *.mk 
+
+* The default directories to search for included makefiles, and for
+  libraries specified with `-lNAME', are now set by configuration.
+
+* You can now use blanks as well as colons to separate the directories in a
+  search path for the `vpath' directive or the `VPATH' variable.
+
+* You can now use variables and functions in the left hand side of a
+  variable assignment, as in "$(foo)bar = value".
+
+* The `MAKE' variable is always defined as `$(MAKE_COMMAND) $(MAKEOVERRIDES)'.
+  The `MAKE_COMMAND' variable is now defined to the name with which make
+  was invoked.
+
+* The built-in rules for C++ compilation now use the variables `$(CXX)' and
+  `$(CXXFLAGS)' instead of `$(C++)' and `$(C++FLAGS)'.  The old names had
+  problems with shells that cannot have `+' in environment variable names.
+
+* The value of a recursively expanded variable is now expanded when putting
+  it into the environment for child processes.  This change was made for
+  compatibility with Unix make.
+
+* A rule with no targets before the `:' is now accepted and ignored.
+  This change was made for compatibility with SunOS 4 make.
+  We do not recommend that you write your makefiles to take advantage of this.
+
+* The `-I' switch can now be used in MAKEFLAGS, and are put there
+  automatically just like other switches.
+\f
+Version 3.61
+
+* Built-in rules for C++ source files with the `.C' suffix.
+  We still recommend that you use `.cc' instead.
+
+* If commands are given too many times for a single target,
+  the last set given is used, and a warning message is printed.
+
+* Error messages about makefiles are in standard GNU error format,
+  so C-x ` in Emacs works on them.
+
+* Dependencies of pattern rules which contain no % need not actually exist
+  if they can be created (just like dependencies which do have a %).
+\f
+Version 3.60
+
+* A message is always printed when Make decides there is nothing to be done.
+  It used to be that no message was printed for top-level phony targets
+  (because "`phony' is up to date" isn't quite right).  Now a different
+  message "Nothing to be done for `phony'" is printed in that case.
+
+* Archives on AIX now supposedly work.
+
+* When the commands specified for .DEFAULT are used to update a target,
+  the $< automatic variable is given the same value as $@ for that target.
+  This is how Unix make behaves, and this behavior is mandated by POSIX.2.
+\f
+Version 3.59
+
+* The -n, -q, and -t options are not put in the `MAKEFLAGS' and `MFLAG'
+  variables while remaking makefiles, so recursive makes done while remaking
+  makefiles will behave properly.
+
+* If the special target `.NOEXPORT' is specified in a makefile,
+  only variables that came from the environment and variables
+  defined on the command line are exported.
+\f
+Version 3.58
+
+* Suffix rules may have dependencies (which are ignored).
+\f
+Version 3.57
+
+* Dependencies of the form `-lLIB' are searched for as /usr/local/lib/libLIB.a
+  as well as libLIB.a in /usr/lib, /lib, the current directory, and VPATH.
+\f
+Version 3.55
+
+* There is now a Unix man page for GNU Make.  It is certainly not a replacement
+for the Texinfo manual, but it documents the basic functionality and the
+switches.  For full documentation, you should still read the Texinfo manual.
+Thanks to Dennis Morse of Stanford University for contributing the initial
+version of this.
+
+* Variables which are defined by default (e.g., `CC') will no longer be put
+into the environment for child processes.  (If these variables are reset by the
+environment, makefiles, or the command line, they will still go into the
+environment.)
+
+* Makefiles which have commands but no dependencies (and thus are always
+  considered out of date and in need of remaking), will not be remade (if they
+  were being remade only because they were makefiles).  This means that GNU
+  Make will no longer go into an infinite loop when fed the makefiles that
+  `imake' (necessary to build X Windows) produces.
+
+* There is no longer a warning for using the `vpath' directive with an explicit
+pathname (instead of a `%' pattern).
+\f
+Version 3.51
+
+* When removing intermediate files, only one `rm' command line is printed,
+listing all file names.
+
+* There are now automatic variables `$(^D)', `$(^F)', `$(?D)', and `$(?F)'.
+These are the directory-only and file-only versions of `$^' and `$?'.
+
+* Library dependencies given as `-lNAME' will use "libNAME.a" in the current
+directory if it exists.
+
+* The automatic variable `$($/)' is no longer defined.
+
+* Leading `+' characters on a command line make that line be executed even
+under -n, -t, or -q (as if the line contained `$(MAKE)').
+
+* For command lines containing `$(MAKE)', `${MAKE}', or leading `+' characters,
+only those lines are executed, not their entire rules.
+(This is how Unix make behaves for lines containing `$(MAKE)' or `${MAKE}'.)
+\f
+Version 3.50
+
+* Filenames in rules will now have ~ and ~USER expanded.
+
+* The `-p' output has been changed so it can be used as a makefile.
+(All information that isn't specified by makefiles is prefaced with comment
+characters.)
+\f
+Version 3.49
+
+* The % character can be quoted with backslash in implicit pattern rules,
+static pattern rules, `vpath' directives, and `patsubst', `filter', and
+`filter-out' functions.  A warning is issued if a `vpath' directive's
+pattern contains no %.
+
+* The `wildcard' variable expansion function now expands ~ and ~USER.
+
+* Messages indicating failed commands now contain the target name:
+       make: *** [target] Error 1
+
+* The `-p' output format has been changed somewhat to look more like
+makefile rules and to give all information that Make has about files.
+\f
+Version 3.48
+\f
+Version 3.47
+
+* The `-l' switch with no argument removes any previous load-average limit.
+
+* When the `-w' switch is in effect, and Make has updated makefiles,
+it will write a `Leaving directory' messagfe before re-executing itself.
+This makes the `directory change tracking' changes to Emacs's compilation
+commands work properly.
+\f
+Version 3.46
+
+* The automatic variable `$*' is now defined for explicit rules,
+as it is in Unix make.
+\f
+Version 3.45
+
+* The `-j' switch is now put in the MAKEFLAGS and MFLAGS variables when
+specified without an argument (indicating infinite jobs).
+The `-l' switch is not always put in the MAKEFLAGS and MFLAGS variables.
+
+* Make no longer checks hashed directories after running commands.
+The behavior implemented in 3.41 caused too much slowdown.
+\f
+Version 3.44
+
+* A dependency is NOT considered newer than its dependent if
+they have the same modification time.  The behavior implemented
+in 3.43 conflicts with RCS.
+\f
+Version 3.43
+
+* Dependency loops are no longer fatal errors.
+
+* A dependency is considered newer than its dependent if
+they have the same modification time.
+\f
+Version 3.42
+
+* The variables F77 and F77FLAGS are now set by default to $(FC) and
+$(FFLAGS).  Makefiles designed for System V make may use these variables in
+explicit rules and expect them to be set.  Unfortunately, there is no way to
+make setting these affect the Fortran implicit rules unless FC and FFLAGS
+are not used (and these are used by BSD make).
+\f
+Version 3.41
+
+* Make now checks to see if its hashed directories are changed by commands.
+Other makes that hash directories (Sun, 4.3 BSD) don't do this.
+\f
+Version 3.39
+
+* The `shell' function no longer captures standard error output.
+\f
+Version 3.32
+
+* A file beginning with a dot can be the default target if it also contains
+a slash (e.g., `../bin/foo').  (Unix make allows this as well.)
+\f
+Version 3.31
+
+* Archive member names are truncated to 15 characters.
+
+* Yet more USG stuff.
+
+* Minimal support for Microport System V (a 16-bit machine and a
+brain-damaged compiler).  This has even lower priority than other USG
+support, so if it gets beyond trivial, I will take it out completely.
+
+* Revamped default implicit rules (not much visible change).
+
+* The -d and -p options can come from the environment.
+\f
+Version 3.30
+
+* Improved support for USG and HPUX (hopefully).
+
+* A variable reference like `$(foo:a=b)', if `a' contains a `%', is
+equivalent to `$(patsubst a,b,$(foo))'.
+
+* Defining .DEFAULT with no deps or commands clears its commands.
+
+* New default implicit rules for .S (cpp, then as), and .sh (copy and make
+executable).  All default implicit rules that use cpp (even indirectly), use
+$(CPPFLAGS).
+\f
+Version 3.29
+
+* Giving the -j option with no arguments gives you infinite jobs.
+\f
+Version 3.28
+
+* New option: "-l LOAD" says not to start any new jobs while others are
+running if the load average is not below LOAD (a floating-point number).
+
+* There is support in place for implementations of remote command execution
+in Make.  See the file remote.c.
+\f
+Version 3.26
+
+* No more than 10 directories will be kept open at once.
+(This number can be changed by redefining MAX_OPEN_DIRECTORIES in dir.c.)
+\f
+Version 3.25
+
+* Archive files will have their modification times recorded before doing
+anything that might change their modification times by updating an archive
+member.
+\f
+Version 3.20
+
+* The `MAKELEVEL' variable is defined for use by makefiles.
+\f
+Version 3.19
+
+* The recursion level indications in error messages are much shorter than
+they were in version 3.14.
+\f
+Version 3.18
+
+* Leading spaces before directives are ignored (as documented).
+
+* Included makefiles can determine the default goal target.
+(System V Make does it this way, so we are being compatible).
+\f
+Version 3.14.
+
+* Variables that are defaults built into Make will not be put in the
+environment for children.  This just saves some environment space and,
+except under -e, will be transparent to sub-makes.
+
+* Error messages from sub-makes will indicate the level of recursion.
+
+* Hopefully some speed-up for large directories due to a change in the
+directory hashing scheme.
+
+* One child will always get a standard input that is usable.
+
+* Default makefiles that don't exist will be remade and read in.
+\f
+Version 3.13.
+
+* Count parentheses inside expansion function calls so you can
+have nested calls: `$(sort $(foreach x,a b,$(x)))'.
+\f
+Version 3.12.
+
+* Several bug fixes, including USG and Sun386i support.
+
+* `shell' function to expand shell commands a la `
+
+* If the `-d' flag is given, version information will be printed.
+
+* The `-c' option has been renamed to `-C' for compatibility with tar.
+
+* The `-p' option no longer inhibits other normal operation.
+
+* Makefiles will be updated and re-read if necessary.
+
+* Can now run several commands at once (parallelism), -j option.
+
+* Error messages will contain the level of Make recursion, if any.
+
+* The `MAKEFLAGS' and `MFLAGS' variables will be scanned for options after
+makefiles are read.
+
+* A double-colon rule with no dependencies will always have its commands run.
+(This is how both the BSD and System V versions of Make do it.)
+\f
+Version 3.05
+
+(Changes from versions 1 through 3.05 were never recorded.  Sorry.)
+\f
+----------------------------------------------------------------------
+Copyright information:
+
+Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+
+   Permission is granted to anyone to make or distribute verbatim copies
+   of this document as received, in any medium, provided that the
+   copyright notice and this permission notice are preserved,
+   thus giving the recipient permission to redistribute in turn.
+
+   Permission is granted to distribute modified versions
+   of this document, or of portions of it,
+   under the above conditions, provided also that they
+   carry prominent notices stating who last changed them.
+\f
+Local variables:
+version-control: never
+end:
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..d496ee3
--- /dev/null
+++ b/README
@@ -0,0 +1,28 @@
+This directory contains the 3.72.8 test release of GNU Make.
+All bugs reported for previous test releases have been fixed.
+Some bugs surely remain.
+
+For general building and installation instructions, see the file INSTALL.
+If you need to build GNU Make and have no other `make' program to use,
+you can use the shell script `build.sh' instead.  To do this, first run
+`configure' as described in INSTALL.  Then, instead of typing `make' to
+build the program, type `sh build.sh'.  This should compile the program
+in the current directory.  Then you will have a Make program that you can
+use for `make install', or whatever else.
+
+It has been reported that the XLC 1.2 compiler on AIX 3.2 is buggy such
+that if you compile make with `cc -O' on AIX 3.2, it will not work correctly.
+It is said that using `cc' without `-O' does work.
+
+One area that is often a problem in configuration and porting is the code
+to check the system's current load average.  To make it easier to test and
+debug this code, you can do `make check-loadavg' to see if it works
+properly on your system.  (You must run `configure' beforehand, but you
+need not build Make itself to run this test.)
+
+See the file NEWS for what has changed since previous releases.
+
+GNU Make is fully documented in make.texinfo.  See the section entitled
+`Problems and Bugs' for information on submitting bug reports.
+
+GNU Make is free software.  See the file COPYING for copying conditions.
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644 (file)
index 0000000..d288743
--- /dev/null
@@ -0,0 +1,19 @@
+dnl
+dnl Check for a symbol
+dnl
+AC_DEFUN(AC_CHECK_SYMBOL, [dnl
+AC_MSG_CHECKING(for $1)
+AC_CACHE_VAL(ac_cv_check_symbol_$1, [dnl
+AC_TRY_LINK(, 
+changequote(,)dnl
+extern char *$1[]; puts(*$1);,
+changequote([,])dnl
+           ac_cv_check_symbol_$1=yes, ac_cv_check_symbol_$1=no)])
+if test "$ac_cv_check_symbol_$1" = yes; then
+changequote(,)dnl
+  ac_tr_symbol=`echo $1 | tr '[a-z]' '[A-Z]'`
+changequote([,])dnl
+  AC_DEFINE_UNQUOTED(HAVE_${ac_tr_symbol})
+fi
+AC_MSG_RESULT($ac_cv_check_symbol_$1)])dnl
+dnl
diff --git a/config.h.in b/config.h.in
new file mode 100644 (file)
index 0000000..fd42a5d
--- /dev/null
@@ -0,0 +1,274 @@
+/* config.h.in.  Generated automatically from configure.in by autoheader.  */
+
+/* Define if on AIX 3.
+   System headers sometimes define this.
+   We just want to avoid a redefinition error message.  */
+#ifndef _ALL_SOURCE
+#undef _ALL_SOURCE
+#endif
+
+/* Define if using alloca.c.  */
+#undef C_ALLOCA
+
+/* Define to empty if the keyword does not work.  */
+#undef const
+
+/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
+   This function is required for alloca.c support on those systems.  */
+#undef CRAY_STACKSEG_END
+
+/* Define for DGUX with <sys/dg_sys_info.h>.  */
+#undef DGUX
+
+/* Define to the type of elements in the array set by `getgroups'.
+   Usually this is either `int' or `gid_t'.  */
+#undef GETGROUPS_T
+
+/* Define if the `getloadavg' function needs to be run setuid or setgid.  */
+#undef GETLOADAVG_PRIVILEGED
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+#undef gid_t
+
+/* Define if you have alloca, as a function or macro.  */
+#undef HAVE_ALLOCA
+
+/* Define if you have <alloca.h> and it should be used (not on Ultrix).  */
+#undef HAVE_ALLOCA_H
+
+/* Define if you don't have vprintf but do have _doprnt.  */
+#undef HAVE_DOPRNT
+
+/* Define if your system has its own `getloadavg' function.  */
+#undef HAVE_GETLOADAVG
+
+/* Define if you have the getmntent function.  */
+#undef HAVE_GETMNTENT
+
+/* Define if the `long double' type works.  */
+#undef HAVE_LONG_DOUBLE
+
+/* Define if you support file names longer than 14 characters.  */
+#undef HAVE_LONG_FILE_NAMES
+
+/* Define if you have a working `mmap' system call.  */
+#undef HAVE_MMAP
+
+/* Define if system calls automatically restart after interruption
+   by a signal.  */
+#undef HAVE_RESTARTABLE_SYSCALLS
+
+/* Define if your struct stat has st_blksize.  */
+#undef HAVE_ST_BLKSIZE
+
+/* Define if your struct stat has st_blocks.  */
+#undef HAVE_ST_BLOCKS
+
+/* Define if you have the strcoll function and it is properly defined.  */
+#undef HAVE_STRCOLL
+
+/* Define if your struct stat has st_rdev.  */
+#undef HAVE_ST_RDEV
+
+/* Define if you have the strftime function.  */
+#undef HAVE_STRFTIME
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
+#undef HAVE_SYS_WAIT_H
+
+/* Define if your struct tm has tm_zone.  */
+#undef HAVE_TM_ZONE
+
+/* Define if you don't have tm_zone but do have the external array
+   tzname.  */
+#undef HAVE_TZNAME
+
+/* Define if you have <unistd.h>.  */
+#undef HAVE_UNISTD_H
+
+/* Define if utime(file, NULL) sets file's timestamp to the present.  */
+#undef HAVE_UTIME_NULL
+
+/* Define if you have <vfork.h>.  */
+#undef HAVE_VFORK_H
+
+/* Define if you have the vprintf function.  */
+#undef HAVE_VPRINTF
+
+/* Define if you have the wait3 system call.  */
+#undef HAVE_WAIT3
+
+/* Define if on MINIX.  */
+#undef _MINIX
+
+/* Define if your struct nlist has an n_un member.  */
+#undef NLIST_NAME_UNION
+
+/* Define if you have <nlist.h>.  */
+#undef NLIST_STRUCT
+
+/* Define if your C compiler doesn't accept -c and -o together.  */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+#undef pid_t
+
+/* Define if the system does not provide POSIX.1 features except
+   with this defined.  */
+#undef _POSIX_1_SOURCE
+
+/* Define if you need to in order for stat and other things to work.  */
+#undef _POSIX_SOURCE
+
+/* Define as the return type of signal handlers (int or void).  */
+#undef RETSIGTYPE
+
+/* Define if the setvbuf function takes the buffering type as its second
+   argument and the buffer pointer as the third, as on System V
+   before release 3.  */
+#undef SETVBUF_REVERSED
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at run-time.
+       STACK_DIRECTION > 0 => grows toward higher addresses
+       STACK_DIRECTION < 0 => grows toward lower addresses
+       STACK_DIRECTION = 0 => direction of growth unknown
+ */
+#undef STACK_DIRECTION
+
+/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly.  */
+#undef STAT_MACROS_BROKEN
+
+/* Define if you have the ANSI C header files.  */
+#undef STDC_HEADERS
+
+/* Define on System V Release 4.  */
+#undef SVR4
+
+/* Define if `sys_siglist' is declared by <signal.h>.  */
+#undef SYS_SIGLIST_DECLARED
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+#undef uid_t
+
+/* Define for Encore UMAX.  */
+#undef UMAX
+
+/* Define for Encore UMAX 4.3 that has <inq_status/cpustats.h>
+   instead of <sys/cpustats.h>.  */
+#undef UMAX4_3
+
+/* Define vfork as fork if vfork does not work.  */
+#undef vfork
+
+/* Define to the name of the SCCS `get' command.  */
+#undef SCCS_GET
+
+/* Define this if the SCCS `get' command understands the `-G<file>' option.  */
+#undef SCCS_GET_MINUS_G
+
+/* Define this if the C library defines the variable `sys_siglist'.  */
+#undef HAVE_SYS_SIGLIST
+
+/* Define this if the C library defines the variable `_sys_siglist'.  */
+#undef HAVE__SYS_SIGLIST
+
+/* Define this if you have the `union wait' type in <sys/wait.h>.  */
+#undef HAVE_UNION_WAIT
+
+/* Define this if the POSIX.1 call `sysconf (_SC_OPEN_MAX)' works properly.  */
+#undef HAVE_SYSCONF_OPEN_MAX
+
+/* Define if you have the dup2 function.  */
+#undef HAVE_DUP2
+
+/* Define if you have the getcwd function.  */
+#undef HAVE_GETCWD
+
+/* Define if you have the getdtablesize function.  */
+#undef HAVE_GETDTABLESIZE
+
+/* Define if you have the getgroups function.  */
+#undef HAVE_GETGROUPS
+
+/* Define if you have the mktemp function.  */
+#undef HAVE_MKTEMP
+
+/* Define if you have the psignal function.  */
+#undef HAVE_PSIGNAL
+
+/* Define if you have the setegid function.  */
+#undef HAVE_SETEGID
+
+/* Define if you have the seteuid function.  */
+#undef HAVE_SETEUID
+
+/* Define if you have the setlinebuf function.  */
+#undef HAVE_SETLINEBUF
+
+/* Define if you have the setregid function.  */
+#undef HAVE_SETREGID
+
+/* Define if you have the setreuid function.  */
+#undef HAVE_SETREUID
+
+/* Define if you have the sigsetmask function.  */
+#undef HAVE_SIGSETMASK
+
+/* Define if you have the strerror function.  */
+#undef HAVE_STRERROR
+
+/* Define if you have the strsignal function.  */
+#undef HAVE_STRSIGNAL
+
+/* Define if you have the wait3 function.  */
+#undef HAVE_WAIT3
+
+/* Define if you have the waitpid function.  */
+#undef HAVE_WAITPID
+
+/* Define if you have the <dirent.h> header file.  */
+#undef HAVE_DIRENT_H
+
+/* Define if you have the <fcntl.h> header file.  */
+#undef HAVE_FCNTL_H
+
+/* Define if you have the <limits.h> header file.  */
+#undef HAVE_LIMITS_H
+
+/* Define if you have the <mach/mach.h> header file.  */
+#undef HAVE_MACH_MACH_H
+
+/* Define if you have the <memory.h> header file.  */
+#undef HAVE_MEMORY_H
+
+/* Define if you have the <ndir.h> header file.  */
+#undef HAVE_NDIR_H
+
+/* Define if you have the <string.h> header file.  */
+#undef HAVE_STRING_H
+
+/* Define if you have the <sys/dir.h> header file.  */
+#undef HAVE_SYS_DIR_H
+
+/* Define if you have the <sys/ndir.h> header file.  */
+#undef HAVE_SYS_NDIR_H
+
+/* Define if you have the <sys/param.h> header file.  */
+#undef HAVE_SYS_PARAM_H
+
+/* Define if you have the <sys/timeb.h> header file.  */
+#undef HAVE_SYS_TIMEB_H
+
+/* Define if you have the <sys/wait.h> header file.  */
+#undef HAVE_SYS_WAIT_H
+
+/* Define if you have the <unistd.h> header file.  */
+#undef HAVE_UNISTD_H
+
+/* Define if you have the dgc library (-ldgc).  */
+#undef HAVE_LIBDGC
+
+/* Define if you have the sun library (-lsun).  */
+#undef HAVE_LIBSUN
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..16b1d8c
--- /dev/null
+++ b/configure
@@ -0,0 +1,3055 @@
+#! /bin/sh
+
+# From configure.in Id: configure.in,v 1.47 1995/02/22 03:18:18 roland Exp 
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.1.3 
+# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+export jobs with the Customs daemon (NOT SUPPORTED)"
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Initialize some other variables.
+subdirs=
+
+ac_prev=
+for ac_option
+do
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  case "$ac_option" in
+  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) ac_optarg= ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case "$ac_option" in
+
+  -build | --build | --buil | --bui | --bu | --b)
+    ac_prev=build ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*)
+    build="$ac_optarg" ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file="$ac_optarg" ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    eval "enable_${ac_feature}=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix="$ac_optarg" ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he)
+    # Omit some internal or obsolete options to make the list less imposing.
+    # This message is too long to be a string in the A/UX 3.1 sh.
+    cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+  --cache-file=FILE       cache test results in FILE
+  --help                  print this message
+  --no-create             do not create output files
+  --quiet, --silent       do not print \`checking...' messages
+  --version               print the version of autoconf that created configure
+Directory and file names:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=PREFIX    install architecture-dependent files in PREFIX
+                          [same as prefix]
+  --srcdir=DIR            find the sources in DIR [configure dir or ..]
+  --program-prefix=PREFIX prepend PREFIX to installed program names
+  --program-suffix=SUFFIX append SUFFIX to installed program names
+  --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+Host type:
+  --build=BUILD           configure for building on BUILD [BUILD=HOST]
+  --host=HOST             configure for HOST [guessed]
+  --target=TARGET         configure for TARGET [TARGET=HOST]
+Features and packages:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --x-includes=DIR        X include files are in DIR
+  --x-libraries=DIR       X library files are in DIR
+--enable and --with options recognized:$ac_help
+EOF
+    exit 0 ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host="$ac_optarg" ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix="$ac_optarg" ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix="$ac_optarg" ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix="$ac_optarg" ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name="$ac_optarg" ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site="$ac_optarg" ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir="$ac_optarg" ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target="$ac_optarg" ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers)
+    echo "configure generated by autoconf version 2.1.3"
+    exit 0 ;;
+
+  -with-* | --with-*)
+    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_${ac_package}='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    eval "with_${ac_package}=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes="$ac_optarg" ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries="$ac_optarg" ;;
+
+  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+    ;;
+
+  *) 
+    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+      echo "configure: warning: $ac_option: invalid host type" 1>&2
+    fi
+    if test "x$nonopt" != xNONE; then
+      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+    fi
+    nonopt="$ac_option"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+  exec 6>/dev/null
+else
+  exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+  case "$ac_arg" in
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c) ;;
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+  esac
+done
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=vpath.c
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_prog=$0
+  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+  else
+    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+  fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    echo "loading site script $ac_site_file"
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  echo "loading cache $cache_file"
+  . $cache_file
+else
+  echo "creating cache $cache_file"
+  > $cache_file
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} conftest.$ac_ext $CFLAGS $CPPFLAGS -c 1>&5 2>&5'
+ac_link='${CC-cc} conftest.$ac_ext $CFLAGS $CPPFLAGS $LDFLAGS -o conftest $LIBS 1>&5 2>&5'
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    ac_n= ac_c='
+' ac_t='       '
+  else
+    ac_n=-n ac_c= ac_t=
+  fi
+else
+  ac_n= ac_c='\c' ac_t=
+fi
+
+
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+fi
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+
+subdirs="glob"
+               
+echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
+set dummy ${MAKE-make}; ac_make=$2
+if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftestmake <<\EOF
+all:
+       @echo 'ac_maketemp="${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftestmake
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  SET_MAKE=
+else
+  echo "$ac_t""no" 1>&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_CC="gcc"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="cc"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+  echo "$ac_t""$CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.c <<EOF
+#ifdef __GNUC__
+  yes;
+#endif
+EOF
+if ${CC-cc} -E conftest.c 2>&5 | egrep yes >/dev/null 2>&1; then
+  ac_cv_prog_gcc=yes
+else
+  ac_cv_prog_gcc=no
+fi
+fi
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+if test $ac_cv_prog_gcc = yes; then
+  GCC=yes
+  if test "${CFLAGS+set}" != set; then
+    echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  echo 'void f(){}' > conftest.c
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+  ac_cv_prog_gcc_g=yes
+else
+  ac_cv_prog_gcc_g=no
+fi
+rm -f conftest*
+
+fi
+    echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6
+    if test $ac_cv_prog_gcc_g = yes; then
+      CFLAGS="-g -O"
+    else
+      CFLAGS="-O"
+    fi
+  fi
+else
+  GCC=
+  test "${CFLAGS+set}" = set || CFLAGS="-g"
+fi
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+if test -z "$INSTALL"; then
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    IFS="${IFS=        }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    # Account for people who put trailing slashes in PATH elements.
+    case "$ac_dir/" in
+    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+    *)
+      # OSF1 and SCO ODT 3.0 have their own names for install.
+      for ac_prog in ginstall installbsd scoinst install; do
+        if test -f $ac_dir/$ac_prog; then
+         if test $ac_prog = install &&
+            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           # OSF/1 installbsd also uses dspmsg, but is usable.
+           :
+         else
+           ac_cv_path_install="$ac_dir/$ac_prog -c"
+           break 2
+         fi
+       fi
+      done
+      ;;
+    esac
+  done
+  IFS="$ac_save_ifs"
+  # As a last resort, use the slow shell script.
+  test -z "$ac_cv_path_install" && ac_cv_path_install="$ac_install_sh"
+fi
+  INSTALL="$ac_cv_path_install"
+fi
+echo "$ac_t""$INSTALL" 1>&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    # This must be in double quotes, not single quotes, because CPP may get
+  # substituted into the Makefile and "${CC-cc}" will confuse make.
+  CPP="${CC-cc} -E"
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp.
+  cat > conftest.$ac_ext <<EOF
+#line 592 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -E -traditional-cpp"
+  cat > conftest.$ac_ext <<EOF
+#line 606 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+  ac_cv_prog_CPP="$CPP"
+fi
+fi
+CPP="$ac_cv_prog_CPP"
+echo "$ac_t""$CPP" 1>&6
+                       echo $ac_n "checking for AIX""... $ac_c" 1>&6
+cat > conftest.$ac_ext <<EOF
+#line 630 "configure"
+#include "confdefs.h"
+#ifdef _AIX
+  yes
+#endif
+
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "yes" >/dev/null 2>&1; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
+#define _ALL_SOURCE 1
+EOF
+
+else
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6
+fi
+rm -f conftest*
+
+
+echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
+if test -d /etc/conf/kconfig.d &&
+  grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
+then
+  echo "$ac_t""yes" 1>&6
+  ISC=yes # If later tests want to check for ISC.
+  cat >> confdefs.h <<\EOF
+#define _POSIX_SOURCE 1
+EOF
+
+  if test "$GCC" = yes; then
+    CC="$CC -posix"
+  else
+    CC="$CC -Xp"
+  fi
+else
+  echo "$ac_t""no" 1>&6
+  ISC=
+fi
+
+ac_safe=`echo "minix/config.h" | tr './\055' '___'`
+echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 677 "configure"
+#include "confdefs.h"
+#include <minix/config.h>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  MINIX=yes
+else
+  echo "$ac_t""no" 1>&6
+MINIX=
+fi
+
+if test "$MINIX" = yes; then
+  cat >> confdefs.h <<\EOF
+#define _POSIX_SOURCE 1
+EOF
+
+  cat >> confdefs.h <<\EOF
+#define _POSIX_1_SOURCE 2
+EOF
+
+  cat >> confdefs.h <<\EOF
+#define _MINIX 1
+EOF
+
+fi
+
+# If we cannot run a trivial program, we must be cross compiling.
+echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_c_cross=yes
+else
+cat > conftest.$ac_ext <<EOF
+#line 725 "configure"
+#include "confdefs.h"
+main(){return(0);}
+EOF
+eval $ac_link
+if test -s conftest && (./conftest; exit) 2>/dev/null; then
+  ac_cv_c_cross=no
+else
+  ac_cv_c_cross=yes
+fi
+fi
+rm -fr conftest*
+fi
+cross_compiling=$ac_cv_c_cross
+echo "$ac_t""$ac_cv_c_cross" 1>&6
+
+echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 746 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  ac_cv_header_stdc=yes
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+cat > conftest.$ac_ext <<EOF
+#line 768 "configure"
+#include "confdefs.h"
+#include <string.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "memchr" >/dev/null 2>&1; then
+  :
+else
+  rm -rf conftest*
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+cat > conftest.$ac_ext <<EOF
+#line 786 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "free" >/dev/null 2>&1; then
+  :
+else
+  rm -rf conftest*
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+if test "$cross_compiling" = yes; then
+  ac_cv_header_stdc=no
+else
+cat > conftest.$ac_ext <<EOF
+#line 807 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int main () { int i; for (i = 0; i < 256; i++)
+if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
+exit (0); }
+
+EOF
+eval $ac_link
+if test -s conftest && (./conftest; exit) 2>/dev/null; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+fi
+rm -fr conftest*
+fi
+fi
+echo "$ac_t""$ac_cv_header_stdc" 1>&6
+if test $ac_cv_header_stdc = yes; then
+  cat >> confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
+do
+ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
+echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 845 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <$ac_hdr>
+int main() { return 0; }
+int t() {
+DIR *dirp = 0;
+; return 0; }
+EOF
+if eval $ac_compile; then
+  rm -rf conftest*
+  eval "ac_cv_header_dirent_$ac_safe=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_header_dirent_$ac_safe=no"
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+ ac_header_dirent=$ac_hdr; break
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+echo $ac_n "checking for -ldir""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_dir'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldir  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 884 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+opendir()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_dir=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_dir=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'dir`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  LIBS="$LIBS -ldir"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+else
+echo $ac_n "checking for -lx""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_x'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lx  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 918 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+opendir()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_x=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_x=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'x`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  LIBS="$LIBS -lx"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+fi
+
+echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 951 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "uid_t" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_type_uid_t=yes
+else
+  rm -rf conftest*
+  ac_cv_type_uid_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_uid_t" 1>&6
+if test $ac_cv_type_uid_t = no; then
+  cat >> confdefs.h <<\EOF
+#define uid_t int
+EOF
+
+  cat >> confdefs.h <<\EOF
+#define gid_t int
+EOF
+
+fi
+                       echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_type_getgroups=cross
+else
+cat > conftest.$ac_ext <<EOF
+#line 985 "configure"
+#include "confdefs.h"
+
+/* Thanks to Mike Rendell for this test.  */
+#include <sys/types.h>
+#define NGID 256
+#undef MAX
+#define MAX(x, y) ((x) > (y) ? (x) : (y))
+main()
+{
+  gid_t gidset[NGID];
+  int i, n;
+  union { gid_t gval; long lval; }  val;
+
+  val.lval = -1;
+  for (i = 0; i < NGID; i++)
+    gidset[i] = val.gval;
+  n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
+                 gidset);
+  /* Exit non-zero if getgroups seems to require an array of ints.  This
+     happens when gid_t is short but getgroups modifies an array of ints.  */
+  exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0);
+}
+
+EOF
+eval $ac_link
+if test -s conftest && (./conftest; exit) 2>/dev/null; then
+    ac_cv_type_getgroups=gid_t
+else
+  ac_cv_type_getgroups=int
+fi
+fi
+rm -fr conftest*
+if test $ac_cv_type_getgroups = cross; then
+        cat > conftest.$ac_ext <<EOF
+#line 1020 "configure"
+#include "confdefs.h"
+#include <unistd.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "getgroups.*int.*gid_t" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_type_getgroups=gid_t
+else
+  rm -rf conftest*
+  ac_cv_type_getgroups=int
+fi
+rm -f conftest*
+
+fi
+fi
+echo "$ac_t""$ac_cv_type_getgroups" 1>&6
+cat >> confdefs.h <<EOF
+#define GETGROUPS_T $ac_cv_type_getgroups
+EOF
+
+
+echo $ac_n "checking for pid_t""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1047 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "pid_t" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_type_pid_t=yes
+else
+  rm -rf conftest*
+  ac_cv_type_pid_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_pid_t" 1>&6
+if test $ac_cv_type_pid_t = no; then
+  cat >> confdefs.h <<\EOF
+#define pid_t int
+EOF
+
+fi
+
+echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1078 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+#undef signal
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+void (*signal ()) ();
+int main() { return 0; }
+int t() {
+int i;
+; return 0; }
+EOF
+if eval $ac_compile; then
+  rm -rf conftest*
+  ac_cv_type_signal=void
+else
+  rm -rf conftest*
+  ac_cv_type_signal=int
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_type_signal" 1>&6
+cat >> confdefs.h <<EOF
+#define RETSIGTYPE $ac_cv_type_signal
+EOF
+
+
+for ac_hdr in unistd.h limits.h sys/param.h fcntl.h string.h memory.h \
+                sys/timeb.h
+do
+ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1119 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+if test "x$CC" != xcc; then
+  echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6
+else
+  echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6
+fi
+set dummy $CC; ac_cc="`echo $2 | 
+                      sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
+if eval "test \"`echo '$''{'ac_cv_prog_cc_${ac_cc}_c_o'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  eval ac_cv_prog_cc_${ac_cc}_c_o=no
+echo 'foo(){}' > conftest.c
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+if ${CC-cc} -c conftest.c -o conftest.o 1>&5 2>&5 &&
+  test -f conftest.o && ${CC-cc} -c conftest.c -o conftest.o 1>&5 2>&5
+then
+  if test "x$CC" != xcc; then
+    # Test first that cc exists at all.
+    if cc -c conftest.c 1>&5 2>&5
+    then
+      if cc -c conftest.c -o conftest2.o 1>&5 2>&5 &&
+        test -f conftest2.o && cc -c conftest.c -o conftest2.o 1>&5 2>&5
+      then
+        eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+      fi
+    fi
+  fi
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+  cat >> confdefs.h <<\EOF
+#define NO_MINUS_C_MINUS_O 1
+EOF
+
+fi
+
+echo $ac_n "checking for working const""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1195 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+
+/* Ultrix mips cc rejects this.  */
+typedef int charset[2]; const charset x;
+/* SunOS 4.1.1 cc rejects this.  */
+char const *const *ccp;
+char **p;
+/* NEC SVR4.0.2 mips cc rejects this.  */
+struct point {int x, y;};
+static struct point const zero;
+/* AIX XL C 1.02.0.0 rejects this.
+   It does not let you subtract one const X* pointer from another in an arm
+   of an if-expression whose if-part is not a constant expression */
+const char *g = "string";
+ccp = &g + (g ? g-g : 0);
+/* HPUX 7.0 cc rejects these. */
+++ccp;
+p = (char**) ccp;
+ccp = (char const *const *) p;
+{ /* SCO 3.2v4 cc rejects this.  */
+  char *t;
+  char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+  *t++ = 0;
+}
+{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+  int x[] = {25, 17};
+  const int *foo = &x[0];
+  ++foo;
+}
+{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+  typedef const int *iptr;
+  iptr p = 0;
+  ++p;
+}
+{ /* AIX XL C 1.02.0.0 rejects this saying
+     "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+  struct s { int j; const int *ap[3]; };
+  struct s *b; b->j = 5;
+}
+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+  const int foo = 10;
+}
+
+; return 0; }
+EOF
+if eval $ac_compile; then
+  rm -rf conftest*
+  ac_cv_c_const=yes
+else
+  rm -rf conftest*
+  ac_cv_c_const=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_c_const" 1>&6
+if test $ac_cv_c_const = no; then
+  cat >> confdefs.h <<\EOF
+#define const 
+EOF
+
+fi
+                       echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1267 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if defined(S_ISBLK) && defined(S_IFDIR)
+# if S_ISBLK (S_IFDIR)
+You lose.
+# endif
+#endif
+
+#if defined(S_ISBLK) && defined(S_IFCHR)
+# if S_ISBLK (S_IFCHR)
+You lose.
+# endif
+#endif
+
+#if defined(S_ISLNK) && defined(S_IFREG)
+# if S_ISLNK (S_IFREG)
+You lose.
+# endif
+#endif
+
+#if defined(S_ISSOCK) && defined(S_IFREG)
+# if S_ISSOCK (S_IFREG)
+You lose.
+# endif
+#endif
+
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "You lose" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_header_stat_broken=yes
+else
+  rm -rf conftest*
+  ac_cv_header_stat_broken=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_header_stat_broken" 1>&6
+if test $ac_cv_header_stat_broken = yes; then
+  cat >> confdefs.h <<\EOF
+#define STAT_MACROS_BROKEN 1
+EOF
+
+fi
+
+
+
+
+
+for ac_func in getdtablesize psignal mktemp \
+              dup2 getcwd sigsetmask getgroups setlinebuf \
+              seteuid setegid setreuid setregid strerror strsignal
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1329 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char $ac_func(); 
+
+int main() { return 0; }
+int t() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr '[a-z]' '[A-Z]'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+echo $ac_n "checking for sys_siglist""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_check_symbol_sys_siglist'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1378 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+extern char *sys_siglist[]; puts(*sys_siglist);
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+           ac_cv_check_symbol_sys_siglist=yes
+else
+  rm -rf conftest*
+  ac_cv_check_symbol_sys_siglist=no
+fi
+rm -f conftest*
+
+fi
+
+if test "$ac_cv_check_symbol_sys_siglist" = yes; then
+  ac_tr_symbol=`echo sys_siglist | tr '[a-z]' '[A-Z]'`
+  cat >> confdefs.h <<EOF
+#define HAVE_${ac_tr_symbol} 1
+EOF
+
+fi
+echo "$ac_t""$ac_cv_check_symbol_sys_siglist" 1>&6
+echo $ac_n "checking for _sys_siglist""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_check_symbol__sys_siglist'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1410 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+extern char *_sys_siglist[]; puts(*_sys_siglist);
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+           ac_cv_check_symbol__sys_siglist=yes
+else
+  rm -rf conftest*
+  ac_cv_check_symbol__sys_siglist=no
+fi
+rm -f conftest*
+
+fi
+
+if test "$ac_cv_check_symbol__sys_siglist" = yes; then
+  ac_tr_symbol=`echo _sys_siglist | tr '[a-z]' '[A-Z]'`
+  cat >> confdefs.h <<EOF
+#define HAVE_${ac_tr_symbol} 1
+EOF
+
+fi
+echo "$ac_t""$ac_cv_check_symbol__sys_siglist" 1>&6
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1444 "configure"
+#include "confdefs.h"
+#include <alloca.h>
+int main() { return 0; }
+int t() {
+char *p = alloca(2 * sizeof(int));
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  ac_cv_header_alloca_h=yes
+else
+  rm -rf conftest*
+  ac_cv_header_alloca_h=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_header_alloca_h" 1>&6
+if test $ac_cv_header_alloca_h = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_ALLOCA_H 1
+EOF
+
+fi
+
+echo $ac_n "checking for alloca""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_alloca'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1475 "configure"
+#include "confdefs.h"
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# if HAVE_ALLOCA_H
+#  include <alloca.h>
+# else
+#  ifdef _AIX
+ #pragma alloca
+#  else
+#   ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+#   endif
+#  endif
+# endif
+#endif
+
+int main() { return 0; }
+int t() {
+char *p = (char *) alloca(1);
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  ac_cv_func_alloca=yes
+else
+  rm -rf conftest*
+  ac_cv_func_alloca=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_func_alloca" 1>&6
+if test $ac_cv_func_alloca = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_ALLOCA 1
+EOF
+
+fi
+
+if test $ac_cv_func_alloca = no; then
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+  # that cause trouble.  Some versions do not even contain alloca or
+  # contain a buggy version.  If you still want to use their alloca,
+  # use ar to extract alloca.o from them instead of compiling alloca.c.
+  ALLOCA=alloca.o
+  cat >> confdefs.h <<\EOF
+#define C_ALLOCA 1
+EOF
+
+
+echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1533 "configure"
+#include "confdefs.h"
+#if defined(CRAY) && ! defined(CRAY2)
+webecray
+#else
+wenotbecray
+#endif
+
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "webecray" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_os_cray=yes
+else
+  rm -rf conftest*
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_os_cray" 1>&6
+if test $ac_cv_os_cray = yes; then
+for func in _getb67 GETB67 getb67; do
+  echo $ac_n "checking for $func""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_$func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1561 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char $func(); 
+
+int main() { return 0; }
+int t() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$func) || defined (__stub___$func)
+choke me
+#else
+$func();
+#endif
+
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_func_$func=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_func_$func=no"
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_func_'$func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<EOF
+#define CRAY_STACKSEG_END $func
+EOF
+; break
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+done
+fi
+
+echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_c_stack_direction=0
+else
+cat > conftest.$ac_ext <<EOF
+#line 1614 "configure"
+#include "confdefs.h"
+find_stack_direction ()
+{
+  static char *addr = 0;
+  auto char dummy;
+  if (addr == 0)
+    {
+      addr = &dummy;
+      return find_stack_direction ();
+    }
+  else
+    return (&dummy > addr) ? 1 : -1;
+}
+main ()
+{
+  exit (find_stack_direction() < 0);
+}
+EOF
+eval $ac_link
+if test -s conftest && (./conftest; exit) 2>/dev/null; then
+  ac_cv_c_stack_direction=1
+else
+  ac_cv_c_stack_direction=-1
+fi
+fi
+rm -fr conftest*
+fi
+echo "$ac_t""$ac_cv_c_stack_direction" 1>&6
+cat >> confdefs.h <<EOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+EOF
+
+fi
+
+ac_safe=`echo "vfork.h" | tr './\055' '___'`
+echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1655 "configure"
+#include "confdefs.h"
+#include <vfork.h>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define HAVE_VFORK_H 1
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+echo $ac_n "checking for working vfork""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_func_vfork=no
+else
+cat > conftest.$ac_ext <<EOF
+#line 1689 "configure"
+#include "confdefs.h"
+/* Thanks to Paul Eggert for this test.  */
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_VFORK_H
+#include <vfork.h>
+#endif
+/* On some sparc systems, changes by the child to local and incoming
+   argument registers are propagated back to the parent.
+   The compiler is told about this with #include <vfork.h>,
+   but some compilers (e.g. gcc -O) don't grok <vfork.h>.
+   Test for this by using a static variable whose address
+   is put into a register that is clobbered by the vfork.  */
+static
+#ifdef __cplusplus
+sparc_address_test (int arg)
+#else
+sparc_address_test (arg) int arg;
+#endif
+{
+  static pid_t child;
+  if (!child) {
+    child = vfork ();
+    if (child < 0)
+      perror ("vfork");
+    if (!child) {
+      arg = getpid();
+      write(-1, "", 0);
+      _exit (arg);
+    }
+  }
+}
+main() {
+  pid_t parent = getpid ();
+  pid_t child;
+
+  sparc_address_test ();
+
+  child = vfork ();
+
+  if (child == 0) {
+    /* Here is another test for sparc vfork register problems.
+       This test uses lots of local variables, at least
+       as many local variables as main has allocated so far
+       including compiler temporaries.  4 locals are enough for
+       gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe.
+       A buggy compiler should reuse the register of parent
+       for one of the local variables, since it will think that
+       parent can't possibly be used any more in this routine.
+       Assigning to the local variable will thus munge parent
+       in the parent process.  */
+    pid_t
+      p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(),
+      p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid();
+    /* Convince the compiler that p..p7 are live; otherwise, it might
+       use the same hardware register for all 8 local variables.  */
+    if (p != p1 || p != p2 || p != p3 || p != p4
+       || p != p5 || p != p6 || p != p7)
+      _exit(1);
+
+    /* On some systems (e.g. IRIX 3.3),
+       vfork doesn't separate parent from child file descriptors.
+       If the child closes a descriptor before it execs or exits,
+       this munges the parent's descriptor as well.
+       Test for this by closing stdout in the child.  */
+    _exit(close(fileno(stdout)) != 0);
+  } else {
+    int status;
+    struct stat st;
+
+    while (wait(&status) != child)
+      ;
+    exit(
+        /* Was there some problem with vforking?  */
+        child < 0
+
+        /* Did the child fail?  (This shouldn't happen.)  */
+        || status
+
+        /* Did the vfork/compiler bug occur?  */
+        || parent != getpid()
+
+        /* Did the file descriptor bug occur?  */
+        || fstat(fileno(stdout), &st) != 0
+        );
+  }
+}
+EOF
+eval $ac_link
+if test -s conftest && (./conftest; exit) 2>/dev/null; then
+  ac_cv_func_vfork=yes
+else
+  ac_cv_func_vfork=no
+fi
+fi
+rm -fr conftest*
+fi
+echo "$ac_t""$ac_cv_func_vfork" 1>&6
+if test $ac_cv_func_vfork = no; then
+  cat >> confdefs.h <<\EOF
+#define vfork fork
+EOF
+
+fi
+
+echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+else
+cat > conftest.$ac_ext <<EOF
+#line 1807 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+/* If setvbuf has the reversed format, exit 0. */
+main () {
+  /* This call has the arguments reversed.
+     A reversed system may check and see that the address of main
+     is not _IOLBF, _IONBF, or _IOFBF, and return nonzero.  */
+  if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0)
+    exit(1);
+  putc('\r', stdout);
+  exit(0);                     /* Non-reversed systems segv here.  */
+}
+EOF
+eval $ac_link
+if test -s conftest && (./conftest; exit) 2>/dev/null; then
+  ac_cv_func_setvbuf_reversed=yes
+else
+  ac_cv_func_setvbuf_reversed=no
+fi
+fi
+rm -fr conftest*
+rm -f core core.* *.core
+fi
+echo "$ac_t""$ac_cv_func_setvbuf_reversed" 1>&6
+if test $ac_cv_func_setvbuf_reversed = yes; then
+  cat >> confdefs.h <<\EOF
+#define SETVBUF_REVERSED 1
+EOF
+
+fi
+
+ac_have_func=no # yes means we've found a way to get the load average.
+
+# Some systems with -lutil have (and need) -lkvm as well, some do not.
+# On Solaris, -lkvm requires nlist from -lelf, so check that first
+# to get the right answer into the cache.
+echo $ac_n "checking for -lelf""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_elf'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lelf  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1851 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+elf_begin()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_elf=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_elf=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'elf`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  LIBS="-lelf $LIBS"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+echo $ac_n "checking for -lkvm""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_kvm'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lkvm  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1884 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+kvm_open()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_kvm=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_kvm=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'kvm`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  LIBS="-lkvm $LIBS"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+# Check for the 4.4BSD definition of getloadavg.
+echo $ac_n "checking for -lutil""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_util'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lutil  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1918 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+getloadavg()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_util=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_util=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'util`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+if test $ac_have_func = no; then
+  # There is a commonly available library for RS/6000 AIX.
+  # Since it is not a standard part of AIX, it might be installed locally.
+  ac_save_LIBS="$LIBS" LIBS="-L/usr/local/lib $LIBS"
+  echo $ac_n "checking for -lgetloadavg""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_getloadavg'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lgetloadavg  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1956 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+getloadavg()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_getloadavg=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_getloadavg=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'getloadavg`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  LIBS="-lgetloadavg $LIBS"
+else
+  echo "$ac_t""no" 1>&6
+LIBS="$ac_save_LIBS"
+fi
+
+fi
+
+# Make sure it is really in the library, if we think we found it.
+for ac_func in getloadavg
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1993 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char $ac_func(); 
+
+int main() { return 0; }
+int t() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  :
+else
+  echo "$ac_t""no" 1>&6
+LIBOBJS="$LIBOBJS ${ac_func}.o"
+fi
+
+done
+
+
+if test $ac_cv_func_getloadavg = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_GETLOADAVG 1
+EOF
+
+  ac_have_func=yes
+else
+  # Figure out what our getloadavg.c needs.
+  ac_have_func=no
+  ac_safe=`echo "sys/dg_sys_info.h" | tr './\055' '___'`
+echo $ac_n "checking for sys/dg_sys_info.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2051 "configure"
+#include "confdefs.h"
+#include <sys/dg_sys_info.h>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  ac_have_func=yes; cat >> confdefs.h <<\EOF
+#define DGUX 1
+EOF
+
+  echo $ac_n "checking for -ldgc""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_dgc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldgc  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2080 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+dg_sys_info()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_dgc=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_dgc=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'dgc`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo dgc | tr '[a-z]' '[A-Z]'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-ldgc $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+  # We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
+  # uses stabs), but it is still SVR4.  We cannot check for <elf.h> because
+  # Irix 4.0.5F has the header but not the library.
+  if test $ac_have_func = no && test $ac_cv_lib_elf = yes; then
+    ac_have_func=yes; cat >> confdefs.h <<\EOF
+#define SVR4 1
+EOF
+
+  fi
+
+  if test $ac_have_func = no; then
+    ac_safe=`echo "inq_stats/cpustats.h" | tr './\055' '___'`
+echo $ac_n "checking for inq_stats/cpustats.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2134 "configure"
+#include "confdefs.h"
+#include <inq_stats/cpustats.h>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  ac_have_func=yes; cat >> confdefs.h <<\EOF
+#define UMAX 1
+EOF
+
+    cat >> confdefs.h <<\EOF
+#define UMAX4_3 1
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  fi
+
+  if test $ac_have_func = no; then
+    ac_safe=`echo "sys/cpustats.h" | tr './\055' '___'`
+echo $ac_n "checking for sys/cpustats.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2173 "configure"
+#include "confdefs.h"
+#include <sys/cpustats.h>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  ac_have_func=yes; cat >> confdefs.h <<\EOF
+#define UMAX 1
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  fi
+
+  if test $ac_have_func = no; then
+    for ac_hdr in mach/mach.h
+do
+ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2210 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+  fi
+
+  ac_safe=`echo "nlist.h" | tr './\055' '___'`
+echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2246 "configure"
+#include "confdefs.h"
+#include <nlist.h>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define NLIST_STRUCT 1
+EOF
+
+  echo $ac_n "checking for n_un in struct nlist""... $ac_c" 1>&6
+  if eval "test \"`echo '$''{'ac_cv_struct_nlist_n_un'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2273 "configure"
+#include "confdefs.h"
+#include <nlist.h>
+int main() { return 0; }
+int t() {
+struct nlist n; n.n_un.n_name = 0;
+; return 0; }
+EOF
+if eval $ac_compile; then
+  rm -rf conftest*
+  ac_cv_struct_nlist_n_un=yes
+else
+  rm -rf conftest*
+  ac_cv_struct_nlist_n_un=no
+fi
+rm -f conftest*
+
+fi
+  echo "$ac_t""$ac_cv_struct_nlist_n_un" 1>&6
+  if test $ac_cv_struct_nlist_n_un = yes; then
+    cat >> confdefs.h <<\EOF
+#define NLIST_NAME_UNION 1
+EOF
+
+  fi
+  
+else
+  echo "$ac_t""no" 1>&6
+fi
+fi # Do not have getloadavg in system libraries.
+
+# Some definitions of getloadavg require that the program be installed setgid.
+echo $ac_n "checking whether getloadavg requires setgid""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_getloadavg_setgid'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2310 "configure"
+#include "confdefs.h"
+#include "$srcdir/getloadavg.c"
+#ifdef LDAV_PRIVILEGED
+Yowza Am I SETGID yet
+#endif
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "Yowza Am I SETGID yet" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_func_getloadavg_setgid=yes
+else
+  rm -rf conftest*
+  ac_cv_func_getloadavg_setgid=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_func_getloadavg_setgid" 1>&6
+if test $ac_cv_func_getloadavg_setgid = yes; then
+  NEED_SETGID=true; cat >> confdefs.h <<\EOF
+#define GETLOADAVG_PRIVILEGED 1
+EOF
+
+else
+  NEED_SETGID=false
+fi
+
+if test $ac_cv_func_getloadavg_setgid = yes; then
+  echo $ac_n "checking group of /dev/kmem""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_group_kmem'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    # On Solaris, /dev/kmem is a symlink.  Get info on the real file.
+  ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null`
+  # If we got an error (system does not support symlinks), try without -L.
+  test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem`
+  ac_cv_group_kmem=`echo $ac_ls_output \
+    | sed -ne 's/[     ][      ]*/ /g;
+              s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\)  *.*/\1/;
+              / /s/.* //;p;'`
+
+fi
+  KMEM_GROUP=$ac_cv_group_kmem
+  echo "$ac_t""$KMEM_GROUP" 1>&6
+fi
+
+echo $ac_n "checking for strcoll""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_strcoll'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_func_strcoll=no
+else
+cat > conftest.$ac_ext <<EOF
+#line 2365 "configure"
+#include "confdefs.h"
+#include <string.h>
+main ()
+{
+  exit (strcoll ("abc", "def") >= 0 ||
+       strcoll ("ABC", "DEF") >= 0 ||
+       strcoll ("123", "456") >= 0);
+}
+EOF
+eval $ac_link
+if test -s conftest && (./conftest; exit) 2>/dev/null; then
+  ac_cv_func_strcoll=yes
+else
+  ac_cv_func_strcoll=no
+fi
+fi
+rm -fr conftest*
+fi
+echo "$ac_t""$ac_cv_func_strcoll" 1>&6
+if test $ac_cv_func_strcoll = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_STRCOLL 1
+EOF
+
+fi
+
+
+if test $ac_cv_func_getdtablesize = no; then
+  echo $ac_n "checking for sysconf (_SC_OPEN_MAX)""... $ac_c" 1>&6
+  if eval "test \"`echo '$''{'make_cv_sysconf_open_max'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    cat > conftest.$ac_ext <<EOF
+#line 2399 "configure"
+#include "confdefs.h"
+#include <unistd.h>
+int main() { return 0; }
+int t() {
+int max = sysconf (_SC_OPEN_MAX);
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  make_cv_sysconf_open_max=yes
+else
+  rm -rf conftest*
+  make_cv_sysconf_open_max=no
+fi
+rm -f conftest*
+
+fi
+
+  if test $make_cv_sysconf_open_max = yes; then
+    cat >> confdefs.h <<\EOF
+#define HAVE_SYSCONF_OPEN_MAX 1
+EOF
+
+  fi
+  echo "$ac_t""$make_cv_sysconf_open_max" 1>&6
+fi
+
+# Check out the wait reality.
+for ac_hdr in sys/wait.h
+do
+ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2436 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ac_err=`grep -v '^ *+' conftest.out`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+ for ac_func in waitpid wait3
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2470 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+char $ac_func(); 
+
+int main() { return 0; }
+int t() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr '[a-z]' '[A-Z]'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+echo $ac_n "checking for union wait""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'make_cv_union_wait'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2519 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/wait.h>
+int main() { return 0; }
+int t() {
+union wait status; int pid; pid = wait (&status);
+#ifdef WEXITSTATUS
+/* Some POSIXoid systems have both the new-style macros and the old
+   union wait type, and they do not work together.  If union wait
+   conflicts with WEXITSTATUS et al, we don't want to use it at all.  */
+if (WEXITSTATUS (status) != 0) pid = -1;
+#ifdef WTERMSIG
+/* If we have WEXITSTATUS and WTERMSIG, just use them on ints.  */
+-- blow chunks here --
+#endif
+#endif
+#ifdef HAVE_WAITPID
+/* Make sure union wait works with waitpid.  */
+pid = waitpid (-1, &status, 0);
+#endif
+
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  make_cv_union_wait=yes
+else
+  rm -rf conftest*
+  make_cv_union_wait=no
+fi
+rm -f conftest*
+
+fi
+
+if test "$make_cv_union_wait" = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_UNION_WAIT 1
+EOF
+
+fi
+echo "$ac_t""$make_cv_union_wait" 1>&6
+
+echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2567 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h.  */
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+int main() { return 0; }
+int t() {
+char *msg = *(sys_siglist + 1);
+; return 0; }
+EOF
+if eval $ac_compile; then
+  rm -rf conftest*
+  ac_cv_decl_sys_siglist=yes
+else
+  rm -rf conftest*
+  ac_cv_decl_sys_siglist=no
+fi
+rm -f conftest*
+
+fi
+echo "$ac_t""$ac_cv_decl_sys_siglist" 1>&6
+if test $ac_cv_decl_sys_siglist = yes; then
+  cat >> confdefs.h <<\EOF
+#define SYS_SIGLIST_DECLARED 1
+EOF
+
+fi
+
+
+# The presence of the following is not meant to imply
+# that make necessarily works on those systems.
+echo $ac_n "checking for -lsun""... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_lib_sun'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lsun  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2608 "configure"
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() {
+getpwnam()
+; return 0; }
+EOF
+if eval $ac_link; then
+  rm -rf conftest*
+  eval "ac_cv_lib_sun=yes"
+else
+  rm -rf conftest*
+  eval "ac_cv_lib_sun=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'sun`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo sun | tr '[a-z]' '[A-Z]'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lsun $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+ REMOTE=stub
+# Check whether --with-customs or --without-customs was given.
+withval="$with_customs"
+if test -n "$withval"; then
+  REMOTE=cstms LIBS="$LIBS libcustoms.a"
+fi
+
+
+echo checking for location of SCCS get command
+if test -f /usr/sccs/get; then
+  SCCS_GET=/usr/sccs/get
+  cat >> confdefs.h <<\EOF
+#define SCCS_GET "/usr/sccs/get"
+EOF
+
+else
+  SCCS_GET=get
+  cat >> confdefs.h <<\EOF
+#define SCCS_GET "get"
+EOF
+
+fi
+ac_clean_files="$ac_clean_files s.conftest conftoast" # Remove these later.
+if ( /usr/sccs/admin -n s.conftest || admin -n s.conftest ) >/dev/null 2>&1 &&
+   test -f s.conftest; then
+  # We successfully created an SCCS file.
+  echo checking if SCCS get command understands -G
+  if $SCCS_GET -Gconftoast s.conftest >/dev/null 2>&1 &&
+     test -f conftoast; then
+    cat >> confdefs.h <<\EOF
+#define SCCS_GET_MINUS_G 1
+EOF
+
+  fi
+fi
+rm -f s.conftest conftoast
+
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs.  It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already.  You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+  sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
+  >> confcache
+if cmp -s $cache_file confcache; then
+  :
+else
+  if test -w $cache_file; then
+    echo "updating cache $cache_file"
+    cat confcache > $cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+DEFS=-DHAVE_CONFIG_H
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+  case "\$ac_option" in
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+    echo "$CONFIG_STATUS generated by autoconf version 2.1.3"
+    exit 0 ;;
+  -help | --help | --hel | --he | --h)
+    echo "\$ac_cs_usage"; exit 0 ;;
+  *) echo "\$ac_cs_usage"; exit 1 ;;
+  esac
+done
+
+ac_given_srcdir=$srcdir
+ac_given_INSTALL="$INSTALL"
+
+trap 'rm -fr `echo Makefile build.sh config.h | tr : " "` conftest*; exit 1' 1 2 15
+
+# Protect against being on the right side of a sed subst in config.status. 
+sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; 
+ s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
+$ac_vpsub
+$extrasub
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@subdirs@%$subdirs%g
+s%@SET_MAKE@%$SET_MAKE%g
+s%@CC@%$CC%g
+s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+s%@INSTALL_DATA@%$INSTALL_DATA%g
+s%@CPP@%$CPP%g
+s%@LIBOBJS@%$LIBOBJS%g
+s%@ALLOCA@%$ALLOCA%g
+s%@NEED_SETGID@%$NEED_SETGID%g
+s%@KMEM_GROUP@%$KMEM_GROUP%g
+s%@REMOTE@%$REMOTE%g
+
+CEOF
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"Makefile build.sh"}
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  # Adjust relative srcdir, etc. for subdirectories.
+
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+    # The file is in a subdirectory.
+    test ! -d "$ac_dir" && mkdir "$ac_dir"
+    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+  else
+    ac_dir_suffix= ac_dots=
+  fi
+
+  case "$ac_given_srcdir" in
+  .)  srcdir=.
+      if test -z "$ac_dots"; then top_srcdir=.
+      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+  *) # Relative path.
+    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  case "$ac_given_INSTALL" in
+  [/$]*) INSTALL="$ac_given_INSTALL" ;;
+  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+  esac
+  echo creating "$ac_file"
+  rm -f "$ac_file"
+  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+  case "$ac_file" in
+  *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+  *) ac_comsub= ;;
+  esac
+  sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+s%@INSTALL@%$INSTALL%g
+" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file
+fi; done
+rm -f conftest.subs
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
+ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_uB='\([     ]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+CONFIG_HEADERS=${CONFIG_HEADERS-"config.h"}
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  echo creating $ac_file
+
+  rm -f conftest.frag conftest.in conftest.out
+  cp $ac_given_srcdir/$ac_file_in conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h.  And first:
+# Protect against being on the right side of a sed subst in config.status. 
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+s%^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+# Maximum number of lines to put in a single here document.
+ac_max_here_lines=12
+
+rm -f conftest.tail
+while :
+do
+  ac_lines=`grep -c . conftest.vals`
+  # grep -c gives empty output for an empty file on some AIX systems.
+  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+  # Write a limited-size here document to conftest.frag.
+  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+  echo 'CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+  rm -f conftest.vals
+  mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+  rm -f conftest.frag conftest.h
+  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
+  cat conftest.in >> conftest.h
+  rm -f conftest.in
+  if cmp -s $ac_file conftest.h 2>/dev/null; then
+    echo "$ac_file is unchanged"
+    rm -f conftest.h
+  else
+    rm -f $ac_file
+    mv conftest.h $ac_file
+  fi
+fi; done
+
+
+
+# Makefile uses this timestamp file to know when to remake Makefile,
+# build.sh, and glob/Makefile.
+touch stamp-config
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
+if test "$no_recursion" != yes; then
+
+  # Remove --cache-file and --srcdir arguments so they do not pile up.
+  ac_sub_configure_args=
+  ac_prev=
+  for ac_arg in $ac_configure_args; do
+    if test -n "$ac_prev"; then
+      ac_prev=
+      continue
+    fi
+    case "$ac_arg" in
+    -cache-file | --cache-file | --cache-fil | --cache-fi \
+    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+      ac_prev=cache_file ;;
+    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+      ;;
+    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+      ac_prev=srcdir ;;
+    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+      ;;
+    *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
+    esac
+  done
+
+  for ac_config_dir in glob; do
+
+    # Do not complain, so a configure script can configure whichever
+    # parts of a large source tree are present.
+    if test ! -d $srcdir/$ac_config_dir; then
+      continue
+    fi
+
+    echo configuring in $ac_config_dir
+
+    case "$srcdir" in
+    .) ;;
+    *)
+      if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :;
+      else
+        { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; }
+      fi
+      ;;
+    esac
+
+    ac_popdir=`pwd`
+    cd $ac_config_dir
+
+    case "$srcdir" in
+    .) # No --srcdir option.  We are building in place.
+      ac_sub_srcdir=$srcdir ;;
+    /*) # Absolute path.
+      ac_sub_srcdir=$srcdir/$ac_config_dir ;;
+    *) # Relative path.
+      ac_sub_srcdir=../$srcdir/$ac_config_dir ;;
+    esac
+
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_sub_srcdir/configure; then
+      ac_sub_configure=$ac_sub_srcdir/configure
+    elif test -f $ac_sub_srcdir/configure.in; then
+      ac_sub_configure=$ac_configure
+    else
+      echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2
+      ac_sub_configure=
+    fi
+
+    # The recursion is here.
+    if test -n "$ac_sub_configure"; then
+
+      # Make the cache file name correct relative to the subdirectory.
+      # A "../" for each directory in /$ac_config_dir.
+      ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
+      case "$cache_file" in
+      /*) ac_sub_cache_file=$cache_file ;;
+      *) # Relative path.
+        ac_sub_cache_file="$ac_dots$cache_file" ;;
+      esac
+  case "$ac_given_INSTALL" in
+        [/$]*) INSTALL="$ac_given_INSTALL" ;;
+        *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+        esac
+
+      echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
+      # The eval makes quoting arguments work.
+      if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir
+      then :
+      else
+        { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; }
+      fi
+    fi
+
+    cd $ac_popdir
+  done
+fi
+
+
diff --git a/loadtest.c b/loadtest.c
new file mode 100644 (file)
index 0000000..19b80f6
--- /dev/null
@@ -0,0 +1,31 @@
+extern volatile void exit (int);
+extern double load_average (void);
+
+double max_load_average = -1;
+unsigned int job_slots_used = 0;
+
+
+int
+main ()
+{
+  printf ("load_average () = %.2f\n", load_average ());
+  exit (0);
+}
+
+void
+error (char *fmt, ...)
+{
+  exit (1);
+}
+
+void 
+perror_with_name (char *a, char *b)
+{
+  exit (1);
+}
+
+void
+wait_for_children (int i)
+{
+  return;
+}
diff --git a/version.c b/version.c
new file mode 100644 (file)
index 0000000..ca20716
--- /dev/null
+++ b/version.c
@@ -0,0 +1,7 @@
+char *version_string = "3.72.8";
+\f
+/*
+  Local variables:
+  version-control: never
+  End:
+ */