In addition to bug-fixes, this version 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:
--traditional-recursive-make
option can be used for legacy makefiles which use recursive
invocations of make in a way that didn't work with makepp's
default implementation.
load_makefile
statement and with recursive make.
This version has several user-visible changes:
$(if cond, then, else)
function is supported to a
limited extent.
%
wildcard now matches only files
within a directory; %.c
is now equivalent to
*.c
, not **/*.c
. The reason for this
change was that rules almost never need to use the more
complicated wildcard, and it often caused unnecessary directories
to be searched. You can get the old behavior by specifying
--percent-subdirs
on the command line. (I'm curious
how people feel about this change. Please let me know if you have
good reasons for it being one way or the other.)
load_makefile
statements at all. If this causes you
problems, you can turn off implicit loading of makefiles by adding
--no-implicit-load
to the command line. (I'm curious
whether people like or dislike implicit loading of makefiles.)
$(phony )
function, like this:
$(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:
-j
option.
.makepp_log
explaining why it rebuilt everything.
This is extremely useful for debugging.
-k
option for continuing to build even
when an error occurs is now supported.
There are also (unfortunately) a few incompatibilities with previous versions:
-F
switch is now unnecessary (and no longer
documented).
$(INFERRED_OBJS)
is no longer supported (since it
was not a well-designed interface anyway). Use the newer $(infer_objects )
function instead.
$_
is no longer supported. Use
$(foreach)
instead.
-s
,
-n
, and -q
are no longer supported due to
internal architecture changes. -n
will probably be
supported again in future releases.
$(only_targets)
.