2012-08-29 22 views
6

Intentando portar una biblioteca de Delphi a Android. Free Pascal tiene compatibilidad con Android/ARM: hay disponible un compilador precompilado para Windows. Sin embargo, Android NDK también es compatible con MIPS y x86. ¿Cuál es el estado de soporte para aquellos en FPC? Por ahora, mi proyecto es más o menos independiente de la CPU: los bits nativos están diseñados para las cuatro arquitecturas compatibles. No quiero dejar eso.Pascal gratuito para Android en MIPS

No estoy después del ciclo completo de desarrollo de Android en Pascal: solo una biblioteca de algoritmos que no tiene E/S. Intenté traducirlo a C con p2c, pero el traductor ahoga las fuentes.

¿Debo intentar crear un compilador cruzado para la CPU relevante con Linux y luego vincularlo con las bibliotecas NDK?

EDIT: He creado el compilador cruzado para Intel/Linux desde las fuentes de la rama de Android. Funciona, excepto que debe invocar ppcross386 para compilar, no fpc. El último, al parecer, ignora la opción -Tlinux e invoca el compilador Intel/Win32.

EDIT2: con un pequeño cambio en el archivo MAKE y las fuentes, se crea el compilador cruzado MIPS. Sin embargo, a medida que el edificio avanza hacia el RTL cruzado de la CPU, se produce un error casi de inmediato.

Respuesta

3

EDITAR, finalmente: el soporte para el objetivo de compilación de Android/MIPSEL está disponible en el tronco de FPC. Exporte lo último, cree el compilador cruzado, codifique.


Aunque el apoyo a MIPS ISA se puede encontrar aquí y allá en las fuentes de PF, no se hace oficialmente. Esperando la versión 2.7.

Mientras tanto, hay support for compiling to Java bytecode en el maletero, está documentado en el wiki de FP. Tal vez puedo aprovechar eso como un recurso provisional ...

EDITAR: Pascal libre sobre JVM funciona en general en Android, pero its rules are somewhat different de Pascal regular. De lo contrario, corrige que Pascal se desconecta cuando se compila en JVM. Por lo tanto, no es apto para portar grandes cuerpos de código Pascal heredado que no se escribió con JVM en mente en primer lugar.

EDIT: Obtuve mi proyecto de FPC trabajando en MIPS/Android, pero mi receta no es apta para el consumo general, porque el alcance del uso de Pascal RTL en mi proyecto es muy limitado. Implica la compilación cruzada de Pascal al ensamblado de MIPS (dirigido a MIPSEL/Linux, disponible en el tronco de FPC), y luego alimenta las fuentes de ensamblaje generadas al sistema de compilación de NDK, proporcionando una reimplementación de C/conjunto de un subconjunto limitado de Pascal RTL.

Todo el cuerpo de Pascal RTL es grande y aterrador. Mi solución, que implica volver a implementar Pascal RTL en C desde cero, es, bueno, todo lo contrario de lo que generalmente se aplica.

+0

La idea de JVM podría ser utilizada un poco, ya que Android no ejecuta una JVM. ¿Estás produciendo código para alimentar el convertidor de bytecode de java a dalvik de Android? ¿O está agregando una JVM de terceros a Android (posible pero inusual)? –

+0

Free Pascal es capaz de compilar en bytecode de Java (como archivos .class) que se pueden alimentar al sistema de compilación de Android como una biblioteca de dependencias. Detalles [aquí] (http://wiki.freepascal.org/FPC_JVM). Mi obstáculo [aquí] (http://bugs.freepascal.org/view.php?id=22892). –