Windows環境でもHTTP2関連をいじるにはnghttp2のツールも動かせた方がよいだろう。
ということで、cygwin環境一択で作業を進めた
mruby-onig-regexpのビルド
mruby-onig-regexpが無条件でOSがWindowsだとMSVCを選択してしまう。 さらにOnigumoもcygwin環境でもLib.exeをarの代わりに使用する。しかもLib.exeのオプションが 誤っている。
Onigumoではlibonig.libが作られるが、mruby-onig-regexpではlibonig.aを期待している。
- /usr/include/sysに/usr/include/endian.hのシンボリックリンクを作成
- mruby-onig-regexpのmrbgem.rakeファイルの修正
- OSがWindowsだと無条件にVC++なので、これを無効化
- 作成されたlibonig.libをコピーしてlibonig.aを作成
- libtool.m4の修正
- lib.exeではなく、cygwinのarを使うように修正
これらの具体的な対応内容はhttps://gist.github.com/kjunichi/81d876fe0c7307ba3978参照。
- h2o本体はcygwinでフツーにビルド出来た
- libuvはcygwinをサポートしていないスレッド周りで問題があるらしい。(joyent/libuv#845)