ネイティブのWIN32にクリーンに移植するにはかなりの作業が必要です。 私はそれを感じるためにそれに数日の午後を過ごしました。 そうは言っても、Cygwinに組み込まれていると思います...
私はmingwを使用してlibh2oに準拠しようとしています。 しかし、gnulib-toolはcmakeをサポートできません。インポートに失敗しました
CYGWINを介してlibh2oをビルドしました。 必要な変更はわずかです。
$ cmake . -G"Unix Makefiles" -DWITH_BUNDLED_SSL=0 -DWITH_MRUBY=0 -DLIBUV_LIBRARIES=~/git/libuv/.libs/libuv.a -DLIBUV_INCLUDE_DIR=~/git/libuv/include -DLIBUV_VERSION=1.11.0
$ make examples-simple
$ git diff
diff --git a/deps/libyrmcds/yrmcds_portability.h b/deps/libyrmcds/yrmcds_portability.h
index c9fd4d91..b1f151d4 100644
--- a/deps/libyrmcds/yrmcds_portability.h
+++ b/deps/libyrmcds/yrmcds_portability.h
@@ -27,7 +27,7 @@
# define htole64(x) OSSwapHostToLittleInt64(x)
# define be64toh(x) OSSwapBigToHostInt64(x)
# define le64toh(x) OSSwapLittleToHostInt64(x)
-#elif defined(__linux__)
+#elif defined(__linux__) || defined (__CYGWIN__)
# include <endian.h>
#elif defined(sun) // Solaris
# include <sys/byteorder.h>
今日、完全なサーバーを構築してみました-それはうまくいきました。 これで、Windowsでh2oを使用できます。 これはプルリクエストで提出する必要があると思います。
このスレッドは現在3年以上経過しています。 それ以来、h2oは変更されており、現在のソースはMingW上でそのままビルドまたは動作しなくなりました(これまでに行った場合)。 UrbitをWindowsに移植するパッチを作成しました。その範囲は、Urbitに必要なものに限定されています。libuvバリアントのみがビルドされ、fastcgiまたはmemcachedのサポートはありません。 行数による最大の変化は、libuv uv_buf_t
とh2o h2o_iovec_t
が2つのフィールドを逆の順序で宣言することによって引き起こされます。MingWでは、libuvはWinSockの順序を使用して余分なコピーを回避しますが、h2oはPOSIXを使用します。注文。 MingWで構築されている場合、パッチはh2o_iovec_t
のフィールドを交換します。
/ cc @kazuho
最も参考になるコメント
CYGWINを介してlibh2oをビルドしました。 必要な変更はわずかです。