2003-07-23  Gary Holt  <holt@gholt.net>

	* makepp_builtin_rules.mk: support percent_subdirs for C++
	compilation rules (bug reported by Chris van Engelen).

2003-07-18  Gary Holt  <holt@gholt.net>

	* Signature/c_compilation_md5.pm (signature): Scan files using
	lexer even if they don't have typical C/C++ extensions, as long as
	they aren't binary files.  This allows us to handle include files
	with odd suffixes gracefully.

	* Makesubs.pm (f_shell): Fix bug first reported by Chris van
	Engelen where $(shell ) was returning a null string.

2003-07-13  Gary Holt  <holt@gholt.net>

	* Makesubs.pm (f_find_upwards, s_include): Add fix for problem
	mentioned by mlovel, where going upwards indefinitely caused
	problems with an automounter.

2003-07-11  Gary Holt  <holt@gholt.net>

	* makepp (parse_command_line): Fix wrong order of processing of -I
	options.  (Fix submitted by Chris van Engelen.)

2003-07-08  Gary Holt  <holt@gholt.net>

	* Makefile.pm (parse_rule): Fix bug that caused an undefined
	value message when expanding the :foreach clause.

2003-07-07  Gary Holt  <holt@gholt.net>

	* Makefile.pm (read_makefile_line_stripped): Improve compatibility
	with GNU make, where ifdef on a variable set to a null string
	is false, not true.

2003-07-03  Gary Holt  <holt@gholt.net>

	* Makesubs.pm (f_origin): Support this function--there's no reason
	why we can't, and it simplifies using existing makefiles.

	* makepp_builtin_rules.mk: Move the default values for variables
	like CC, etc., back into Makesubs because they weren't accessible
	until very late: makepp_builtin_rules.mk wasn't loaded until after
	makefiles were parsed.

2003-06-30  Gary Holt  <holt@gholt.net>

	* config.pl, install.pl: Blow up if it's perl 5.005_02, since
	there are still people out there running that broken version.

2003-06-28  Gary Holt  <holt@gholt.net>

	* makepp (load_repository): Fix bug where implicit loading of
	makefiles gotten from repositories ceased to work.

2003-06-25  Gary Holt  <gholt@holt-family.org>

	* FileInfo_makepp.pm (exists_or_can_be_built): If a file is
	unreadable, ignore it entirely.  This enables users to remove a
	file and not have it copied in from the repository.

	* makepp (load_repository and other places): if a directory is not
	writable, don't attempt to link files into it from the repository.
	Creating an unwritable directory enables users to disable the
	repository for a specific directory.

	* Makesubs.pm (s_sub): Add no_strict to prevent errors accessing 
	variables.

2003-06-21  Gary Holt  <gholt@holt-family.org>

	* Makesubs.pm: Get rid of the SelfLoader, because it isn't working
	under 5.8.0 on Cygwin, and I'm not really sure it saves anything 
	anyway.  Reorganize file so it's easier to find things.

2003-06-20  Gary Holt  <holt@gholt.net>

	* makepp_builtin_rules.mk: move definitions of all these things
	here so they can be seen and understood by other people more
	easily.  Also cleans up the clutter in Makesubs.pm.

2003-06-18  Gary Holt  <holt@gholt.net>

	* Makesubs.pm (s_no_implicit_load): Expand variables in the
	no_implicit_load statement.
	(f_find_upwards, f_relative_filename, f_relative_to): New
	functions from Matthew Lovell.

	* Support target-specific assignments.

2003-06-15  Gary Holt  <holt@gholt.net>

	* makepp (print_error): Fix bug where --verbose output messages to a 
	file called &STDOUT (reported by mlovell).

	* Makefile.pm (expand_text): Minor change to expand_text to speed
	up processing when there are no $.

2003-06-14  Gary Holt  <holt@gholt.net>

	* Signature/c_compilation_md5.pm: improve handling of whitespace
	so that newlines do affect the signature but trailing whitespace
	on a line does not.

2003-06-13  Gary Holt  <holt@gholt.net>

	* makepp_tests/run_tests.pl: Add an is_relevant script in the
	tests so that we can easily skip tests on different platforms.
	This was intended to be able to skip the C compilation test on
	platforms where we can't find a C compiler.

	* configure: New gnu-like configure command so that configuration
	is more like other products.

	* makepp: New system for updating the version number
	automatically.  VERSION is the only file that actually contains
	the number.

2003-05-02  Gary Holt  <holt@gholt.net>

	* Makesubs.pm ($?): Make it equal to $+, not $^, to match the
	documentation.

2003-05-01  Gary Holt  <holt@gholt.net>

	* doc/incompat.html: Note that whitespace in variable names is not
	supported.

	* Makesubs.pm (scanner_c_compilation): Support -I and -L with
	spaces after them in the c command line scanner.

Version 1.18 released:
	
2002-01-09  Gary Holt  <gholt@barth.pulsent.com>

	* Makesubs.pm (scanner_skip_word): Remove broken libtool scanner,
	since libtool has changed and the current version didn't work
	anyway.  More work is still needed for seemless libtool support.

	* Clean up documentation and fix a few other minor things for the
	next release.

2001-10-08  Gary Holt  <gholt@barth.pulsent.com>

	* FileInfo_makepp.pm (set_rule): Give a warning if the same
	pattern rule makes the output file in two different ways.  (This
	can happen if some funny things are done with the directory, for
	example.)

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

	* TextSubs.pm (pattern_substitution): Incorporated Roman
	Levenstein's fix to copy words that don't match the pattern into
	the output string unmodified.

Version 1.10 released.
	
	Lots of changes I forgot to log to support signature methods
	better.
	
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.
