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.