MAKEPP_RELEASE_NOTES(1) | Makepp | MAKEPP_RELEASE_NOTES(1) |
makepp_release_notes -- Major changes in each version of makepp
The items are roughly ordered by increasing age, so you need to read only the first parts if you've been using snapshots newer than 1.40.
Within "$(call)", the special variables "$0, $1, ..., $(11), ..." are now expanded like any other make variable. This causes slight differences to the previous work around. The result is closer to gmake, at least if "makepp_simple_concatenation=1" is set.
New option --stop-after-loading gives makepp a headstart while you're still editing.
New options --rm-stale, --sandbox and --dont-read, for sandbox control when running multiple concurrent (possibly distributed) makepp commands.
Makepp will now also look for options in files called .makepprc. The option --args-file is now consistently available on all commands.
The environment variable MAKEPP_CASE_SENSITIVE_FILENAMES supercedes the options --case-sensitive-filenames and --no-case-sensitive-filenames.
Removed "--keep-repository-links" option, the behaviour of which is now the default.
All utilities now also query an environment variable for presetting options. Each one is called like the utility in upper case, with FLAGS added, e.g. $MAKEPPCLEANFLAGS or $MAKEPPLOGFLAGS.
Short command line options may now be grouped in the Unix way, so "-k -j 4" may be given as "-kj4". In all long options the dash between words may now consistently be omitted or replaced with an underscore, so that "--no-log" can be "--nolog" or "--no_log". Unknown options now cause an error.
For advanced users: The new interface consists of the "register_parser" or "register_command_parser" statements, the ":parser" rule option and the "p_*" parser factory functions which get aliased to their parser class as "factory". The misnamed "register_scanner" statement, ":scanner" rule option and ":scanner_*" or ":parser_*" functions are deprecated.
In case you did Perl programming for your makefiles, and you made use of some internals this would break your build. Therefore there is a temporary backward compatibility feature, to be removed in the future, which you can activate during installation. The new environment variable $MAKEPP_INSTALL_OLD_MODULES is checked for a list of old modules you want created as wrappers around the new ones. Additionally if you have makefiles you can't quickly change, which rely on these things being available without a "use" statement, you must prefix those modules with a "+", to get them preloaded:
MAKEPP_INSTALL_OLD_MODULES='+Glob Rule +MakeEvent'
There are the following builtin commands: &chmod, &cp, &cut, &echo, &expr, &grep, &install, &ln, &mkdir, &mv, &perl, &preprocess, &printf, &rm, &sed, &sort, &template, &touch, &uninstall, &uniq and &yes, which can replace Unix commands of the same name, and more or less also the following: "awk", "chgrp", "chown", "head", "m4", "rmdir", "tail" and "tr". They are also available stand-alone from the Shell. They can also be used as functions, e.g. "$(&cat file)", or as statements, or standalone.
Note that, unlike earlier CVS versions, "&cut -f", "&grep -v" and "&sort -r" now behave as in Unix. Note that in earlier CVS versions of &template "@@" was processed before "@", but now lines are consistently handled front to back.
The root of the file system is then automatically marked for "--dont-build", so that makepp doesn't go messing into other directories you include or use libs from, just because they happen to have a Makefile or sources.
Usually this means that the root of your build system gets marked for "--do-build". If, however, you say "--do-build" for something under your build system root, which doesn't inherit "--dont-build", then instead your build system root gets marked for "--dont-build".
Thanks to Anders Johnson and Daniel Pfeiffer for major contributions of code to this release.
Special thanks to Matthew Lovell and Chris van Engelen for lots of suggestions and tracking down problems in the code.
The most important change was support for the Cygwin build environment. You can now run makepp with the Cygwin version of Perl; I do not think it will work properly with the native Windows version of Perl yet.
A few other bug fixes went into this release.
The most important change in this version is that makepp can accept a vastly larger number of makefiles without any command line options because of some changes to the implementation of recursive make. There are a few minor improvements in the GNU make compatibility, and a slight improvement in memory usage.
There are several user visible changes:
Because of these changes, makepp will recompile everything the first time you run it.
In addition to bug-fixes, this version has one user-visible change. The "--norc-substitution" command line option was introduced to allow compatible handling of whitespace in makefiles.
In addition to numerous bug fixes, this version has several user-visible changes:
This version has several user-visible changes:
$(phony all): program_1 program_2
The "$(phony )" function simply returns its arguments, but marks them as phony targets. You can still use the older syntax that looks like this:
all: program_1 program_2 .PHONY: all
The "$(phony )" function is an attempt to improve the readability of makefiles. I'd welcome other suggestions, as I'm still not entirely happy with the syntax.
In order to support features like parallel make, most of the internals had to be reorganized or rewritten. The result is much cleaner and hopefully more reliable.
Bugs too numerous to mention have been fixed. In order to help ensure reliability, a test suite has been developed. It doesn't test absolutely everything yet, but it does test most things, and I hope to make it more extensive in the future. You can run it by typing "makepp test" in the makepp distribution directory. If an unmodified makepp fails the test suite, please let me know so I can fix it.
There are many new features:
There are also (unfortunately) a few incompatibilities with previous versions:
2016-11-28 | perl v5.24.1 |