Hintergrund: Portierung eines Lazarus-Projekts (CQRlog) auf MacOS. Ist
ein ziemlich großer Klotz, der primär auf Linux und Windows entwickelt
worden ist (einiges davon auch $ifdef'ed). Auf FreeBSD portieren ging
noch ganz gut, MacOS war schon etwas schwieriger, lief dann aber
erstmal.
Allerdings spinnt die X11-Emulation auf den ARM-basierten Macs
irgendwie, wenn Xrender ins Spiel kommt, und gtk3 benutzt Xrender, wenn
es auf X11 läuft. Daher habe ich jetzt die kompletten Ports dort ohne
mit Quartz statt X11 durchgezogen, was ja an sich sowieso viel
sinnvoller ist, da es die native Grafikoberfläche ist.
Allerdings lässt sich jetzt CQRlog nicht mehr linken, weil es versucht
-lgtk-x11-2.0 zu linken. Man sieht auch in den Linkerscripts, dass das
da explizit drin steht:
1 | % grep -r gtk-x11 .
|
2 | ./src/link11165.res:-lgtk-x11-2.0
|
3 | ./src/link22800.res:-lgtk-x11-2.0
|
Nur, wer sagt dem gesamten Projekt, dass das da hinein soll bzw. wie
sage ich ihm jetzt, dass er doch bitteschön -lgtk-quartz-2.0 linken
möge? OK, die billige Lösung wäre ein Symlink :-) … aber ich würde schon
gern verstehen, woher Lazarus diesen Bibliotheksnamen ableitet.
Irgendein $LINKLIB sehe ich im Projekt jedenfalls nicht.
Hmm, wenn ich im Installationsverzeichnis von Lazarus schaue, sehe ich,
dass
1 | % grep -ri gtk-x11 /opt/local/share/lazarus
|
2 | Binary file /opt/local/share/lazarus/lcl/units/aarch64-darwin/gtk2/gtk2extra.ppu matches
|
3 | Binary file /opt/local/share/lazarus/lcl/units/aarch64-darwin/gtk2/gtk2int.ppu matches
|
4 | Binary file /opt/local/share/lazarus/lcl/units/aarch64-darwin/gtk2/gtk2winapiwindow.ppu matches
|
in diesen Unit files das offenbar drin ist. Aber woher kommt es da
hinein? Müsste doch irgendwie beim Bauen von Lazarus erfolgt sein, oder?