]] jdzstz - gmail dot com 

Hi,

| I have updated my varnish patches for new cygwin versión 1.7.8

Thanks,

|  * Version 2.1.5:
| 
http://www.varnish-cache.org/trac/attachment/wiki/VarnishOnCygwinWindows/varnish-2.1.5-cygwin.patch

While you're of course free to keep this around, I'm not going to merge
any cygwin support to the 2.1 branch.

|  * Trunk: 
http://www.varnish-cache.org/trac/attachment/wiki/VarnishOnCygwinWindows/varnish-githead-cygwin.patch

In general, I'm a bit unhappy with most of this patch as it leaks too
much cygwin stuff across the build system.  I'll comment some issues
inline.

| diff --git a/bin/varnishd/Makefile.am b/bin/varnishd/Makefile.am
| index b8db6e0..f920b42 100644
| --- a/bin/varnishd/Makefile.am
| +++ b/bin/varnishd/Makefile.am
| +
| +EXTRA_SCRIPTS = 
| +
| +sbin_SCRIPTS = ${CYGWIN_libvarnishd_OBJECTS}
| +
| +
|  DISTCLEANFILES = default_vcl.h

Why the extra EXTRA_SCRIPTS?  I'd also like to not have to care about
gcc on cygwin having problems linking a DLL with unresolved symbols in it.

|  #
| diff --git a/configure.ac b/configure.ac
| index f574764..9f7753e 100644
| --- a/configure.ac
| +++ b/configure.ac

This bit has been merged.

| @@ -457,6 +488,19 @@ else
|       *-*-darwin*)
|               VCC_CC="exec cc $OCFLAGS -dynamiclib 
-Wl,-undefined,dynamic_lookup -o %o %s"
|               ;;
| +     *-*-cygwin*)
| +             #calculate ${exec_prefix}/lib, because it is asigned later, and 
we need now
| +             prefix_aux=`eval echo ${prefix}`
| +             test "x$prefix_aux" = xNONE && prefix_aux=`eval echo 
${ac_default_prefix}`
| +             # Let make expand exec_prefix.
| +             exec_prefix_aux=`eval echo ${exec_prefix}`
| +             test "x$exec_prefix_aux" = xNONE && exec_prefix_aux=`eval echo 
${prefix_aux}`
| +             # Remove "/" if we are in Root
| +             test "x$exec_prefix_aux" = "x/" && exec_prefix_aux=""
| +             #calculate compilation path
| +             comp_prefix=`pwd`
| +             VCC_CC="$PTHREAD_CC $OCFLAGS $PTHREAD_CFLAGS -shared %s 
-L${comp_prefix}/lib/libvarnish/.libs -L${comp_prefix}/bin/varnishd 
-L${exec_prefix_aux}/lib -L${exec_prefix_aux}/sbin -L${exec_prefix_aux}/bin 
-lvarnish -lvarnishd -o %o"
| +             ;;

Adding those -L bits here looks a bit odd.  Doesn't libtool just add the
necessary rpath if that's needed?

| +# Add library dependencies with libvarnish (linker needs it in CYGWIN during 
compilation time)
| +# Generate fake library libvarnishd.dll.a in order to successful linking DLL 
when resolving varnishd.exe simbols
| +case $target in
| +*-*-cygwin*)
| +             CYGWIN_varnishd_LDFLAGS=' -Wl,-out-implib,libvarnishd.dll.a'
| +             CYGWIN_libvarnishd_OBJECTS='libvarnishd.dll.a'
| +             
CYGWIN_libvmod_std_la_LIBADD='$(top_builddir)/lib/libvarnish/libvarnish.la 
-lvarnishd -L$(top_builddir)/bin/varnishd'
| +             AC_SUBST(CYGWIN_varnishd_LDFLAGS)
| +             AC_SUBST(CYGWIN_libvarnishd_OBJECTS)
| +             AC_SUBST(CYGWIN_libvmod_std_la_LIBADD)
| +             cygwin=true
| +             ;;
| +*)
| +             cygwin=false
| +             ;;
| +esac
| +
| +AM_CONDITIONAL([CYGWIN_COMPILATION], test x$cygwin = xtrue)

Can we get rid of that fake library?  Also, doesn't cygwin support
inter-library dependencies properly?

| --- a/lib/libvarnishapi/Makefile.am
| +++ b/lib/libvarnishapi/Makefile.am
| @@ -26,4 +26,6 @@ libvarnishapi_la_SOURCES = \
|  libvarnishapi_la_CFLAGS = \
|       -DVARNISH_STATE_DIR='"${VARNISH_STATE_DIR}"'
|  
| -libvarnishapi_la_LIBADD = @PCRE_LIBS@
| +libvarnishapi_la_LIBADD = \
| +     $(top_builddir)/lib/libvarnish/libvarnish.la \
| +     @PCRE_LIBS@

Why is this?

| diff --git a/lib/libvcl/Makefile.am b/lib/libvcl/Makefile.am
| index aab8749..4645bba 100644
| --- a/lib/libvcl/Makefile.am
| +++ b/lib/libvcl/Makefile.am
| @@ -33,6 +33,8 @@ libvcl_la_SOURCES = \
|       vcc_vmod.c \
|       vcc_xref.c
|  
| +libvcl_la_LIBADD = $(top_builddir)/lib/libvarnish/libvarnish.la
| +
|  EXTRA_DIST = \
|       generate.py

What does this solve for you?

| diff --git a/lib/libvmod_std/Makefile.am b/lib/libvmod_std/Makefile.am
| index 36147fe..41c32c8 100644
| --- a/lib/libvmod_std/Makefile.am
| +++ b/lib/libvmod_std/Makefile.am
| @@ -13,9 +13,16 @@ libvmod_std_la_SOURCES = \
|       vmod_std.c \
|       vmod_std_fileread.c
|  
| +libvmod_std_la_LIBADD = ${CYGWIN_libvmod_std_la_LIBADD}
| +
|  vcc_if.c vcc_if.h: $(top_srcdir)/lib/libvmod_std/vmod.py 
$(top_srcdir)/lib/libvmod_std/vmod.vcc
|       @PYTHON@ $(top_srcdir)/lib/libvmod_std/vmod.py 
$(top_srcdir)/lib/libvmod_std/vmod.vcc
|  
|  EXTRA_DIST = vmod.py vmod.vcc
|  
|  CLEANFILES = $(builddir)/vcc_if.c $(builddir)/vcc_if.h
| +
| +if CYGWIN_COMPILATION
| +install-exec-hook:
| +     $(LN_S) -f cygvmod_std-1.dll .libs/libvmod_std.so.1
| +endif

What?  You shouldn't symlink stuff into .libs directories.

-- 
Tollef Fog Heen
Varnish Software
t: +47 21 98 92 64

_______________________________________________
varnish-dev mailing list
[email protected]
http://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev

Reply via email to