2003-07-23 Gary Holt * makepp_builtin_rules.mk: support percent_subdirs for C++ compilation rules (bug reported by Chris van Engelen). 2003-07-18 Gary Holt * 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 * 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 * makepp (parse_command_line): Fix wrong order of processing of -I options. (Fix submitted by Chris van Engelen.) 2003-07-08 Gary Holt * Makefile.pm (parse_rule): Fix bug that caused an undefined value message when expanding the :foreach clause. 2003-07-07 Gary Holt * 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 * 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 * 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 * makepp (load_repository): Fix bug where implicit loading of makefiles gotten from repositories ceased to work. 2003-06-25 Gary Holt * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Makesubs.pm ($?): Make it equal to $+, not $^, to match the documentation. 2003-05-01 Gary Holt * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Makefile.pm (expand_expression): Fixed strange error message when an unknown function was called. Version 1.06 released. 2000-12-05 Gary Holt * 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 * 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 * 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 * 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 * 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 * 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.