結構時間がかかったのですが、ここ３週間くらいで以下の作業を行いました。

ecl-16.1.3をAndroid7.0 arm, x86向けにクロスコンパイル

出来たecl-16.1.3のクロス環境を使って、maxima-5.39.0をクロスコンパイル

時間がかかってしまったのにはいくつか大きな理由がありました。

静的リンクで１つのファイルにしたかったのですが、コンパイル環境の設定がわからず悩みました。結局configureの引数に--disable-sharedを指定すると静的リンクになりました。

Maximaのソースコードをコンパイルして静的リンクをして、eclとmaximaが含まれるバイナリを作る方法がわからず悩みました。結局、lispのコアの部分のコンパイル処理の部分にlispのコアだけでなくmaximaのソースも加えてコンパイル、リンク処理をさせるようにしました。

上記の変更を行うと、CLOSのメッソド結合関数が未定義だ、とエラーを吐いてビルドが止まってしまうのです。理由はlispコアのCLOSの定義にはcombin.lspが、maximaにはcombin.lispがあり、前者をコンパイルして出来たcombin.oを後者のコンパイル結果が書き潰していたのでした。

本日ようやく全部のコンパイル、リンク、エミュレータ上でのecl起動、maxima起動までたどり着きました。