--- ./lib/Makefile~0	2016-11-01 20:13:22.000000000 +0200
+++ ./lib/Makefile	2016-11-04 18:57:52.718750000 +0200
@@ -11,7 +11,11 @@
 LIBVER_MAJOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
 LIBVER_MINOR_SCRIPT:=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
 LIBVER_PATCH_SCRIPT:=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
+ifeq ($(shell uname), MINGW32_NT-5.1)
+LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT)-$(LIBVER_MINOR_SCRIPT)-$(LIBVER_PATCH_SCRIPT)
+else
 LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
+endif
 LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT))
 LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT))
 LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT))
@@ -21,6 +25,7 @@ VERSION?= $(LIBVER)
 DESTDIR?=
 PREFIX ?= /usr/local
 LIBDIR ?= $(PREFIX)/lib
+BINDIR ?= $(PREFIX)/bin
 INCLUDEDIR=$(PREFIX)/include
 
 CPPFLAGS= -I. -I./common
@@ -43,21 +48,29 @@ endif
 # OS X linker doesn't support -soname, and use different extension
 # see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
 ifeq ($(shell uname), Darwin)
-	SHARED_EXT = dylib
-	SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
-	SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
+	fPIC = -fPIC
+	SHARED_EXT = .dylib
+	SHARED_EXT_MAJOR = .$(LIBVER_MAJOR)$(SHARED_EXT)
+	SHARED_EXT_VER = .$(LIBVER).$(SHARED_EXT)
 	SONAME_FLAGS = -install_name $(PREFIX)/lib/$@.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER)
+else ifeq ($(shell uname), MINGW32_NT-5.1)
+	fPIC =
+	SONAME_FLAGS = -Wl,--out-implib=$@$(SHARED_EXT).a
+	SHARED_EXT = .dll
+	SHARED_EXT_MAJOR = -$(LIBVER)$(SHARED_EXT)
+	SHARED_EXT_VER = -$(LIBVER_MAJOR)$(SHARED_EXT)
 else
-	SONAME_FLAGS = -Wl,-soname=$@.$(SHARED_EXT).$(LIBVER_MAJOR)
-	SHARED_EXT = so
-	SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR)
-	SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
+	fPIC = -fPIC
+	SONAME_FLAGS = -Wl,-soname=$@$(SHARED_EXT).$(LIBVER_MAJOR)
+	SHARED_EXT = .so
+	SHARED_EXT_MAJOR = .$(SHARED_EXT).$(LIBVER_MAJOR)
+	SHARED_EXT_VER = .$(SHARED_EXT).$(LIBVER)
 endif
 
 
 .PHONY: default all clean install uninstall
 
-default: clean libzstd
+default: libzstd
 
 all: clean libzstd
 
@@ -66,19 +79,23 @@ libzstd: $(ZSTD_FILES)
 	@$(CC) $(FLAGS) -c $^
 	@$(AR) rcs $@.a *.o
 	@echo compiling dynamic library $(LIBVER)
-	@$(CC) $(FLAGS) -shared $^ -fPIC $(SONAME_FLAGS) -o $@.$(SHARED_EXT_VER)
+	@$(CC) $(FLAGS) -shared $^ $(fPIC) $(SONAME_FLAGS) -o $@$(SHARED_EXT_VER)
+ifneq ($(shell uname), MINGW32_NT-5.1)
 	@echo creating versioned links
-	@ln -sf $@.$(SHARED_EXT_VER) $@.$(SHARED_EXT_MAJOR)
-	@ln -sf $@.$(SHARED_EXT_VER) $@.$(SHARED_EXT)
+	@ln -sf $@$(SHARED_EXT_VER) $@$(SHARED_EXT_MAJOR)
+	@ln -sf $@$(SHARED_EXT_VER) $@$(SHARED_EXT)
+endif
+	touch $@
 
 clean:
-	@rm -f core *.o *.a *.gcda *.$(SHARED_EXT) *.$(SHARED_EXT).* libzstd.pc
+	@rm -f core *.o *.a *.gcda *$(SHARED_EXT) *$(SHARED_EXT).* libzstd.pc
 	@rm -f decompress/*.o
+	@rm -f libzstd
 	@echo Cleaning library completed
 
 #------------------------------------------------------------------------
 #make install is validated only for Linux, OSX, kFreeBSD, Hurd and some BSD targets
-ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD DragonFly NetBSD))
+ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD DragonFly NetBSD MINGW32_NT-5.1))
 
 libzstd.pc:
 libzstd.pc: libzstd.pc.in
@@ -91,9 +108,16 @@ libzstd.pc: libzstd.pc.in
 
 install: libzstd libzstd.pc
 	@install -d -m 755 $(DESTDIR)$(LIBDIR)/pkgconfig/ $(DESTDIR)$(INCLUDEDIR)/
-	@install -m 755 libzstd.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_VER)
-	@cp -a libzstd.$(SHARED_EXT_MAJOR) $(DESTDIR)$(LIBDIR)
-	@cp -a libzstd.$(SHARED_EXT) $(DESTDIR)$(LIBDIR)
+ifeq ($(shell uname), MINGW32_NT-5.1)
+	@install -d -m 755 $(DESTDIR)$(BINDIR)
+	@install -m 755 libzstd$(SHARED_EXT_VER) $(DESTDIR)$(BINDIR)/libzstd$(SHARED_EXT_VER)
+	@cp -a libzstd$(SHARED_EXT).a $(DESTDIR)$(LIBDIR)
+else
+	@install -m 755 libzstd$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/libzstd$(SHARED_EXT_VER)
+
+	@cp -a libzstd$(SHARED_EXT_MAJOR) $(DESTDIR)$(LIBDIR)
+	@cp -a libzstd$(SHARED_EXT) $(DESTDIR)$(LIBDIR)
+endif
 	@cp -a libzstd.pc $(DESTDIR)$(LIBDIR)/pkgconfig/
 	@install -m 644 libzstd.a $(DESTDIR)$(LIBDIR)/libzstd.a
 	@install -m 644 zstd.h $(DESTDIR)$(INCLUDEDIR)/zstd.h
@@ -104,9 +128,14 @@ install: libzstd libzstd.pc
 
 uninstall:
 	@$(RM) $(DESTDIR)$(LIBDIR)/libzstd.a
-	@$(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT)
-	@$(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR)
-	@$(RM) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_VER)
+ifeq ($(shell uname), MINGW32_NT-5.1)
+	@$(RM) $(DESTDIR)$(BINDIR)/libzstd$(SHARED_EXT_VER)
+	@$(RM) $(DESTDIR)$(LIBDIR)/libzstd$(SHARED_EXT).a
+else
+	@$(RM) $(DESTDIR)$(LIBDIR)/libzstd$(SHARED_EXT)
+	@$(RM) $(DESTDIR)$(LIBDIR)/libzstd$(SHARED_EXT_MAJOR)
+	@$(RM) $(DESTDIR)$(LIBDIR)/libzstd$(SHARED_EXT_VER)
+endif
 	@$(RM) $(DESTDIR)$(LIBDIR)/pkgconfig/libzstd.pc
 	@$(RM) $(DESTDIR)$(INCLUDEDIR)/zstd.h
 	@$(RM) $(DESTDIR)$(INCLUDEDIR)/zstd_errors.h
--- ./Makefile~0	2016-11-01 20:13:22.000000000 +0200
+++ ./Makefile	2016-11-04 18:55:26.031250000 +0200
@@ -13,6 +13,13 @@ BUILDIR  = build
 ZWRAPDIR = zlibWrapper
 TESTDIR  = tests
 
+ifeq ($(shell uname), MINGW32_NT-5.1)
+export OS ?= Windows_NT
+EXT = .exe
+else
+EXT =
+endif
+
 # Define nul output
 ifneq (,$(filter Windows%,$(OS)))
 VOID = nul
@@ -34,7 +41,7 @@ libzstd:
 
 zstd:
 	@$(MAKE) -C $(PRGDIR)
-	cp $(PRGDIR)/zstd .
+	cp -p $(PRGDIR)/zstd$(EXT) .
 
 zlibwrapper:
 	$(MAKE) -C $(ZWRAPDIR) test
@@ -47,14 +54,14 @@ clean:
 	@$(MAKE) -C $(PRGDIR) $@ > $(VOID)
 	@$(MAKE) -C $(TESTDIR) $@ > $(VOID)
 	@$(MAKE) -C $(ZWRAPDIR) $@ > $(VOID)
-	@$(RM) zstd
+	@$(RM) zstd$(EXT)
 	@echo Cleaning completed
 
 
 #------------------------------------------------------------------------------
 # make install is validated only for Linux, OSX, Hurd and some BSD targets
 #------------------------------------------------------------------------------
-ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD DragonFly NetBSD))
+ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD DragonFly NetBSD MINGW32_NT-5.1))
 HOST_OS = POSIX
 install:
 	@$(MAKE) -C $(ZSTDDIR) $@
--- ./programs/Makefile~0	2016-11-04 17:14:45.000000000 +0200
+++ ./programs/Makefile	2016-11-04 18:53:41.375000000 +0200
@@ -57,8 +57,8 @@ endif
 ifneq (,$(filter Windows%,$(OS)))
 EXT =.exe
 VOID = nul
-RES64_FILE = windres\zstd64.res
-RES32_FILE = windres\zstd32.res
+RES64_FILE = windres/zstd64.res
+RES32_FILE = windres/zstd32.res
 ifneq (,$(filter x86_64%,$(shell $(CC) -dumpmachine)))
     RES_FILE = $(RES64_FILE)
 else
@@ -72,21 +72,20 @@ endif
 
 .PHONY: default all clean clean_decomp_o install uninstall generate_res
 
-default: zstd
+default: zstd$(EXT)
 
-all: zstd
+all: zstd$(EXT)
 
 $(ZSTDDECOMP_O): CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
 $(ZSTDDECOMP_O): CFLAGS += $(ALIGN_LOOP)
 $(ZSTDDECOMP_O): $(ZSTDDIR)/decompress/zstd_decompress.c
 
-zstd  : $(ZSTDDECOMP_O) $(ZSTD_FILES) $(ZSTDLEGACY_FILES) $(ZDICT_FILES) \
-        zstdcli.c fileio.c bench.c datagen.c dibio.c
-ifneq (,$(filter Windows%,$(OS)))
-	windres\generate_res.bat
-endif
-	$(CC)      $(FLAGS) -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) $^ $(RES_FILE) -o $@$(EXT)
+zstd$(EXT)  : $(ZSTDDECOMP_O) $(ZSTD_FILES) $(ZSTDLEGACY_FILES) $(ZDICT_FILES) \
+        zstdcli.c fileio.c bench.c datagen.c dibio.c $(RES_FILE)
+	$(CC)      $(FLAGS) -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) $^ $(RES_FILE) -o $@
 
+$(RES_FILE):
+	windres.exe -I ../lib -I windres -i windres/zstd.rc -O coff -o $@
 
 $(ZSTDDECOMP32_O): $(ZSTDDIR)/decompress/zstd_decompress.c
 	$(CC)  -m32 $(ALIGN_LOOP) $(FLAGS) -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) $^ -c -o $@
@@ -130,7 +129,7 @@ zstd-compress: $(ZSTDCOMMON_FILES) $(ZST
 	$(CC)      $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NODECOMPRESS $^ -o $@$(EXT)
 
 generate_res:
-	windres\generate_res.bat
+	cmd //c windres\generate_res.bat
 
 clean:
 	$(MAKE) -C ../lib clean
@@ -148,22 +147,32 @@ clean_decomp_o:
 #----------------------------------------------------------------------------------
 #make install is validated only for Linux, OSX, kFreeBSD, Hurd and some BSD targets
 #----------------------------------------------------------------------------------
-ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD))
-install: zstd
+ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD MINGW32_NT-5.1))
+install: zstd$(EXT)
 	@echo Installing binaries
 	@install -d -m 755 $(DESTDIR)$(BINDIR)/ $(DESTDIR)$(MANDIR)/
 	@install -m 755 zstd$(EXT) $(DESTDIR)$(BINDIR)/zstd$(EXT)
+ifneq (,$(filter Windows%,$(OS)))
+	@install -m 755 zstd$(EXT) $(DESTDIR)$(BINDIR)/zstdcat$(EXT)
+	@install -m 755 zstd$(EXT) $(DESTDIR)$(BINDIR)/unzstd$(EXT)
+else
 	@ln -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/zstdcat
 	@ln -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/unzstd
+endif
 	@echo Installing man pages
 	@install -m 644 zstd.1 $(DESTDIR)$(MANDIR)/zstd.1
+ifneq (,$(filter Windows%,$(OS)))
+	@cp -p zstd.1 $(DESTDIR)$(MANDIR)/zstdcat.1
+	@cp -p zstd.1 $(DESTDIR)$(MANDIR)/unzstd.1
+else
 	@ln -sf zstd.1 $(DESTDIR)$(MANDIR)/zstdcat.1
 	@ln -sf zstd.1 $(DESTDIR)$(MANDIR)/unzstd.1
+endif
 	@echo zstd installation completed
 
 uninstall:
-	@$(RM) $(DESTDIR)$(BINDIR)/zstdcat
-	@$(RM) $(DESTDIR)$(BINDIR)/unzstd
+	@$(RM) $(DESTDIR)$(BINDIR)/zstdcat$(EXT)
+	@$(RM) $(DESTDIR)$(BINDIR)/unzstd$(EXT)
 	@$(RM) $(DESTDIR)$(BINDIR)/zstd$(EXT)
 	@$(RM) $(DESTDIR)$(MANDIR)/zstdcat.1
 	@$(RM) $(DESTDIR)$(MANDIR)/unzstd.1
