2012-08-29 10 views
6

Tentativo di trasferire una libreria Delphi su Android. Free Pascal supporta Android/ARM: è disponibile un compilatore precompilato per Windows. Tuttavia, Android NDK ora supporta anche MIPS e x86. Qual è lo stato di supporto per quelli in FPC? Per ora, il mio progetto è più o meno agnostico della CPU - i bit nativi sono costruiti per tutte e quattro le architetture supportate. Non voglio lasciar perdere.Gratuito Pascal per Android su MIPS

Non ho seguito il ciclo completo di sviluppo Android in Pascal: solo una libreria di algoritmi che non esegue I/O. Ho provato a tradurlo in C con p2c, ma il traduttore soffoca sulle fonti.

Devo solo provare a compilare il cross-compiler per la CPU rilevante con Linux e quindi collegarlo alle librerie NDK?

EDIT: Ho creato il cross-compiler per Intel/Linux dai sorgenti del ramo Android. Funziona, eccetto che devi chiamare ppcross386 per compilare, non fpc. Quest'ultimo, a quanto sembra, ignora l'opzione -Tlinux e richiama il compilatore Intel/Win32.

EDIT2: con una piccola modifica al makefile e alle origini, le compilazioni del cross-compilatore MIPS. Tuttavia, man mano che si passa alla RTL cross-CPU, l'errore si verifica quasi subito.

risposta

3

EDIT, infine: il supporto per la destinazione di compilazione Android/MIPSEL è disponibile nel trunk FPC. Esporta l'ultimo, crea il crosscompiler, codice via.


Mentre il supporto per MIPS ISA può essere trovato qui e là nelle fonti FP, non è ancora ufficialmente fatto. In attesa della versione 2.7.

Nel frattempo, ci sono support for compiling to Java bytecode nel bagagliaio, è documentato nel wiki FP. Forse posso sfruttare come stopgap ...

MODIFICA: Free Pascal su JVM funziona in generale su Android, ma its rules are somewhat different da Pascal regolare. Altrimenti correggere Pascal conks fuori quando compilato in JVM. Quindi è inadatto per il porting di grandi corpi di codice Pascal precedente che non è stato scritto pensando a JVM in primo luogo.

EDIT: Ho ottenuto il mio progetto FPC su MIPS/Android, ma la mia ricetta non è adatta al consumo generale, perché l'ambito dell'uso di Pascal RTL nel mio progetto è molto limitato. Implica la compilazione incrociata da Pascal all'assembly MIPS (che indirizza MIPSEL/Linux, disponibile nel trunk FPC), quindi alimenta le origini dell'assembly generate al sistema di build NDK, fornendo una reimplementazione C/assembly di un sottoinsieme limitato di Pascal RTL.

L'intero corpo di Pascal RTL è grande e spaventoso. La mia soluzione, che prevede il reimplementamento di Pascal RTL in C da zero, è, beh, l'opposto di generalmente applicabile.

+0

L'idea JVM potrebbe essere utilizzata per essere un po 'più complessa, dal momento che Android non esegue una JVM. Stai producendo codice da inserire nel convertitore bytecode java-to-dalvik di Android? O stai aggiungendo una JVM di terze parti ad Android (possibile ma insolita)? –

+0

Free Pascal è in grado di compilare in bytecode Java (come file .class) che può essere inviato al sistema di build Android come libreria di dipendenze. Dettagli [qui] (http://wiki.freepascal.org/FPC_JVM). Il mio ostacolo [qui] (http://bugs.freepascal.org/view.php?id=22892). –