H2o: Windows์—์„œ libh2o๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2017๋…„ 05์›” 18์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: h2o/h2o

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฐฉ๊ธˆ 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>

๋ชจ๋“  5 ๋Œ“๊ธ€

๋„ค์ดํ‹ฐ๋ธŒ 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๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ pull request๋กœ ์ œ์ถœํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋Š” ์ด์ œ 3๋…„์ด ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ h2o๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉฐ ํ˜„์žฌ ์†Œ์Šค๋Š” ๋” ์ด์ƒ MingW์—์„œ ๋นŒ๋“œ๋˜๊ฑฐ๋‚˜ ๊ทธ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋งŒ์•ฝ ๊ทธ๋žฌ๋‹ค๋ฉด). h2o ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ๋งŒํ•œ Urbit ๋ฅผ Windows๋กœ ์ด์‹ํ•˜๋Š” ๋™์•ˆ h2o์šฉ ํŒจ์น˜๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ฒ”์œ„๋Š” Urbit์— ํ•„์š”ํ•œ ๊ฒƒ์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. libuv ๋ณ€ํ˜•๋งŒ ๋นŒ๋“œ๋˜๊ณ  fastcgi ๋˜๋Š” memcached ์ง€์›์€ ์—†์Šต๋‹ˆ๋‹ค. ์ค„ ์ˆ˜์— ๋”ฐ๋ฅธ ๊ฐ€์žฅ ํฐ ๋ณ€ํ™”๋Š” libuv uv_buf_t ๋ฐ h2o h2o_iovec_t ๊ฐ€ ๋‘ ํ•„๋“œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์„ ์–ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. MingW์—์„œ libuv๋Š” ์ถ”๊ฐ€ ๋ณต์‚ฌ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด WinSock ์ˆœ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด h2o๋Š” POSIX๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ฌธํ•˜๋‹ค. ํŒจ์น˜๋Š” MingW์—์„œ ๋นŒ๋“œ๋œ ๊ฒฝ์šฐ h2o_iovec_t ์˜ ํ•„๋“œ๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

/cc @kazuho

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰