Бесплатный Паскаль для Android на MIPS

Попытка портировать библиотеку Delphi на Android. Free Pascal имеет поддержку Android/ARM - доступен готовый компилятор для Windows. Тем не менее, Android NDK теперь поддерживает MIPS и x86. Каков статус поддержки тех, кто в FPC? На данный момент мой проект более или менее независим от процессора - встроенные биты созданы для всех четырех поддерживаемых архитектур. Не хочу отпускать это.

Я не после полного цикла разработки Android на Pascal - просто библиотека алгоритмов, которая не выполняет ввод-вывод. Я попытался перевести его на C с помощью p2c, но переводчик захлебнулся источниками.

Стоит ли просто попробовать создать кросс-компилятор для соответствующего процессора с Linux, а затем связать его с библиотеками NDK?

РЕДАКТИРОВАТЬ: я создал кросс-компилятор для Intel/Linux из источников ветви Android. Это работает, за исключением того, что вы должны вызвать ppcross386 компилировать, а не fpc, Похоже, что последний игнорирует опцию -Tlinux и вызывает компилятор Intel/Win32.

EDIT2: с небольшими изменениями в make-файле и исходных кодах, компилятор MIPS собирается. Однако по мере того, как сборка переходит к межпроцессорному RTL, она почти сразу выдает ошибки.

1 ответ

Решение

И наконец, отредактируйте: в стволе FPC доступна поддержка цели компиляции Android/MIPSEL. Экспортируйте последнюю версию, создайте кросс-компилятор, удалите код.


Хотя поддержку MIPS ISA можно найти здесь и там в источниках FP, официально это еще не сделано. В ожидании релиза 2.7.

Между тем, есть поддержка компиляции в байт-код Java в транке, это описано в вики FP. Может быть, я могу использовать это в качестве временного промежутка...

РЕДАКТИРОВАТЬ: Free Pascal поверх JVM в целом работает на Android, но его правила несколько отличаются от обычного Pascal. В противном случае правильный Pascal выдается при компиляции в JVM. Так что он не подходит для переноса больших массивов унаследованного кода Pascal, который изначально не был написан с учетом JVM.

РЕДАКТИРОВАТЬ: я получил свой проект FPC, работающий на MIPS/Android, но мой рецепт не подходит для общего потребления, потому что сфера использования Pascal RTL в моем проекте очень ограничена. Он включает в себя кросс-компиляцию из сборки Pascal в MIPS (нацеленную на MIPSEL/Linux, доступную в магистрали FPC), а затем передает сгенерированные источники сборки в систему сборки NDK, обеспечивая повторную реализацию C/ Assembly ограниченного подмножества RTL Pascal.

Все тело Pascal RTL большое и страшное. Мое решение, которое включает в себя повторную реализацию Pascal RTL в C с нуля, ну, в общем, противоположно общему применению.

Другие вопросы по тегам