markcox / snappy

Automatically exported from code.google.com/p/snappy
Other
0 stars 0 forks source link

MSVC support #30

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hi, after revision 28 the build goes much better on Windows, thanks for those 
changes.

However, it's still not enough for me. I'm using Visual Studio 2010 and this is 
how I configure/compile, via Cygwin:

$ export CXX=cl
$ export CC=cl
$ ./configure
$ make

I got the error:

c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-test.h(261) : error C2079: 
'snappy::CycleTimer::start_' uses undefined struct 'snappy::timeval'
c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-test.h(244) : error C3861: 
'gettimeofday': identifier not found
c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-test.h(248) : error C2079: 
'stop' uses undefined struct 'snappy::timeval'
c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-test.h(249) : error C3861: 
'gettimeofday': identifier not found
c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-test.h(251) : error C2228: 
left of '.tv_sec' must have class/struct/union
        type is 'int'
c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-test.h(251) : error C2228: 
left of '.tv_sec' must have class/struct/union
        type is 'int'
c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-test.h(252) : error C2228: 
left of '.tv_usec' must have class/struct/union
        type is 'int'
c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-test.h(252) : error C2228: 
left of '.tv_usec' must have class/struct/union
        type is 'int'
make[1]: *** [snappy_unittest-snappy_unittest.obj] Error 2
make[1]: Leaving directory `/home/fdmanana/snappy/snappy-1.0.1'
make: *** [all] Error 2

The attached patch fixes this particular issue - sys/time.h doesn't exist on 
Windows neither does the function gettimeofday (required by snappy-test.h).

However, after applying this patch I then get the following error (I've 
included the full configure output and make output in case it helps):

fdmanana ~/snappy/snappy-1.0.1 > ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking build system type... i686-pc-cygwin
checking host system type... i686-pc-cygwin
checking for style of include used by make... GNU
checking for gcc... cl
checking whether the C compiler works... yes
checking for C compiler default output file name... conftest.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... obj
checking whether we are using the GNU C compiler... no
checking whether cl accepts -g... yes
checking for cl option to accept ISO C89... none needed
checking dependency style of cl... none
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for non-GNU ld... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 8192
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... file_magic ^x86 archive 
import|^x86 DLL
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from cl object... ok
checking how to run the C preprocessor... cl -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... no
checking for inttypes.h... no
checking for stdint.h... yes
checking for unistd.h... no
checking for dlfcn.h... no
checking for objdir... .libs
checking for cl option to produce PIC... -DDLL_EXPORT -DPIC
checking if cl PIC flag -DDLL_EXPORT -DPIC works... yes
checking if cl static flag  works... yes
checking if cl supports -c -o file.obj... no
checking if cl supports -c -o file.obj... (cached) no
checking if we can lock with hard links... yes
checking whether the cl linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether we are using the GNU C++ compiler... no
checking whether cl accepts -g... yes
checking dependency style of cl... none
checking whether we are using the GNU C++ compiler... (cached) no
checking whether cl accepts -g... (cached) yes
checking dependency style of cl... (cached) none
checking how to run the C++ preprocessor... cl -E
checking whether the cl linker (/usr/bin/ld) supports shared libraries... yes
checking for cl option to produce PIC...  -DPIC
checking if cl PIC flag  -DPIC works... yes
checking if cl static flag  works... yes
checking if cl supports -c -o file.obj... no
checking if cl supports -c -o file.obj... (cached) no
checking if we can lock with hard links... yes
checking whether the cl linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether byte ordering is bigendian... no
checking for stdint.h... (cached) yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking sys/mman.h usability... no
checking sys/mman.h presence... no
checking for sys/mman.h... no
checking sys/resource.h usability... no
checking sys/resource.h presence... no
checking for sys/resource.h... no
checking sys/time.h usability... no
checking sys/time.h presence... no
checking for sys/time.h... no
checking windows.h usability... yes
checking windows.h presence... yes
checking for windows.h... yes
checking for mmap... no
checking for 'gtest-config'... checking for gtest-config... no
no
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for gflags... no
checking if the compiler supports __builtin_expect... no
checking if the compiler supports __builtin_ctzll... no
checking for zlibVersion in -lz... no
checking for lzo1x_1_15_compress in -llzo2... no
checking for lzf_compress in -llzf... no
checking for fastlz_compress in -lfastlz... no
checking for qlz_compress in -lquicklz... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating snappy-stubs-public.h
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
fdmanana ~/snappy/snappy-1.0.1 > make
make  all-am
make[1]: Entering directory `/home/fdmanana/snappy/snappy-1.0.1'
source='snappy.cc' object='snappy.lo' libtool=yes \
        DEPDIR=.deps depmode=none /bin/sh ./depcomp \
        /bin/sh ./libtool --tag=CXX   --mode=compile cl -DHAVE_CONFIG_H -I.     -g -c -o snappy.lo snappy.cc
libtool: compile:  cl -DHAVE_CONFIG_H -I. -g -c snappy.cc  -DPIC
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '-g'
snappy.cc
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning 
C4530: C++ exception handler used, but unwind semantics are not enabled. 
Specify /EHsc
libtool: compile: mv -f "snappy.obj" ".libs/snappy.obj"
libtool: compile:  cl -DHAVE_CONFIG_H -I. -g -c snappy.cc >/dev/null 2>&1
source='snappy-sinksource.cc' object='snappy-sinksource.lo' libtool=yes \
        DEPDIR=.deps depmode=none /bin/sh ./depcomp \
        /bin/sh ./libtool --tag=CXX   --mode=compile cl -DHAVE_CONFIG_H -I.     -g -c -o snappy-sinksource.lo snappy-sinksource.cc
libtool: compile:  cl -DHAVE_CONFIG_H -I. -g -c snappy-sinksource.cc  -DPIC
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '-g'
snappy-sinksource.cc
libtool: compile: mv -f "snappy-sinksource.obj" ".libs/snappy-sinksource.obj"
libtool: compile:  cl -DHAVE_CONFIG_H -I. -g -c snappy-sinksource.cc >/dev/null 
2>&1
source='snappy-stubs-internal.cc' object='snappy-stubs-internal.lo' libtool=yes 
\
        DEPDIR=.deps depmode=none /bin/sh ./depcomp \
        /bin/sh ./libtool --tag=CXX   --mode=compile cl -DHAVE_CONFIG_H -I.     -g -c -o snappy-stubs-internal.lo snappy-stubs-internal.cc
libtool: compile:  cl -DHAVE_CONFIG_H -I. -g -c snappy-stubs-internal.cc  -DPIC
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '-g'
snappy-stubs-internal.cc
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning 
C4530: C++ exception handler used, but unwind semantics are not enabled. 
Specify /EHsc
libtool: compile: mv -f "snappy-stubs-internal.obj" 
".libs/snappy-stubs-internal.obj"
libtool: compile:  cl -DHAVE_CONFIG_H -I. -g -c snappy-stubs-internal.cc 
>/dev/null 2>&1
source='snappy-c.cc' object='snappy-c.lo' libtool=yes \
        DEPDIR=.deps depmode=none /bin/sh ./depcomp \
        /bin/sh ./libtool --tag=CXX   --mode=compile cl -DHAVE_CONFIG_H -I.     -g -c -o snappy-c.lo snappy-c.cc
libtool: compile:  cl -DHAVE_CONFIG_H -I. -g -c snappy-c.cc  -DPIC
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '-g'
snappy-c.cc
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning 
C4530: C++ exception handler used, but unwind semantics are not enabled. 
Specify /EHsc
libtool: compile: mv -f "snappy-c.obj" ".libs/snappy-c.obj"
libtool: compile:  cl -DHAVE_CONFIG_H -I. -g -c snappy-c.cc >/dev/null 2>&1
/bin/sh ./libtool --tag=CXX   --mode=link cl  -g -version-info 1:1:0  -o 
libsnappy.la -rpath /usr/local/lib snappy.lo snappy-sinksource.lo 
snappy-stubs-internal.lo snappy-c.lo
libtool: link: warning: undefined symbols not allowed in i686-pc-cygwin shared 
libraries
libtool: link: lib -OUT:.libs/libsnappy.lib  snappy.obj snappy-sinksource.obj 
snappy-stubs-internal.obj snappy-c.obj
Microsoft (R) Library Manager Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

libtool: link: ( cd ".libs" && rm -f "libsnappy.la" && ln -s "../libsnappy.la" 
"libsnappy.la" )
source='snappy_unittest.cc' object='snappy_unittest-snappy_unittest.obj' 
libtool=no \
        DEPDIR=.deps depmode=none /bin/sh ./depcomp \
        cl -DHAVE_CONFIG_H -I.      -g -c -o snappy_unittest-snappy_unittest.obj `if test -f 'snappy_unittest.cc'; then
cygpath -w 'snappy_unittest.cc'; else cygpath -w './snappy_unittest.cc'; fi`
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9035 : option 'o' has been deprecated and will be 
removed in a future release
cl : Command line warning D9002 : ignoring unknown option '-g'
snappy_unittest.cc
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning 
C4530: C++ exception handler used, but unwind semantics are not enabled. 
Specify /EHsc
C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(1140) : warning 
C4005: 'ARRAYSIZE' : macro redefinition
        c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-stubs-internal.h(73) : see previous definition of 'ARRAYSIZE'
c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy_unittest.cc(165) : warning 
C4715: 'snappy::MinimumRequiredOutputSpace' : not all control paths return a 
value
source='snappy-test.cc' object='snappy_unittest-snappy-test.obj' libtool=no \
        DEPDIR=.deps depmode=none /bin/sh ./depcomp \
        cl -DHAVE_CONFIG_H -I.      -g -c -o snappy_unittest-snappy-test.obj `if test -f 'snappy-test.cc'; then cygpath
-w 'snappy-test.cc'; else cygpath -w './snappy-test.cc'; fi`
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9035 : option 'o' has been deprecated and will be 
removed in a future release
cl : Command line warning D9002 : ignoring unknown option '-g'
snappy-test.cc
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning 
C4530: C++ exception handler used, but unwind semantics are not enabled. 
Specify /EHsc
C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(1140) : warning 
C4005: 'ARRAYSIZE' : macro redefinition
        c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-stubs-internal.h(73) : see previous definition of 'ARRAYSIZE'
/bin/sh ./libtool --tag=CXX   --mode=link cl  -g   -o snappy_unittest.exe 
snappy_unittest-snappy_unittest.obj snappy_unittest-snappy-test.obj libsnappy.la
libtool: link: cl -g -o .libs/snappy_unittest.exe 
snappy_unittest-snappy_unittest.obj snappy_unittest-snappy-test.obj  
./.libs/libsnappy.lib
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9035 : option 'o' has been deprecated and will be 
removed in a future release
cl : Command line warning D9002 : ignoring unknown option '-g'
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:snappy_unittest-snappy_unittest.exe
/out:.libs/snappy_unittest.exe
snappy_unittest-snappy_unittest.obj
snappy_unittest-snappy-test.obj
./.libs/libsnappy.lib
LINK : fatal error LNK1181: cannot open input file 
'snappy_unittest-snappy_unittest.obj'
make[1]: *** [snappy_unittest.exe] Error 2
make[1]: Leaving directory `/home/fdmanana/snappy/snappy-1.0.1'
make: *** [all] Error 2
fdmanana ~/snappy/snappy-1.0.1 > ls snappy_unittest.
snappy_unittest.cc   snappy_unittest.obj
fdmanana ~/snappy/snappy-1.0.1 > make check
source='snappy_unittest.cc' object='snappy_unittest-snappy_unittest.obj' 
libtool=no \
        DEPDIR=.deps depmode=none /bin/sh ./depcomp \
        cl -DHAVE_CONFIG_H -I.      -g -c -o snappy_unittest-snappy_unittest.obj `if test -f 'snappy_unittest.cc'; then
cygpath -w 'snappy_unittest.cc'; else cygpath -w './snappy_unittest.cc'; fi`
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9035 : option 'o' has been deprecated and will be 
removed in a future release
cl : Command line warning D9002 : ignoring unknown option '-g'
snappy_unittest.cc
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning 
C4530: C++ exception handler used, but unwind semantics are not enabled. 
Specify /EHsc
C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(1140) : warning 
C4005: 'ARRAYSIZE' : macro redefinition
        c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-stubs-internal.h(73) : see previous definition of 'ARRAYSIZE'
c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy_unittest.cc(165) : warning 
C4715: 'snappy::MinimumRequiredOutputSpace' : not all control paths return a 
value
source='snappy-test.cc' object='snappy_unittest-snappy-test.obj' libtool=no \
        DEPDIR=.deps depmode=none /bin/sh ./depcomp \
        cl -DHAVE_CONFIG_H -I.      -g -c -o snappy_unittest-snappy-test.obj `if test -f 'snappy-test.cc'; then cygpath
-w 'snappy-test.cc'; else cygpath -w './snappy-test.cc'; fi`
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9035 : option 'o' has been deprecated and will be 
removed in a future release
cl : Command line warning D9002 : ignoring unknown option '-g'
snappy-test.cc
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning 
C4530: C++ exception handler used, but unwind semantics are not enabled. 
Specify /EHsc
C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\winnt.h(1140) : warning 
C4005: 'ARRAYSIZE' : macro redefinition
        c:\cygwin\home\fdmanana\snappy\snappy-1.0.1\snappy-stubs-internal.h(73) : see previous definition of 'ARRAYSIZE'
/bin/sh ./libtool --tag=CXX   --mode=link cl  -g   -o snappy_unittest.exe 
snappy_unittest-snappy_unittest.obj snappy_unittest-snappy-test.obj libsnappy.la
libtool: link: cl -g -o .libs/snappy_unittest.exe 
snappy_unittest-snappy_unittest.obj snappy_unittest-snappy-test.obj  
./.libs/libsnappy.lib
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9035 : option 'o' has been deprecated and will be 
removed in a future release
cl : Command line warning D9002 : ignoring unknown option '-g'
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:snappy_unittest-snappy_unittest.exe
/out:.libs/snappy_unittest.exe
snappy_unittest-snappy_unittest.obj
snappy_unittest-snappy-test.obj
./.libs/libsnappy.lib
LINK : fatal error LNK1181: cannot open input file 
'snappy_unittest-snappy_unittest.obj'
make: *** [snappy_unittest.exe] Error 2

Do you any idea of why the file is missing?
Is there anything I can do to help fix this?

Thank you very much

Original issue reported on code.google.com by fil...@couchone.com on 11 Apr 2011 at 12:53

Attachments:

GoogleCodeExporter commented 9 years ago
As far as I know, you can't combine cygwin and MSVC like this reliably. If you 
want to build under MSVC, my guess is that you'll need to make a config.h 
manually (or define the HAVE_* flags manually) and then make a Visual Studio 
project out of it.

Original comment by se...@google.com on 11 Apr 2011 at 1:38

GoogleCodeExporter commented 9 years ago
I think Apache CouchDB for e.g. does this (cygwin + MSVC). If I comment out all 
the unit test references in the Makefile.am, then generate a new tarball (via 
make dist), extract this tarball into a Windows box, run configure and make 
there, it works. So it's something related to the unit tests code or automake 
configuration I suspect.

Btw, the attached patch is still needed for someone who wants to build the 
project in Visual Studio. Do you think it can be integrated?

I'm not a Windows specialist at all, I just would like to build snappy with 
Visual C++, including the tests :)

cheers

Original comment by fdman...@gmail.com on 11 Apr 2011 at 9:58

GoogleCodeExporter commented 9 years ago
I looked at the patch -- where does this code come from? It looks like code 
that was cut-and-pasted uncredited from either library or example code, which 
would probably not be appropriate for Snappy.

As for whether it works without the unit test, that seems to be mostly by luck 
to me. You can see that several invalid flags are being passed to the compiler.

Original comment by se...@google.com on 11 Apr 2011 at 10:02

GoogleCodeExporter commented 9 years ago
Ok, my fault, I forgot to credit the source. The source is at [1].

I've tried to build snappy both with MinGW and Cygwin.
For MinGW I get an infinite loop while building it, seems like the cause is the 
Makefile.am rules, however I don't have this issue on Linux or Mac OS X:

$ make
make  all-am
make[1]: Entering directory `/c/Users/fdmanana/git/snappy-1.0.1'
/bin/sh ./libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2 
-MT snappy.lo -MD -MP -MF .deps/snappy.T
po -c -o snappy.lo snappy.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy.lo -MD -MP -MF 
.deps/snappy.Tpo -c snappy.cc  -DDLL_EXPORT
-DPIC -o .libs/snappy.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy.lo -MD -MP -MF 
.deps/snappy.Tpo -c snappy.cc -o snappy.o >/
dev/null 2>&1
mv -f .deps/snappy.Tpo .deps/snappy.Plo
/bin/sh ./libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2 
-MT snappy-sinksource.lo -MD -MP -MF .de
ps/snappy-sinksource.Tpo -c -o snappy-sinksource.lo snappy-sinksource.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-sinksource.lo -MD 
-MP -MF .deps/snappy-sinksource.Tpo -c sn
appy-sinksource.cc  -DDLL_EXPORT -DPIC -o .libs/snappy-sinksource.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-sinksource.lo -MD 
-MP -MF .deps/snappy-sinksource.Tpo -c sn
appy-sinksource.cc -o snappy-sinksource.o >/dev/null 2>&1
mv -f .deps/snappy-sinksource.Tpo .deps/snappy-sinksource.Plo
/bin/sh ./libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2 
-MT snappy-stubs-internal.lo -MD -MP -MF
 .deps/snappy-stubs-internal.Tpo -c -o snappy-stubs-internal.lo snappy-stubs-internal.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-stubs-internal.lo 
-MD -MP -MF .deps/snappy-stubs-internal.T
po -c snappy-stubs-internal.cc  -DDLL_EXPORT -DPIC -o 
.libs/snappy-stubs-internal.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-stubs-internal.lo 
-MD -MP -MF .deps/snappy-stubs-internal.T
po -c snappy-stubs-internal.cc -o snappy-stubs-internal.o >/dev/null 2>&1
mv -f .deps/snappy-stubs-internal.Tpo .deps/snappy-stubs-internal.Plo
/bin/sh ./libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2 
-MT snappy-c.lo -MD -MP -MF .deps/snappy
-c.Tpo -c -o snappy-c.lo snappy-c.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-c.lo -MD -MP -MF 
.deps/snappy-c.Tpo -c snappy-c.cc  -DDLL_E
XPORT -DPIC -o .libs/snappy-c.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-c.lo -MD -MP -MF 
.deps/snappy-c.Tpo -c snappy-c.cc -o snapp
y-c.o >/dev/null 2>&1
mv -f .deps/snappy-c.Tpo .deps/snappy-c.Plo
/bin/sh ./libtool --tag=CXX   --mode=link g++  -g -O2 -version-info 1:1:0  -o 
libsnappy.la -rpath /usr/local/lib snappy.
lo snappy-sinksource.lo snappy-stubs-internal.lo snappy-c.lo  -lz
libtool: link: warning: undefined symbols not allowed in i686-pc-mingw32 shared 
libraries
libtool: link: ar cru .libs/libsnappy.a  snappy.o snappy-sinksource.o 
snappy-stubs-internal.o snappy-c.o
libtool: link: ranlib .libs/libsnappy.a
libtool: link: ( cd ".libs" && rm -f "libsnappy.la" && cp -p "../libsnappy.la" 
"libsnappy.la" )
g++ -DHAVE_CONFIG_H -I.      -g -O2 -MT snappy_unittest-snappy_unittest.o -MD 
-MP -MF .deps/snappy_unittest-snappy_unitt
est.Tpo -c -o snappy_unittest-snappy_unittest.o `test -f 'snappy_unittest.cc' 
|| echo './'`snappy_unittest.cc
mv -f .deps/snappy_unittest-snappy_unittest.Tpo 
.deps/snappy_unittest-snappy_unittest.Po
g++ -DHAVE_CONFIG_H -I.      -g -O2 -MT snappy_unittest-snappy-test.o -MD -MP 
-MF .deps/snappy_unittest-snappy-test.Tpo
-c -o snappy_unittest-snappy-test.o `test -f 'snappy-test.cc' || echo 
'./'`snappy-test.cc
mv -f .deps/snappy_unittest-snappy-test.Tpo .deps/snappy_unittest-snappy-test.Po
/bin/sh ./libtool --tag=CXX   --mode=link g++  -g -O2   -o snappy_unittest.exe 
snappy_unittest-snappy_unittest.o snappy_
unittest-snappy-test.o libsnappy.la   -lz
libtool: link: g++ -g -O2 -o .libs/snappy_unittest.exe 
snappy_unittest-snappy_unittest.o snappy_unittest-snappy-test.o
./.libs/libsnappy.a -lz
make[1]: Circular install-am <- all-am dependency dropped.
make[2]: Entering directory `/c/Users/fdmanana/git/snappy-1.0.1'
test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
 /bin/sh ./libtool   --mode=install /bin/install -c   libsnappy.la '/usr/local/lib'
libtool: install: /bin/install -c .libs/libsnappy.lai 
/usr/local/lib/libsnappy.la
libtool: install: /bin/install -c .libs/libsnappy.a /usr/local/lib/libsnappy.a
libtool: install: chmod 644 /usr/local/lib/libsnappy.a
libtool: install: ranlib /usr/local/lib/libsnappy.a
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-LLIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[2]: Circular all-am <- install dependency dropped.
make[3]: Entering directory `/c/Users/fdmanana/git/snappy-1.0.1'
test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
 /bin/sh ./libtool   --mode=install /bin/install -c   libsnappy.la '/usr/local/lib'
libtool: install: /bin/install -c .libs/libsnappy.lai 
/usr/local/lib/libsnappy.la
libtool: install: /bin/install -c .libs/libsnappy.a /usr/local/lib/libsnappy.a
libtool: install: chmod 644 /usr/local/lib/libsnappy.a
libtool: install: ranlib /usr/local/lib/libsnappy.a
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-LLIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[3]: Circular all-am <- install dependency dropped.
make[4]: Entering directory `/c/Users/fdmanana/git/snappy-1.0.1'
test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
 /bin/sh ./libtool   --mode=install /bin/install -c   libsnappy.la '/usr/local/lib'
libtool: install: /bin/install -c .libs/libsnappy.lai 
/usr/local/lib/libsnappy.la
libtool: install: /bin/install -c .libs/libsnappy.a /usr/local/lib/libsnappy.a
libtool: install: chmod 644 /usr/local/lib/libsnappy.a
libtool: install: ranlib /usr/local/lib/libsnappy.a
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-LLIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[4]: Circular all-am <- install dependency dropped.
make[5]: Entering directory `/c/Users/fdmanana/git/snappy-1.0.1'
test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
 /bin/sh ./libtool   --mode=install /bin/install -c   libsnappy.la '/usr/local/lib'
libtool: install: /bin/install -c .libs/libsnappy.lai 
/usr/local/lib/libsnappy.la
libtool: install: /bin/install -c .libs/libsnappy.a /usr/local/lib/libsnappy.a
libtool: install: chmod 644 /usr/local/lib/libsnappy.a
libtool: install: ranlib /usr/local/lib/libsnappy.a
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-LLIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[5]: Circular all-am <- install dependency dropped.
make[6]: Entering directory `/c/Users/fdmanana/git/snappy-1.0.1'
test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
 /bin/sh ./libtool   --mode=install /bin/install -c   libsnappy.la '/usr/local/lib'
libtool: install: /bin/install -c .libs/libsnappy.lai 
/usr/local/lib/libsnappy.la
libtool: install: /bin/install -c .libs/libsnappy.a /usr/local/lib/libsnappy.a
libtool: install: chmod 644 /usr/local/lib/libsnappy.a
libtool: install: ranlib /usr/local/lib/libsnappy.a
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-LLIBDIR' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[6]: Circular all-am <- install dependency dropped.
make[7]: Entering directory `/c/Users/fdmanana/git/snappy-1.0.1'
test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib"
 /bin/sh ./libtool   --mode=install /bin/install -c   libsnappy.la '/usr/local/lib'
libtool: install: /bin/install -c .libs/libsnappy.lai 
/usr/local/lib/libsnappy.la
libtool: install: /bin/install -c .libs/libsnappy.a /usr/local/lib/libsnappy.a
libtool: install: chmod 644 /usr/local/lib/libsnappy.a
libtool: install: ranlib /usr/local/lib/libsnappy.a

If I abort the build, snappy_unittest.exe exists but doesn't work properly. 
After a few tests are ran I get a Windows popup telling me the application 
stopped working and asking me whether I want to stop it or debug it:

$ ./snappy_unittest.exe
Running microbenchmarks.
WARNING: Compiled with assertions enabled, will be slow.
Benchmark            Time(ns)    CPU(ns) Iterations
---------------------------------------------------
BM_UFlat/0             150517     150517        998 648.8MB/s  html
BM_UFlat/1            1365600    1365600        110 490.3MB/s  urls
BM_UFlat/2              90265      90264       1997 1.3GB/s  jpg
BM_UFlat/3             110378     110378        998 815.0MB/s  pdf
BM_UFlat/4             542951     542948        332 719.5MB/s  html4
(it blocks after this)

On Cygwin I get:

fdmanana ~/snappy/snappy-1.0.1 > make
make  all-am
make[1]: Entering directory `/home/fdmanana/snappy/snappy-1.0.1'
/bin/sh ./libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2 
-MT snappy.lo -MD -MP -MF .deps/snappy.Tpo -c -o snappy.lo snappy.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy.lo -MD -MP -MF 
.deps/snappy.Tpo -c snappy.cc  -DDLL_EXPORT
-DPIC -o .libs/snappy.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy.lo -MD -MP -MF 
.deps/snappy.Tpo -c snappy.cc -o snappy.o >/dev/null 2>&1
mv -f .deps/snappy.Tpo .deps/snappy.Plo
/bin/sh ./libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2 
-MT snappy-sinksource.lo -MD -MP -MF .deps/snappy-sinksource.Tpo -c -o 
snappy-sinksource.lo snappy-sinksource.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-sinksource.lo -MD 
-MP -MF .deps/snappy-sinksource.Tpo -c snappy-sinksource.cc  -DDLL_EXPORT -DPIC 
-o .libs/snappy-sinksource.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-sinksource.lo -MD 
-MP -MF .deps/snappy-sinksource.Tpo -c snappy-sinksource.cc -o 
snappy-sinksource.o >/dev/null 2>&1
mv -f .deps/snappy-sinksource.Tpo .deps/snappy-sinksource.Plo
/bin/sh ./libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2 
-MT snappy-stubs-internal.lo -MD -MP -MF .deps/snappy-stubs-internal.Tpo -c -o 
snappy-stubs-internal.lo snappy-stubs-internal.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-stubs-internal.lo 
-MD -MP -MF .deps/snappy-stubs-internal.Tpo -c snappy-stubs-internal.cc  
-DDLL_EXPORT -DPIC -o .libs/snappy-stubs-internal.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-stubs-internal.lo 
-MD -MP -MF .deps/snappy-stubs-internal.Tpo -c snappy-stubs-internal.cc -o 
snappy-stubs-internal.o >/dev/null 2>&1
mv -f .deps/snappy-stubs-internal.Tpo .deps/snappy-stubs-internal.Plo
/bin/sh ./libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.     -g -O2 
-MT snappy-c.lo -MD -MP -MF .deps/snappy-c.Tpo -c -o snappy-c.lo snappy-c.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-c.lo -MD -MP -MF 
.deps/snappy-c.Tpo -c snappy-c.cc  -DDLL_EXPORT -DPIC -o .libs/snappy-c.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -g -O2 -MT snappy-c.lo -MD -MP -MF 
.deps/snappy-c.Tpo -c snappy-c.cc -o snappy-c.o >/dev/null 2>&1
mv -f .deps/snappy-c.Tpo .deps/snappy-c.Plo
/bin/sh ./libtool --tag=CXX   --mode=link g++  -g -O2 -version-info 1:1:0  -o 
libsnappy.la -rpath /usr/local/lib snappy.lo snappy-sinksource.lo 
snappy-stubs-internal.lo snappy-c.lo  -llzo2 -lz
libtool: link: warning: undefined symbols not allowed in i686-pc-cygwin shared 
libraries
libtool: link: ar cru .libs/libsnappy.a  snappy.o snappy-sinksource.o 
snappy-stubs-internal.o snappy-c.o
libtool: link: ranlib .libs/libsnappy.a
libtool: link: ( cd ".libs" && rm -f "libsnappy.la" && ln -s "../libsnappy.la" 
"libsnappy.la" )
g++ -DHAVE_CONFIG_H -I.      -g -O2 -MT snappy_unittest-snappy_unittest.o -MD 
-MP -MF .deps/snappy_unittest-snappy_unittest.Tpo -c -o 
snappy_unittest-snappy_unittest.o `test -f 'snappy_unittest.cc' || echo 
'./'`snappy_unittest.cc
mv -f .deps/snappy_unittest-snappy_unittest.Tpo 
.deps/snappy_unittest-snappy_unittest.Po
g++ -DHAVE_CONFIG_H -I.      -g -O2 -MT snappy_unittest-snappy-test.o -MD -MP 
-MF .deps/snappy_unittest-snappy-test.Tpo
-c -o snappy_unittest-snappy-test.o `test -f 'snappy-test.cc' || echo 
'./'`snappy-test.cc
In file included from 
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algo.h:66,
                 from /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/algorithm:67,
                 from snappy-test.cc:37:
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:248:41: 
error: macro "max" passed 3 arguments, but takes just 2
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:259:41: 
error: macro "min" passed 3 arguments, but takes just 2
In file included from 
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algo.h:66,
                 from /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/algorithm:67,
                 from snappy-test.cc:37:
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:244: error: 
expected unqualified-id before 'const'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:244: error: 
expected `)' before 'const'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:244: error: 
expected `)' before 'const'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:244: error: 
expected initializer before 'const'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:248: error: 
template declaration of 'const _Tp& std::max'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:255: error: 
expected unqualified-id before 'const'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:255: error: 
expected `)' before 'const'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:255: error: 
expected `)' before 'const'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:255: error: 
expected initializer before 'const'
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/algorithmfwd.h:259: error: 
template declaration of 'const _Tp& std::min'
In file included from 
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/algorithm:67,
                 from snappy-test.cc:37:
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algo.h: In function 
'void std::__merge_sort_loop(_RandomAccessIterator1, _RandomAccessIterator1, 
_RandomAccessIterator2, _Distance)':
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algo.h:2884: error: 
expected unqualified-id before '(' token
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algo.h: In function 
'void std::__merge_sort_loop(_RandomAccessIterator1, _RandomAccessIterator1, 
_RandomAccessIterator2, _Distance, _Compare)':
/usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algo.h:2908: error: 
expected unqualified-id before '(' token
make[1]: *** [snappy_unittest-snappy-test.o] Error 1
make[1]: Leaving directory `/home/fdmanana/snappy/snappy-1.0.1'
make: *** [all] Error 2
fdmanana ~/snappy/snappy-1.0.1 >

Basically I can't seem to build snappy, including the unit tests, on Windows at 
all.
Do you known of anyone (some open source project for e.g.) using snappy on 
Windows?

thanks

[1] - http://suacommunity.com/dictionary/gettimeofday-entry.php

Original comment by fdman...@gmail.com on 12 Apr 2011 at 1:25

GoogleCodeExporter commented 9 years ago
Forgot to mention, this is on Windows 7 ultimate, 32bits edition.

Original comment by fdman...@gmail.com on 12 Apr 2011 at 1:29

GoogleCodeExporter commented 9 years ago
That page doesn't contain any licensing information, so it wouldn't be 
applicable as far as I can see. In any case, it's probably better to make 
snappy_unittest use some sort of native Windows timing function instead of 
trying to emulate the semantics of gettimeofday() exactly.

I've cross-compiled Snappy from Linux using MinGW:

CC=i586-mingw32msvc-gcc CXX=i586-mingw32msvc-g++ ./configure 
--host=i586-mingw32msvc
make

Others on e.g. the encode.ru forum have also reported success, but I'm not sure 
if they've compiled the unit test or not.

I don't know where the MinGW unit test crash comes from (I guess that's what 
you mean by “block”?); if you can track it down somehow, it would be great. 
Same with the infinite loop during building, but that's most likely an automake 
bug, nothing we can do much about.

The Cygwin issue is different; it's probably a case of the Windows macros doing 
spurious defines of min() and max() etc.. Perhaps WIN32_LEAN_AND_MEAN would be 
a good idea to avoid that kind of issue, or including the C++ headers before 
windows.h.

Original comment by se...@google.com on 12 Apr 2011 at 1:48

GoogleCodeExporter commented 9 years ago
r29 includes #define WIN32_LEAN_AND_MEAN; see if it helps for Cygwin. (It 
shouldn't make any change for missing gettimeofday under MSVC.)

Original comment by se...@google.com on 15 Apr 2011 at 10:56

GoogleCodeExporter commented 9 years ago
I'm also having a bit of trouble running the unit test under Windows.

I tried compiling on Windows using MSVC 2008 and can build a working library 
with both 32 or 64 bit builds.  I tested it by compressing and immediately 
uncompressing a large stream of texture data as it is loading from disk.

As for the unit test, I substituted native Win32 QueryPerformanceCounter() for 
gettimeofday() and __rdtsc() to replace getrusage(), and appropriate 
calculations of time passed.  However it fails while running the test 
application.  Debugging shows a divide by zero error:

Unhandled exception at 0x0145249b in snappy-test.exe: 0xC0000094: Integer 
division by zero.
    snappy-test.exe!_alldiv()  Line 120 Asm
    snappy-test.exe!RunSpecifiedBenchmarks()  Line 432  C++
    snappy-test.exe!main(int argc=1, char * * argv=0x00702918)  Line 1139   C++
    snappy-test.exe!__tmainCRTStartup()  Line 266 + 0x19 bytes  C
    snappy-test.exe!mainCRTStartup()  Line 182  C

I don't know if this information helps or not.

I'd be happy to help provide visual studio project files, and to help unify a 
Windows alternative for timing in lieu of gettimeofday().

Original comment by rende...@gmail.com on 16 Apr 2011 at 2:48

GoogleCodeExporter commented 9 years ago
I don't see why you'd need to replace getrusage(); there's already code in 
there to use GetProcessTimes() instead if WIN32 is set. (Using RDTSC is not 
suitable for this.) QueryPerformanceCounter() is probably the simplest 
replacement for gettimeofday() here, but if you get a division by zero, most 
likely that's a bug in the timing code somehow.

Original comment by se...@google.com on 16 Apr 2011 at 12:50

GoogleCodeExporter commented 9 years ago
r30 should compile with MSVC.

Original comment by se...@google.com on 26 Apr 2011 at 12:39

GoogleCodeExporter commented 9 years ago
I was able to build snappy 1.0.5 in Cygwin environment and run tests 
successfully after making these two changes: 1) Besides WIN32_LEAN_AND_MEAN, 
#define NOMINMAX is required before including windows.h in snappy-test.h 2)For 
printing benchmark results in Benchmark::Run() the format string does not need 
to be special cased using #ifdef WIN32. The special cased format string does 
not work for Cygwin environment, and in fact causes core dump. The standard 
format string works.

Original comment by prakash....@gmail.com on 29 Mar 2012 at 10:44

GoogleCodeExporter commented 9 years ago
For anyone reading this and looking to build Snappy in MSVC: I have what's 
probably the most current and most complete Snappy port for Windows. It's all 
MSVC based and includes .NET wrapper and NuGet packaging. Tests pass and 
performance is great. If you need source code mods, try to fork my project. 
It's most likely the easiest way to get started.

http://snappy.angeloflogic.com/

Original comment by robert.v...@gmail.com on 6 Mar 2014 at 10:04