H2o: Puis-je compiler libh2o sous windows

Créé le 18 mai 2017  ·  5Commentaires  ·  Source: h2o/h2o

Commentaire le plus utile

Je viens de construire libh2o via CYGWIN. Il n'y a qu'un changement mineur requis:

$  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>

Tous les 5 commentaires

Il y a pas mal de travail à faire pour le porter proprement vers WIN32 natif. J'y ai passé quelques après-midi pour avoir une idée. Cela dit, je crois qu'il se construit en Cygwin...

J'essaie de me conformer à libh2o en utilisant mingw. mais gnulib-tool ne peut pas prendre en charge cmake.Je n'ai pas réussi à importer... au projet sous windows.

Je viens de construire libh2o via CYGWIN. Il n'y a qu'un changement mineur requis:

$  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>

J'ai essayé de construire le serveur complet aujourd'hui - cela a fonctionné. Maintenant, je peux utiliser h2o sous Windows. Je pense que cela devrait être soumis dans une pull request.

Ce fil a maintenant plus de 3 ans. h2o a changé depuis lors et les sources actuelles ne se construisent plus ou ne fonctionnent plus telles quelles sur MingW (si elles l'ont déjà fait). J'ai fait un patch pour h2o lors du portage d' Urbit vers Windows qui pourrait intéresser le projet h2o. Sa portée est limitée à ce dont j'avais besoin pour Urbit : seule la variante libuv est construite, et pas de support fastcgi ou memcached. Le plus grand changement par nombre de lignes est causé par libuv uv_buf_t et h2o h2o_iovec_t déclarant les deux champs dans l'ordre inverse : sur MingW, libuv utilise l'ordre WinSock pour éviter les copies supplémentaires, alors que h2o utilise le POSIX ordre. Le patch échange les champs en h2o_iovec_t s'il est construit sur MingW.

/cc @kazuho

Cette page vous a été utile?
0 / 5 - 0 notes