====== Lyx – Compiler selbst kompilieren ====== Da der Lyx-Compiler in **Free Pascal (FPC)** implementiert ist, kann er leicht aus den Quellen erstellt werden. Dies ist notwendig, wenn Sie Änderungen am Compiler-Kern vornehmen oder Lyx auf einer neuen Plattform (Bootstrapping) installieren möchten. ===== 1. Voraussetzungen ===== Bevor Sie beginnen, stellen Sie sicher, dass folgende Komponenten installiert sind: * **Free Pascal Compiler (FPC)**: Version 3.2.2 oder höher wird empfohlen. * **Lazarus (Optional)**: Nur erforderlich, wenn Sie die IDE für die Entwicklung nutzen möchten. Die Kommandozeile reicht aus. * **Make**: Für die Automatisierung des Build-Prozesses. * **Binutils**: (as, ld) für das jeweilige Zielsystem (x86_64, ARM64 oder RISC-V). ===== 2. Projektstruktur ===== Das Repository ist wie folgt strukturiert: * **/src**: Quellcode des Compilers (``.pas``, ``.pp`` Dateien). * **lyxc.lpr**: Die Hauptprojektdatei (Pascal Project). * **/lib**: Abhängigkeiten und spezialisierte Units für die Backends. ===== 3. Kompilierung über die Kommandozeile ===== Der einfachste Weg, den Compiler zu bauen, ist die Nutzung von ''fpc'' direkt. ==== Für das Host-System (Native) ==== fpc -O3 -MObjFPC -Scghi -Sh -Tlinux -Px86_64 lyxc.lpr -olyxc **Beispielufruf:** mkdir -p lib && fpc -Mobjfpc -Sh -FUlib/ -Fuutil/ -Fufrontend/ -Fuir/ -Fubackend/ -Fubackend/x86_64/ -Fubackend/elf/ -Fubackend/pe/ -Fubackend/arm64/ -Fubackend/macho/ -Fubackend/xtensa/ -Fubackend/esp32/ -Fubackend/macosx64/ -Fubackend/win_arm64/ -Fubackend/riscv/ -Fubackend/arm_cm/ -O2 lyxc.lpr -olyxc 2>&1 **Erklärung der Parameter:** ^ Parameter ^ Bedeutung ^ | **-O3** | Maximale Optimierung des Compiler-Executables. | | **-MObjFPC** | Nutzt den Object Pascal Dialekt. | | **-Scghi** | Aktiviert fortgeschrittene Sprachfeatures (Generics, Operator Overloading). | | **-T / -P** | Zielplattform (Target) und Architektur (Processor). | | **-o** | Name der Ausgabedatei. | ===== 4. Cross-Kompilierung des Compilers ===== Wenn Sie den Lyx-Compiler auf einem x86_64-Rechner bauen, ihn aber auf einem Raspberry Pi (ARM64) ausführen möchten, nutzen Sie Cross-Kompilierung: fpc -Tlinux -Parm64 -XParm-linux-gnueabihf- lyxc.lpr ===== 5. Integration der Standard-Library ===== Nachdem das Executable ''lyxc'' erstellt wurde, muss der Compiler wissen, wo sich die Lyx-Standard-Units befinden. Dies geschieht normalerweise über eine Umgebungsvariable: export LYX_PATH=/usr/local/lib/lyx/units ./lyxc my_program.lyx ===== 6. Troubleshooting ===== * **Unit not found**: Prüfen Sie, ob alle Pfade in der ''fpc.cfg'' korrekt gesetzt sind oder nutzen Sie den Parameter ''-Fu./src'', um das Quellverzeichnis explizit anzugeben. * **Linker Error**: Stellen Sie sicher, dass die statischen Bibliotheken für das Zielsystem vorhanden sind (besonders wichtig bei Cross-Builds für RISC-V). > **Entwickler-Tipp:** > Nutzen Sie den Debug-Build (''-g -gl -gh''), wenn Sie am Compiler selbst arbeiten, um aussagekräftige Stack-Traces bei Compiler-Abstürzen (Internal Errors) zu erhalten.