Eine Art automake für AVR

OP #836135
Moin!

zwei kleine Python-Skripte samt Config-Dateien für automatisierte Builds 
ohne manuelle Eingriffe im Makefile.

Intro :
In meinem Fall verwende ich für die meisten Projekte eine 
Verzeichnisstruktur wie folgt:
  /workspace/libDir
  /workspace/myProject1
  /workspace/myProject2
Basierend auf der avr-libc enthält libDir projektübergreifend 
Bibliotheksfunktionen zur Ansteuerung von timer, i2c, i2c komponenten, 
etc. Die eigentliche Funktionalität eines Projekts wie auch 
projektspezifische Konfigurationen sind in myProject1 etc. zu finden.
Dieser Ansatz ähnelt dem von avrlib. Die Versionskontrolle für fertige 
Projekte erfolgt mittels svn:externals und svn:prjheoperties.

BuildTargets - Bibliotheken auf Plattformkompatibilität testen:
Da ich es hier z. T. mit unterschiedlichen AVR-Architekturen zu tun habe 
(Mega8, Mega168, Mega32 etc.)  ist die Bibliothek durch entsprechende 
#ifdef Anweisungen target-unabhängig aufgebaut.

Aufbauend auf einem generischen Makefile ist es mit Hilfe von 
buildTargets.py möglich, alle unterstützten Architekturen in einer 
Config-Datei anzugeben. Dieses Skript sucht nun in den angegebenen 
Source-Foldern (siehe buildTargetsSrcDirs.conf) nach *.cpp und *.c 
Dateien (mehrere Verzeichnissebenen werden unterstützt), kompiliert die 
gefundenen Quellen für die jeweilige Zielplattform und linkt alles zu 
einer Bibliothek. Separate Verzeichnisse für build, dep, obj werden 
unterstützt.

Werden unbekannte (nicht falsche!) register etc. für eine der 
Zielarchitekturen verwendet, so kommt die entsprechende Fehlermeldung. 
Hiermit wird erreicht, dass zumindest syntaktisch korrekter Code 
vorliegt.

Code: buildTargets.zip

AutoMake für Arme - *autobuild.zip*
Hierauf aufbauend wurden die Skripte erweitert, um nahezu ohne 
Nutzereingriffe ein Projekt zu kompilieren. Eine Config-Datei 
(build.properties) enthält MCU, F_CPU, TargetName sowie eventuelle 
externe Source-Verzeichnisse. Dazu ein generisches Makefile.

build.py sucht im eigenen Verzeichnis und Unterverzeichnissen (sowie 
extern, wenn angegeben) nach Quellen, kompiliert und linkt diese zum 
angegebene Target. Fertig.

Make für Faule, sozusagen. Individuelle, projektspezifische 
Optimierungsschritte fehlen natürlich. Aber für Testprojekte mit 
begrenzter Lebensdauer praktisch :-)

cu, mz.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.