diff --git a/bin/varnishd/Makefile.am b/bin/varnishd/Makefile.am
index 1ca60b9..8851613 100644
--- a/bin/varnishd/Makefile.am
+++ b/bin/varnishd/Makefile.am
@@ -107,9 +107,15 @@ varnishd_LDADD = \
 	$(top_builddir)/lib/libvcl/libvcl.la \
 	$(top_builddir)/lib/libvgz/libvgz.la \
 	@JEMALLOC_LDADD@ \
-	${DL_LIBS} ${PTHREAD_LIBS} ${NET_LIBS} ${LIBM} ${LIBUMEM}
+	${DL_LIBS} ${PTHREAD_LIBS} ${NET_LIBS} ${LIBM} ${LIBUMEM} ${CYGWIN_varnishd_LDFLAGS}
 
 EXTRA_DIST = default.vcl
+
+EXTRA_SCRIPTS = 
+
+sbin_SCRIPTS = ${CYGWIN_libvarnishd_OBJECTS}
+
+
 DISTCLEANFILES = default_vcl.h
 
 #
diff --git a/configure.ac b/configure.ac
index ab2bd65..1c501b1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -34,6 +34,7 @@ CC="$PTHREAD_CC"
 AC_PROG_INSTALL
 AC_PROG_LIBTOOL
 AC_PROG_MAKE_SET
+AC_PROG_LN_S
 AC_CHECK_PROGS(XSLTPROC, [xsltproc], "no")
 if test "x$XSLTPROC" = "xno"; then
    AC_MSG_WARN([xsltproc not found – not building documentation])
@@ -469,6 +478,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"
+		;;
 	*)
 		VCC_CC="exec $PTHREAD_CC $OCFLAGS $PTHREAD_CFLAGS -fpic -shared -Wl,-x -o %o %s"
 		;;
@@ -499,6 +521,26 @@ esac])
 AC_SUBST(JEMALLOC_SUBDIR)
 AC_SUBST(JEMALLOC_LDADD)
 
+# 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)
+
+
 # Generate output
 AC_CONFIG_FILES([
     Makefile
diff --git a/lib/libvcl/Makefile.am b/lib/libvcl/Makefile.am
index c594885..80700b3 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
 
diff --git a/lib/libvcl/vcc_vmod.c b/lib/libvcl/vcc_vmod.c
index 45fe1cd..3788ac3 100644
--- a/lib/libvcl/vcc_vmod.c
+++ b/lib/libvcl/vcc_vmod.c
@@ -98,7 +98,11 @@ vcc_ParseImport(struct vcc *tl)
 		bprintf(fn, "%s", tl->t->dec);
 		vcc_NextToken(tl);
 	} else {
+#if defined(__CYGWIN__)
+		bprintf(fn, "%s/cygvmod_%.*s.dll", tl->vmod_dir, PF(mod));
+#else
 		bprintf(fn, "%s/libvmod_%.*s.so", tl->vmod_dir, PF(mod));
+#endif
 	}
 
 	Fh(tl, 0, "static void *VGC_vmod_%.*s;\n", PF(mod));
diff --git a/lib/libvmod_std/Makefile.am b/lib/libvmod_std/Makefile.am
index 5437c02..214253b 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.dll .libs/libvmod_std.so
+endif
