Scintillaとmrubyでテキストエディタを作る(3) : mruby-cli化

前回のさらに続き。

ビルド方法の検討

作成中のエディタScintillacurses等のライブラリに依存しまくっているので、ビルドが面倒であった。

また、複数のプラットフォームで利用できないか、検討した。

当初は、buildスクリプトを頑張って用意していたが、なかなか大変だったので、 mruby-cliを使ってマルチプラットフォーム化に取り組んだ。

まず、どっか新しいディレクトリで、

$ mruby-cli --setup mruby-bin-mrbmacs-curses

を実行して、必要なファイルを用意する。

作成された、Dockerfile、Rakefile、build_config.rb、docker-compose.ymlをガシガシ弄る。

x86_64-pc-linux-gnui386-pc-linux-gnux86_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を追加していたことを思い出した。

我ながら、色々と中途半端で良くない・・・