Develop

Entwickeln für RISC OS

RISC OS-Projekte: Qt portieren

Der zweite Teil der Reihe “RISC OS-Projekte” sollte ursprünglich von Oberflächenbibliotheken und deren Portierung handeln. Qt, GTK+, FLTK und wxWidgets sind da die interessantesten Kandidaten. Zur Portierung interessanter Software vornehmlich aus der Linux-Ecke wäre das eine wichtige Voraussetzung. Auch eine Portierung von WebKit wäre dadurch deutlich erleichtert.

Aus aktuellen Gründen will ich das Projekt etwas kleiner schneidern und nur eine Portierung von Qt kurz anreißen. Qt hat eine lange und bewegte Geschichte, die mit Trolltech begann und durch die Verwendung als Basis für den KDE-Desktop der breiten Masse bekannt wurde. Später wurde Trolltech von Nokia übernommen und Qt 2009 unter der LGPL veröffentlicht, nachdem jahrelang die Lizenzierungsfrage breitgetreten wurde. Qt ist in C++ geschrieben und gilt als einer der wenigen kompetenten Cross-Plattform-GUI-Toolkits. Qt zeichnet sich durch eine verhältnismäßig saubere API aus und wurde auf viele auch eher esoterische Systeme portiert, von Symbian bis Windows CE, von SailfishOS bis BlackBerry OS (QNX-basiert).

Qt ist inzwischen mehr als ein reines GUI-Toolkit, es gibt Module rund um Netzwerkzugriff (Qt Network) oder auch Datenbankanbindung (Qt Sql).

Viele Programmiersprachen wurden mit Anbindungen versehen, darunter z.B. Ada, Perl, Python und Haskell – auch hier also durchaus exotenfreundlich.

Und jetzt kommt der Gag: seit heute ist im GCCSDK-Repository im Autobuilder die Portierung von Qt 5.3.0 durch Lee Noar verfügbar.

Vielleicht hätte ich deshalb den Blogbeitragstitel in “Wunder geschehn” umbenennen sollen.

Ich hatte noch keine Gelegenheit, ein paar einfache Tests damit durchzuführen, um herauszufinden, welchen Stand die Portierung hat und welche der vielen Qt-Module bereits portiert sind. Vielleicht ist es also verfrühter Optimismus, denn Qt ist groß und es ist kaum anzunehmen, dass ein initialer Port direkt alle Module mitportiert. Die Inhalte im Autobuilder legen aber nahe, dass Qt Core und Qt Gui die ersten beiden Module sind.

Bisher in der Reihe “RISC OS-Projekte” veröffentlicht:

Bewegung im GCCSDK-Repository

Um halbwegs auf dem Laufenden bezüglich der GCC-Entwicklung der Geschmacksrichtung RISC OS zu bleiben, schaue ich ab und zu mal rein, was im SVN-Trunk von GCCSDK so läuft.

Seit ein paar Tagen gibt es interessante Commits von Lee Noar, der schon der Hauptverantwortliche für den RISC OS ELF-Support war. Die Schlüsselworte lauten Clang und LLVM.

Clang ist – compilertechnisch gesprochen – ein Frontend für C, C++ und Objective-C, das an die Compiler-Infrastruktur von LLVM angeflanscht werden kann. LLVM arbeitet dann als Backend, um den von Clang gelieferten Input in was Maschinentaugliches zu verwandeln.

Warum Clang/LLVM anstatt GCC? Die Clang- und LLVM-Codebasis ist deutlich jünger und übersichtlicher, die Weiterentwicklung ist sehr dynamisch, der Compilevorgang viel schneller und speichersparender. LLVM kann Bytecode erzeugen, der dann in einer VM ausgeführt werden kann – daher hat LLVM auch seinen Namen.

Wo sind die Haken? Der ARM-Codegenerator von LLVM ist wohl hauptsächlich auf ARMv6/ARMv7 optimiert. Die Portierung auf non-Unix-Plattformen gilt als eher schwierig. Die Details bezüglich EABI/APCS-32 usw. sind bisher eher unklar. Also zumindest mir 🙂

Übrigens kann GCC per DragonEgg so umgedingst werden, dass LLVM als Backend verwendet werden kann.