mfile/make/CFLAGS Problem

Gast #76291
Hallo, zusammen,

ich habe mir gerade den AVR-GCC unter Linux installiert. Ich habe die
Dateien von der savannah-Seite genommen und die Patches ausgeführt
sowie die Dateien selbst kompiliert.

Jetzt habe ich mir mit dem mfile-Tool von Jörg Wunsch ein Makefile
erstellt. Allerdings bekomme ich immer die Fehlermeldung:
"Makefile:194: *** Recursive variable 'CFLAGS' references itself
(eventually). Stop."
Ich hatte bei einem Freund das ganze mit WinAVR ausprobiert und dort
geht es.
Ich benutze GNU Make 3.80 und die Zeile 194 ist:
"$(CC) -c $(ALL_CFLAGS) $< -o $@".
ALL_CFLAGS ist:
"ALL_CFLAGS= -mmcu=$(MCU) -I. $(CFLAGS)"

Was läuft da schief?
Gast #76292
Sorry, das Problem hatte ich in meinen Quellen schon eine Weile
repariert, aber vergessen, das Archiv auf dem Webserver zu
aktualisieren.

Vermutlich bist Du wohl der erste, der Mfile unter Unix benutzt. :-)

Zieh's Dir bitte nochmal, jetzt sollte das klappen.

> Ich hatte bei einem Freund das ganze mit WinAVR ausprobiert und dort
> geht es.

Ja, das makefile_template im Zip-Archiv für WinAVR unterscheidet sich
ein wenig vom Template im .tar.gz-Archiv für Unix.  Letzteres sollte
insbesondere mit allen drei Unix-make-Dialekten (SysV, GNU, BSD)
zurechtkommen (ist bei WinAVR uninteressant, da dort eh ein GNU make
dabei ist und sonst nix), außerdem ist der ganze AVR-Studio-
Kompatibilitäts-Message-Müll rausgeflogen.
Gast #76293
Danke für die prompte Antwort!
Vermutlich sind die Linuxer/Unixer im Gegensatz zu den
Windows-Benutzern so versiert und daran gewöhnt, dass sie die makefiles
selber schreiben können. Ich als Umsteiger bin da wohl die Ausnahme.
Aber einiges habe ich immerhin schon verstanden... ;)

Danke nochmal, auch für das Tool!
Gast #76294
Ich hoffe, ich nerve jetzt nicht, aber ich bekomme immer noch denselben
Fehler.
Ich habe das Archiv von:
http://www.sax.de/~joerg/mfile/
heruntergeladen und entpackt. In der Datei mfile.tcl habe ich in der
ersten Zeile den Kommandointerpreter geändert auf
"#!/usr/bin/wish", ausgeführt wird das Programm dann auch. Ich mache
meine Eingaben und das Makefile wird erstellt.
Das Makefile kopiere ich dann in mein Sourceverzeichnis (Zum Testen ist
da nur ein "main.c" drin) und rufe "make" auf.
Dann erscheint der Fehler. Bin ich jetzt einfach nur blind oder muss
ich noch etwas Anderes beachten?
Gast #76295
> In der Datei mfile.tcl habe ich in der ersten Zeile den
> Kommandointerpreter geändert auf "#!/usr/bin/wish", ausgeführt
wird
> das Programm dann auch.

Ja, mit der tixwish sieht's ein bißchen netter aus, aber die normale
wish vom Tk tut's genauso, ich habe keine Besonderheiten von tix
benutzt.

> Ich mache meine Eingaben und das Makefile wird erstellt.

Hast Du das makefile_template passend installiert (z. B. nach
/usr/local/share/mfile, siehe README)?  Sieht mir so aus, als hättest
Du noch das alte template.  Das neue erkennst Du an dieser Zeile:

CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD)
$(CEXTRA)

Das fehlerhafte hat versucht, die CFLAGS rekursiv zusammenzubauen --
ein fataler Denkfehler meinerseits.

> Vermutlich sind die Linuxer/Unixer im Gegensatz zu den
> Windows-Benutzern so versiert und daran gewöhnt, dass sie die
> makefiles selber schreiben können.

Im Prinzip schon, eher als der typische Win-User bestimmt.
Nichtsdestotrotz fand ich mfile am Ende auch für mich selbst ganz
praktisch, weil ich zuvor für jedes kleine Spiel-Projektchen immer
erst ein ähnliches Makefile eines anderen Projekts als Template
zusammengekramt habe.  Jedesmal alles von Grund auf zu schreiben, ist
bei den vielen Kleinigkeiten, an die man bei einem µC so denken muß,
auch ein bissel aufwendig.
Gast #76296
Asche auf mein Haupt: Ich hatte noch die env-Variable gesetzt und darum
griff Dein Programm noch auf die alte Version zu, die ich noch zum
ersten Test in einem temp-Verzeichnis hatte...
Jetzt kann ich endlich ins Bett, schön dämlich sowas...

Dankeschön nochmal für die Hilfe!
Gast #76297
Ich habe mir das Teil auch runtergeladen und es funktioniert auch
soweit, allerdings ist noch ein kleiner Fehler im avrdude-Teil drin,
derselbe wie mit den CFLAGS. Vielleicht änderst Du das noch ;)
Gast #76298
Tust ja mächtig geheim...  Wahrscheinlich ist Dir gar nicht klar, daß
der Anonymizer, den Du benutzt, nur 20 Meter von dem Server entfernt
steht, von dem Du Mfile geholt hast. :-)

Danke für den Hinweis aber.  Den avrdude-Teil habe ich mit
Mfile-generierten Makefiles in der Tat noch nicht getestet.

Ich habe das Archiv nochmal aktualisiert.  Das betrifft nur das
.tar.gz File, Benutzer des (WinAVR-) ZIP-Archivs müssen das also nicht
nochmal holen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.