From your incompatibilities list:
Makepp does not attempt to rebuild files included with the include statement unless the makefile contains a rule for building them before the include statement is seen. (It will attempt to rebuild the makefile itself, however.) This is normally used for handling include file dependencies, and is not as useful with makepp since you don't need to do that anyway.
Actually, I use this feature to create a simple makefile that only knows how to make its include files. gmake appears to:
1) read the main makefile completely, ignoring all -includes with no associated file
2) rebuild any include files for which it has rules, and which need rebuilding
3) restart make if any include files changed
makepp appears to:
1) read the main makefile
1a) rebuild any include files for which it already has rules when it encounters an include or -include, regardless of whether or not they need rebuilding
Yes, I'm probably one of the only people in the world that want this feature, and I have up until now been able to work around this behavior by disabling a few features in my build system, but it would be nice if I didn't have to work around that. Even with the workarounds, it's kind of annoying that include files get rebuilt regardless of whether or not they need it.
Another, related feature is the ability to check built include files before writing them out. With GNU make, I do a recursive make of /dev/null using standard input (the generated include file) as the makefile. I'm not sure if that's even possible with makepp. Perhaps that feature is already covered by calling some makepp internal function with perl. I already had to resort to this for auto-generating some dependencies.
I've attached the current version of my base makefile if you're interested. For details, see https://github.com/darktjm/literate-build/raw/master/build.pdf (or build.html in the same place). The rest of the makefiles are attached to either of these, with instructions on how to detach.