Scintillaとmrubyでテキストエディタを作る(3) : mruby-cli化
前回のさらに続き。
ビルド方法の検討
作成中のエディタは Scintillaやcurses等のライブラリに依存しまくっているので、ビルドが面倒であった。
また、複数のプラットフォームで利用できないか、検討した。
当初は、buildスクリプトを頑張って用意していたが、なかなか大変だったので、 mruby-cliを使ってマルチプラットフォーム化に取り組んだ。
まず、どっか新しいディレクトリで、
$ mruby-cli --setup mruby-bin-mrbmacs-curses
を実行して、必要なファイルを用意する。
作成された、Dockerfile、Rakefile、build_config.rb、docker-compose.ymlをガシガシ弄る。
x86_64-pc-linux-gnu、i386-pc-linux-gnu、x86_64-apple-darwin14、i386-apple-darwin14、i686-w64-mingw32、x86_64-w64-mingw32 で、コンパイルできるところまでは行き着いた。動くかどうかは、未確認なものもあり。
Dockerfileでは、ビルドに必要なcursesとiconvを用意する処理を追加している。
色々と悩んだ末に、WIndows環境ではPDCursesを使うようにしている。 また、mruby-requireを一時的に組込まないようにしている(確か、ビルドでエラーが出たため)。
Linux環境では、iconvはglibcに含まれているため、コンパイル時の-liconvが不要。 build_config.rbでは以下のような場当たり的な対処を施している。
conf.gem :github => 'masahino/mruby-iconv', :branch => 'add_iconvlist' do |g| g.linker.libraries.delete 'iconv' end
ここで、実験的にmruby-iconvをフォークして、iconvlistを追加していたことを思い出した。
我ながら、色々と中途半端で良くない・・・