<p class="searchable">It will be nice to support Varnish in Cygwin plataform (<a class="ext-link" href="http://www.cygwin.com/"><span class="icon"> </span>http://www.cygwin.com</a>) </p>
<div class="searchable">I have opened a ticket in <a href="http://varnish-cache.org/ticket/736">http://varnish-cache.org/ticket/736</a></div>
<div class="searchable"> </div>
<div class="searchable"> </div>
<div class="searchable">After weeks making some tests I was able to build successful Varnish in Cygwin, the problems that I have found are: </div>
<blockquote class="searchable">
<p>1) Cygwin doesn't support CLOCK_MONOTONIC but HAVE_CLOCK_GETTIME is defined </p></blockquote>
<blockquote class="searchable">
<p>2) RTLD_LOCAL is not defined in dlfcn.h headers </p></blockquote>
<blockquote class="searchable">
<p>3) madvise function and MADV_RANDOM define does not exists, in Cygwin their correct names are posix_madvise and POSIX_MADV_RANDOM </p></blockquote>
<blockquote class="searchable">
<p>4) In Cygwin SO_RCVTIMEO_WORKS and SO_SNDTIMEO_WORKS doesn't work properly because in Windows setsockopt/getsockopt expects time-out in "int" milliseconds instead of "struct timeval" (in future, i think it could be fixed) </p>
</blockquote>
<blockquote class="searchable">
<p>5) Linkage problems ("Undefined reference" errors). The undefined reference is because fundamentally ELF (UNIX) and PE/COFF (Windows) are very different in terms of how linking works under the hood. The short explanation is that PE/COFF requires all references to be resolved at link-time: </p>
</blockquote>
<div class="searchable">
<ul>
<li><a class="ext-link" href="http://www.cygwin.com/ml/cygwin/2006-12/msg00592.html"><span class="icon"> </span>http://www.cygwin.com/ml/cygwin/2006-12/msg00592.html</a> </li>
<li><a class="ext-link" href="http://www.cygwin.com/ml/cygwin/2005-07/msg00675.html"><span class="icon"> </span>http://www.cygwin.com/ml/cygwin/2005-07/msg00675.html</a> </li>
<li><a class="ext-link" href="http://www.mail-archive.com/cygwin@cygwin.com/msg81837.html"><span class="icon"> </span>http://www.mail-archive.com/cygwin@cygwin.com/msg81837.html</a> </li></ul></div>
<blockquote>
<blockquote>
<p>6) VCL compilation problems ("Undefined reference" errors). VCL compiled DLL uses simbols from EXE. It is necesary to create a fake import file from EXE to allow compilation. </p></blockquote></blockquote>
<p>I have solved all problems modifing source code and automake scripts. I attach all modification to this ticket. </p>
<p>It is also necessary to execute varnishd with cc_command parameter in order to compile VCL correctly: </p>
<p>-p cc_command='cc -shared /tmp/varnish-2.1.2/bin/varnishd/varnishd-cache_vrt.o /tmp/varnish-2.1.2/bin/varnishd/varnishd-cache_backend_cfg.o -L/usr/local/lib -L/tmp/varnish-2.1.2/bin/varnishd/ -lvarnish -lvarnishd -Wl,--export-all-symbols -Wl,-x -o %o %s' </p>

<p>I have tested varnish and works OK. </p>
<p>I think it will be interesting to add this information to wiki: </p>
<ul>
<li><a class="ext-link" href="http://www.varnish-cache.org/wiki/Installation"><span class="icon"> </span>http://www.varnish-cache.org/wiki/Installation</a> </li></ul>
<div> </div>
<div>I have worked with varnish 2.1.2 version, I don't know if there is any change in trunk. </div>
<div>
<div class="comment searchable">
<p>The modifications works OK in SOLARIS and CYGWIN platforms, I need somebody to test in Linux. </p>
<p> </p></div></div>