Ein Problem mit newmake ist/war dass, falls ein Target wie $(flashprefix)/root-neutrino fehl schlägt, dann wird das Verzeichniss trotzdem auf der Platte bleiben, und das nächstes Mal make ausgeführt wird glaubt make dadurch -- fehlerhaft -- dass der Target up-to-date ist. Dafür gibt es in GNU Make (und sofern ich verstehe nur da) ein Prerequisite .DELETE_ON_ERROR (siehe
GNU Make manual), das bewirkt, dass Targets bei fehlgeschlagene Actions gelöscht wird. Denkt mann ein Paar Momente nach, versteht mann, dass .DELETE_ON_ERROR eigenlich für eine korrekte Makefunkion absolut notwendig ist.
Leider funktioniert dies z.Z. nicht für Verzeichnisse. Ich habe dies als Bug
hier gemeldet. Ich habe ein "pragmatischer" Patch zu GNU make 3.81 geschrieben, befindet sich
hier.
Zum Erstellen ein gepatches make:
1. make-3.81.tar.gz runterladen und entpacken
2. cd .../make-3.81
3. patch < ...commands.c.diff
4. ./configure
5. make
6. make install
Ich habe auch cdk/make/precious.mk dafür geändert.
Dadurch ist das oben beschriebene Problem gelöst.
Um Missverständnisse zu vermeiden: Es ist
nicht notwendig, ein gepatchtes make zu benutzen!