2001-01-01  Gary Holt  <holt@lnc.usc.edu>

	* FileInfo_makepp.pm (set_rule): Don't give a warning message
	that the new rule was seen after the target was rebuilt, if the
	target was rebuilt in order to rebuild the makefile.

	* Makefile.pm (read_makefile_line and friends): Read the whole
	makefile in at once, so we can know before parsing any rule
	whether there is a $(MAKE) anywhere in the makefile.
	(parse_rule): If the makefile contained $(MAKE), turn off implicit
	loading.
	(parse_rule): Support .SUFFIXES: with a blank target to suppress
	loading of builtin rules.

	* makepp (build): Don't save build information for targets which
	invoke recursive make.
	(build): If the makefile contained $(MAKE), turn off implicit loading.

	* Makefile.pm (read_makefile_line_stripped): Look for $(MAKE) and
	set the RECURSIVE_MAKE flag if true

2000-12-29  Gary Holt  <holt@lnc.usc.edu>

	* Makesubs.pm (f_MAKE): If --traditional-recursive-make, put the
	path to the perl binary into $(MAKE) in case the #!/usr/bin/perl
	path isn't what we were run with.
	(scanner_c_compilation): Use c_compilation_md5 for C compilation,
	if the Digest::MD5 module is actually available.

2000-12-27  Gary Holt  <holt@lnc.usc.edu>

	* makepp (build): Shorten the phony target warning message so
	it's not so overwhelming, at least after the first warning.

	* Rule.pm (find_all_targets_dependencies): remove any dependencies
	where a file depends on itself.  The linux kernel has a couple of
	examples of this (which I assume are mistakes).  Later we'll have
	to handle these differently when we implement iteration to a fixed
	point.

	* Makefile.pm (parse_rule): Fix a bug where we weren't properly
	keeping track of the depth of pattern rule inference.
	(parse_assignment): Broke out code to parse
	assignments into a separate function so it was easier to modify.
	Support indirect assignments (e.g., $(xyz) = value instead of 
	xyz=value), which are needed for the linux kernel.
	(expand_expression): Expand variable values that were set on the
	command line again, so if they contain '$(var)' it is set
	properly.  The gcc makefiles actually depended o this.

	* Makesubs.pm (f_foreach): Support the GNU make foreach function.
	We need this to compile the linux kernel.
	(f_if): Support partial evaluation on the operands.
	(f_join): New function needed for linux kernel.
	
2000-12-26  Gary Holt  <holt@lnc.usc.edu>

	* Makesubs.pm (s_include): Look in the makefile structure for the
	include path.
	(s_load_makefile): Support -I on the line.

	* makepp (parse_command_line): Added support for the -Idir option.

	* Makefile.pm (load): load in a default rules makefile before
	reading in each makefile.  Also, if there's no makefile in a
	directory, read in only the default rules makefile.  This is the
	way we support builtin rules.
	Keep the include path in the makefile structure, so it can be
	different for different makefiles.
	Allow the same makefile to apply to multiple directories--there's
	no reason to disallow that, and it's getting in the way of loading
	the default makefile.
	Support the MAKEFILES environment variable.
	
2000-12-25  Gary Holt  <holt@lnc.usc.edu>

	* Makesubs.pm: autoload a larger fraction of the subroutines.  Put
	infer_objects into Makesubs so it doesn't have to be activated
	with that silly "include infer_objects.mk" statement.

	Also, added support for infer_libraries and infer_linker.  Added
	support for all the various variables that GNU make has default
	values for.

2000-12-06  Gary Holt  <holt@lnc.usc.edu>

	* Makefile.pm (expand_expression): Fixed strange error message
	when an unknown function was called.

Version 1.06 released.

2000-12-05  Gary Holt  <holt@lnc.usc.edu>

	* makepp (parse_command_line): Set up the variable MAKECMDGOALS.

	* Makefile.pm (parse_rule): Fixed another bug with indented rules
	that cropped up in Werner Lemberg's freetype2 CVS sources.

2000-12-03  Gary Holt  <holt@lnc.usc.edu>

	* FileInfo.pm (is_writable): Fixed bug where a file called
	.testfile was left around because of a trailing space on the
	filename.  Also changed the filename to .makepp_testfile so it's
	less likely to collide with any other file.

	* Makefile.pm (load): fixed bug where makefiles loaded with -f
	were also implicitly loaded while trying to build the makefile,
	causing problems if the makefile was in a different directory.

Version 1.05 released.


2000-11-26  Gary Holt  <holt@lnc.usc.edu>

	* Makefile.pm (expand_text): Support the --norc_substitution
	option so we can handle those weird makefiles that need trailing
	space on variables.

	* TextSubs.pm (split_on_colon): don't look for colons after a
	semicolon.  This solves a bug with a rule that looks like this:
	    $(srcdir)/cat-id-tbl.c: stamp-cat-id; @:

Version 1.03 released.
	
2000-11-11  Gary Holt  <holt@lnc.usc.edu>

	* MakeEvent.pm: simply increment a value in the signal handler,
	rather than pushing something onto an array.  This seems to fix
	the erratic perl core dumps that we were having.
	
	* Makefile.pm (parse_rule): use filesubst instead of patsubst for
	pattern rules, so we handle directory aliases properly.
	
	* Makesubs.pm (f_filesubst): new function to handle directory
	names like "./src" which were making patsubst fail when used with 
	GNU make style pattern rules.

2000-11-02  Gary Holt  <holt@lnc.usc.edu>

	* Makefile.pm (parse_rule): Attempt to fix problems with indented
	rules using a much more complicated heuristic.

	* Makesubs.pm (scanner_c_compilation): fixed bug where indented
	#includes were not found.

2000-10-27  Gary Holt  <holt@lnc.usc.edu>

	* Glob.pm (find_real_subdirs): avoid usage of undefined value
	warning if the directory doesn't exist.

	* Rule.pm (find_all_targets_dependencies): return the explicitly
	targets and dependencies in the order they were specified, so they
	are built in a predictable order.  Previously, they were returned
	in a random order.