Absender: Timo Sandmann
Datum: Do, 07.04.2011 17:17:49
In-reply-to:
<1302181531.1595.32.camel@wbam-desktop>
References:
<1302181531.1595.32.camel@wbam-desktop>
Hi Simon, Am 07.04.2011 um 15:05 schrieb Simon: > Hallo Timo, > > in Revision 1743 hast du für uns Makefile korrigiert, so dass sich der > Code mit der fehlenden builtin.h übersetzen lässt. Die wesentlichen > Änderungen waren: > > -CFLAGS = -g > +CFLAGS = -g3 > +CFLAGS += -Wextra -Wmissing-prototypes -Wmissing-declarations > -Wconversion --param inline-call-cost=2 > > -GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d > +GENDEPFLAGS = -M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d > > Welche Option bewirkt denn tatsächlich, dass builtin.h fehlen darf? entscheidend ist das Weglassen von "-Wp,". Die Option sollte man laut GCC-Dokumentation auch nicht (mehr?) verwenden. Warum sie im Makefile stand, kann ich Dir leider nicht sagen, weil ich es nicht geschrieben habe. Wieso jetzt der Preprozessor die Abhängigkeitsoptionen anders interpretiert, als wenn sie durch den Compiler-Treiber laufen, habe ich nicht recherchiert. Das #include einer evtl. nicht vorhandenen Datei ist ja auch nur ein Workaround, in der neuen Version wird stattdessen eine Headerdatei eingebunden, die abhängig von der libc-Version entweder <builtins.h> einbindet oder die nötigen Deklaration selbst vornimmt. Die anderen Optionen habe ich mit eingefügt, damit das Makefile wieder den Compilereinstellungen des Eclipse-Projekts (das ist letztlich unsere Referenz) entspricht. Ist wohl irgendwann mal vergessen worden, das Makefile dementsprechend mit anzupassen. > Nach > unseren Tests ist es -MMD. Dazu steht in der Dokumentation des GCC, dass > sie sich auf die Generierung der make-Abhängigkeiten bezieht. Selbst > wenn wir keine make-Abhängigkeiten generiert haben wollen, benötigen wir > diese Option, damit der GCC nicht über die fehlende builtin.h stolpert. > > Ist es tatsächlich diese Option, die das gewünschte Resultat an dieser > Stelle liefert? Und weißt du mehr darüber, warum? An der Option "-MMD" habe ich nichts geändert. Wenn ich mich jetzt in der Historie nicht verguckt habe, ist die vor vier Jahren von bbe dort eingefügt worden, warum weiß ich natürlich nicht mehr. So wie ich die GCC-Dokumentation verstehe, schließt "-MMD" System-Headerdateien bei den Abhängigkeiten aus, was mir auch sinnvoll erscheint, weil sich jene normalerweise nicht ändern. Grüße, Timo