Development Toolchain für OS X mittels MacPorts

Auf dem Mac gibt es verschiedene Paketmanager zur Installation von Open Source Software. Fink, welches apt nachempfunden wurde, ist mittlerweile als obsolete anzusehen und DarwinPorts wurde ersetzt durch MacPorts.

MacPorts Installationsanleitung

Es soll an dieser Stelle allerdings nicht verschwiegen werden, dass MacPorts Xcode voraussetzt, was nach einer Registrierung kostenlos bei Apple heruntergeladen werden kann. Es geht zwar theoretisch auch ohne Xcode - was selbst größtenteils nur eine Sammlung von GNU Tools ist - aber Xcode macht die ganze Sache wesentlich komfortabler.

Toolchain Version

In MacPorts ist zwar schon eine arm-elf Toolchain drin, allerdings nur die 4.3er, die habe ich jedoch selbst nach langem hin und her nicht dazu bewegen können, NG-fähigen Code zu erzeugen. Möglicherweise liegt es aber auch an den binutils >2.18

Folgende Versionen funktionieren:

Portfiles

Was bei Paketmanagern normalerweise Paket genannt wird, nennt man bei MacPorts Port. Ein Port besteht aus einem einfach strukturierten Textfile und optional einer Reihe von Patches.

Es gibt jetzt zwei Möglichkeiten an die 4.1er Toolchain - ranzukommen. Man kann MacPorts veranlassen eine alte Revision des Ports zu installierten, allerdings schlägt die Installation des mehrere Jahre alten Ports fehl, man müsste also das Portfile anpassen.

Wenn man allerdings das Portfile anpassen muss, kann man auch gleich das aktuelle Portfile anpassen.

Ladet euch die ports.tar.gz herunter und entpackt diese. Update: Jetzt auch mit stm32 support: ports-toolchains.tar.gz

/!\ Achtung: Ihr müsst in ports/cross/wolferl-ng/Portfile sowie in ports/aqua/ng-tools/Portfile noch den Pfad zu eurem Trunk ändern. Der Pfad kommt jeweils zweimal vor.

Ihr könnt die einzelnen Ports installieren, in dem Ihr in die entsprechenden Verzeichnisse wechselt und dort folgendes eingebt:

  sudo port install

Die Quellen werden automatisch geholt, gebaut und installiert.

Die Installationsreihenfolge sollte folgende sein:

Bei manchen Ports gibt es Varianten. Man kann eine gewünschte Variante folgendermaßen bauen:

  sudo port install +variante1 +variante2 ...

In unserem Fall gibt es nur eine Variante, nämlich beim wolferl-ng Port: +bl Damit werden die Firmwares für den USB Bootloader erzeugt. Die Firmwares findet man übrigens in /opt/local/share/wolferl-ng/, zumindest bei einer MacPorts Standard-Installation.

Solltet Ihr ein Port wieder entfernen wollen, könnt Ihr folgendes eingeben:

  sudo port uninstall name_des_ports

Dabei ist es egal, in welchem Verzeichnis Ihr euch befindet. Alternativ könnt Ihr einen Port auch nur deaktivieren, z.B. wenn Ihr den selben Port mit einer anderen Variante installieren wollt:

  sudo port deactivate name_des_ports

Auch hier ist das Verzeichnis irrelevant. Ihr könnt hinter name_des_ports noch eine Version angeben und Varianten. Eine Liste der installieren aktivierten und deaktivierten Ports bekommt Ihr mittels:

  sudo port installed

Und die möglichen Varianten eines Pakets bekommt Ihr mit:

  sudo port variants

Hierfür müsst Ihr in dem entsprechenden Verzeichnis sein.

Danach könnt Ihr, wenn Ihr die GUI von Hand bauen wollt, die Ports in ports/graphics/ und dann die in ports/aqua/ installieren.

Weitere Informationen

Configure Options

Um herauszufinden, welche Configure Optionen zum Bau des gcc verwendet wurden, kann man folgendes Eingeben:

  arm-elf-gcc -v

Die newlib Quellen werden vom Port uebrigens direkt im gcc Verzeichnis abgelegt und automatisch mit compiliert. Es bekommt daher auch dieselben Configure Optionen.

Die binutils müssen aber leider aufgrund einer Inkompatibilität der darin enthaltenen libiberty getrennt gebaut werden, ansonsten hätte man sie wie viele andere Tools einfach in den gcc source tree einbinden koennen.

Repository

Der Grund dafür, dass wir manchmal in dem jeweiligen Verzeichnis sein müssen ist, dass die Ports nicht aus dem offiziellen MacPorts Repository kommen und wir der Einfachheit halber kein eigenes lokales Repository anlegen. Daher weiß das System nichts von den verstreut herumliegenden Portfiles.

Development Toolchain für OS X mittels vorgebauter Pakete

Wer den Aufwand Xcode und MacPorts zu installieren scheut, kann es mit folgenden Binaries probieren:

Development/BauDeineEigene/ARMToolchainOSX (last edited 2010-10-16 16:58:11 by NabilSayegh)