--- src/include/firebird.h	2016-07-15 11:31:27.151443500 +0200
+++ src/include/firebird.h	2016-07-17 14:50:04.043792400 +0200
@@ -32,11 +32,7 @@
 #ifndef INCLUDE_Firebird_H
 #define INCLUDE_Firebird_H
 
-#ifdef _MSC_VER
-#include "gen/autoconfig_msvc.h"
-#else
 #include "gen/autoconfig.h"
-#endif
 
 #if defined __clang__
 //#if __has_feature(address_sanitizer)
--- src/misc/writeBuildNum.sh	2016-07-07 15:57:04.538983200 +0200
+++ src/misc/writeBuildNum.sh	2016-07-13 11:31:18.132820200 +0200
@@ -95,9 +95,9 @@
 createMakeVersion() {

 OdsH="${Root}/src/jrd/ods.h"
-Mini="/tmp/miniods.h"
-TestCpp="/tmp/test.cpp"
-AOut="/tmp/a.out"
+Mini=$(cygpath -m "/tmp/miniods.h")
+TestCpp=$(cygpath -m "/tmp/test.cpp")
+AOut=$(cygpath -m "/tmp/a.out")

 grep ODS_VERSION $OdsH | grep -v ENCODE_ODS >$Mini

--- configure	2016-07-07 15:57:04.538983200 +0200
+++ configure	2016-07-13 11:31:18.132820200 +0200
@@ -21490,13 +21490,12 @@
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
-#include <semaphore.h>
 int main () {
   struct s {
     char a;
-    union { long long x; sem_t y; } b;
+    long long b;
   };
   exit((int)&((struct s*)1024)->b - 1024);
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
--- builds/make.new/config/config.h.in	2016-07-07 15:55:55.693112800 +0200
+++ builds/make.new/config/config.h.in	2016-07-08 13:38:49.994986400 +0200
@@ -211,7 +211,7 @@
 #undef HAVE_GETMNTENT
 
 /* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
+#define HAVE_GETPAGESIZE 1
 
 /* Define to 1 if you have the `getrlimit' function. */
 #undef HAVE_GETRLIMIT
@@ -396,7 +396,7 @@
 #undef HAVE_SIGSET
 
 /* Define to 1 if you have the `snprintf' function. */
-#undef HAVE_SNPRINTF
+#define HAVE_SNPRINTF
 
 /* Define to 1 if you have the <socket.h> header file. */
 #undef HAVE_SOCKET_H
@@ -551,7 +551,7 @@
 #undef HAVE_VFORK_H
 
 /* Define to 1 if you have the `vsnprintf' function. */
-#undef HAVE_VSNPRINTF
+#define HAVE_VSNPRINTF
 
 /* Define to 1 if you have the <winsock2.h> header file. */
 #undef HAVE_WINSOCK2_H
@@ -646,7 +646,7 @@
 #undef TIME_WITH_SYS_TIME
 
 /* Define this if OS is Windows NT */
-#undef WIN_NT
+#define WIN_NT
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
@@ -703,3 +703,20 @@
 #ifndef HAVE_SOCKLEN_T
 typedef int socklen_t;
 #endif
+
+/* taken from src/include/gen/autoconfig_msvc.h */
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+#endif
+/* target architecture */
+#if defined(_M_AMD64)
+#define AMD64
+#endif
+
+#define HAVE_IO_H
+#define HAVE_CTIME_S
+
+#if defined _MSC_VER
+#define isnan _isnan
+#endif
+
--- src/common/common.h	2016-07-15 11:31:26.366735500 +0200
+++ src/common/common.h	2016-07-17 16:18:39.121579400 +0200
@@ -551,15 +551,6 @@
 #endif /* WIN_NT */
 
 
-#ifndef FB_CPU
-#error Define FB_CPU for your platform
-#endif
-#ifndef FB_OS
-#error Define FB_OS for your platform
-#endif
-#ifndef FB_CC
-#error Define FB_CC for your platform
-#endif
 
 
 /*****************************************************
diff -ur builds/posix/make.defaults builds/posix/make.defaults
--- builds/posix/make.defaults	2016-07-07 13:56:13.036235166 +0200
+++ builds/posix/make.defaults	2016-07-07 14:29:52.368289242 +0200
@@ -56,7 +56,7 @@
 else
   FIREBIRD=$(FB_BUILD)
 endif
-FIREBIRD_LOCK=$(FIREBIRD)
+FIREBIRD_LOCK=$(shell cygpath -w $(FIREBIRD))
 
 export FIREBIRD
 export FIREBIRD_LOCK
@@ -153,7 +153,7 @@
 CD=			cd
 CAT=			cat
 AR=			ar @AR_OPTIONS@
-LN=			@LN_S@
+LN=			cp
 RANLIB=			@RANLIB@
 BTYACC=$(ROOT)/extern/btyacc/btyacc
 CLOOP=$(GEN_ROOT)/$(TARGET)/cloop/release/bin/cloop
@@ -175,10 +175,10 @@
 
 # Default extensions
 
-ARCH_EXT=		.a
+ARCH_EXT=		.lib
 EXEC_EXT=		@EXEEXT@
 SHRLIB_EXT=@SHRLIB_EXT@
-LIB_PREFIX=		lib
+LIB_PREFIX=
 SHRLIB_FOREIGN_EXT=	$(SHRLIB_EXT)
 
 #_____________________________________________________________________________
@@ -201,9 +202,8 @@
 
 # Search path for libraries
 
-vpath %.so $(LIB)
-vpath %.a $(LIB)
 vpath %.dll $(LIB)
+vpath %.lib $(LIB)
 
 #_____________________________________________________________________________
 
@@ -217,9 +217,9 @@
 #
 
 #LibraryFileName=libfbclient
-LibraryFileName=libfbclient
-LibraryFullName=$(LibraryFileName).${SHRLIB_EXT}.${FirebirdVersion}
-LibrarySoName=$(LibraryFileName).${SHRLIB_EXT}.2
+LibraryFileName=ifbclient
+LibraryFullName=$(LibraryFileName).${SHRLIB_EXT}
+LibrarySoName=$(LibraryFileName).${SHRLIB_EXT}
 LibraryBaseName=$(LibraryFileName).${SHRLIB_EXT}
 
 LIBFIREBIRD_FULLNAME = $(LIB)/$(LibraryFullName)
@@ -228,7 +228,7 @@
 
 # The firebird engine library name
 
-EngineFileName=libEngine${OdsVersion}
+EngineFileName=Engine12
 EngineSoName=$(EngineFileName).${SHRLIB_EXT}
 ENGINE_SONAME = $(PLUGINS)/$(EngineSoName)
 
@@ -242,7 +242,7 @@
   ifeq ($(STD_EDITLINE), true)
 	LIBEDITLINE := -l$(READLINE)
   else
-	LIBEDITLINE := $(LIB)/libedit.a
+	LIBEDITLINE := $(LIB)/$(LIB_PREFIX)edit$(ARCH_EXT)
   endif
 endif
 
@@ -313,7 +313,7 @@
 
 LIB_LINK_SONAME= -Wl,-soname,$(1)
 LIB_LINK_MAPFILE= -Wl,--version-script,$(1)
-FIREBIRD_LIBRARY_LINK= -L$(LIB) -lfbclient $(MATHLIB)
+FIREBIRD_LIBRARY_LINK= -L$(LIB) -lifbclient $(MATHLIB)
 
 EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(LINK_EMPTY_SYMBOLS)
 LIB_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) -shared
@@ -355,7 +355,7 @@
 
 # Pay attention - we place common library into obj, not lib dir
 # It's just a set of object files, prepared to be used by ld, not an output library
-COMMON_LIB	= $(OBJ)/common.a
+COMMON_LIB	= $(OBJ)/$(LIB_PREFIX)common$(ARCH_EXT)
 
 # From utilities
 CREATE_DB	= $(RBIN)/create_db$(EXEC_EXT)
--- builds/posix/Makefile.in	2016-07-07 15:56:06.459221300 +0200
+++ builds/posix/Makefile.in	2016-07-13 12:44:57.134217200 +0200
@@ -33,7 +33,7 @@
 #		Alex Peshkoff - created single makefile based on Mark's files
 #

-ROOT=$(shell cd ..; pwd)
+ROOT=$(shell cygpath -m '$(shell cd ..; pwd)')

 include     make.defaults
 ifeq ($(CROSS_OUT), Y)
@@ -178,7 +178,7 @@
 .PHONY:	cross1 cross2 boot yvalve engine fbintl gpre utilities plugins rest codes ids examples cross_rest preliminaryCheck
 
 master_process:
-	ln -sf $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
+	cp -f $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
 	$(MAKE) updateBuildNum
 	$(MAKE) export_lists
 	$(MAKE) extern
@@ -214,7 +215,7 @@
 	$(MAKE) CROSS_OUT=Y cross2

 cross1:
-	ln -sf $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
+	cp -f $(SRC_ROOT)/include/gen/autoconfig.auto $(SRC_ROOT)/include/gen/autoconfig.h
 	$(MAKE) updateBuildNum
 	$(MAKE) export_lists
 	$(MAKE) extern
@@ -239,7 +240,7 @@
 	$(MAKE) -f Makefile.examples -C $(GEN_ROOT)/examples/
 
 cross2:
-	ln -sf $(SRC_ROOT)/include/cross/$(CROSS_CONFIG) $(SRC_ROOT)/include/gen/autoconfig.h
+	cp -f $(SRC_ROOT)/include/cross/$(CROSS_CONFIG) $(SRC_ROOT)/include/gen/autoconfig.h
 	$(MAKE) prerequisites
 	$(MAKE) tommath
 	$(MAKE) yvalve
@@ -310,7 +311,7 @@
 
 # remote redirector is statically linked in main FB library
 $(LIBFIREBIRD_FULLNAME):	$(YValve_Objects) $(Remote_Client_Objects) $(COMMON_LIB)
-	$(LINK_FIREBIRD) -o $@ $^ $(LINK_FIREBIRD_LIBS) $(call LIB_LINK_DARWIN_INSTALL_NAME,lib/libfbclient.$(SHRLIB_EXT))
+	$(LINK_FIREBIRD) $(CPPFLAGS) -o $@ $^ $(LINK_FIREBIRD_LIBS) $(call LIB_LINK_DARWIN_INSTALL_NAME,lib/libfbclient.$(SHRLIB_EXT))
 
 
 #___________________________________________________________________________
@@ -320,8 +321,8 @@
 
 engine: $(ENGINE_SONAME)
 
-$(ENGINE_SONAME):	$(Engine_Objects) $(SVC_Objects) $(COMMON_LIB)
-	$(LINK_ENGINE) -o $@ $^ $(LINK_ENGINE_LIBS) $(call LIB_LINK_DARWIN_INSTALL_NAME,plugins/$(EngineSoName))
+$(ENGINE_SONAME):	$(Engine_Objects) $(SVC_Objects) $(YValve_Objects) $(Remote_Client_Objects) $(COMMON_LIB)
+	$(LINK_ENGINE) $(CPPFLAGS) -o $@ $^ $(LINK_ENGINE_LIBS) $(call LIB_LINK_DARWIN_INSTALL_NAME,plugins/$(EngineSoName))
 
 
 #___________________________________________________________________________
@@ -330,8 +331,8 @@
 
 fbintl: $(LIBFBINTL_SO)
 
-$(LIBFBINTL_SO):	$(INTL_Objects) $(COMMON_LIB)
-	$(LINK_INTL) -o $@ $^ $(LINK_INTL_LIBS) $(call LIB_LINK_DARWIN_INSTALL_NAME,intl/libfbintl.$(SHRLIB_EXT))
+$(LIBFBINTL_SO):	$(INTL_Objects) $(YValve_Objects) $(Remote_Client_Objects) $(COMMON_LIB)
+	$(LINK_INTL) $(CPPFLAGS) -o $@ $^ $(LINK_INTL_LIBS) $(call LIB_LINK_DARWIN_INSTALL_NAME,intl/libfbintl.$(SHRLIB_EXT))
 
 
 #___________________________________________________________________________
@@ -427,12 +429,13 @@
 
 .PHONY:	firebird_server fb_lock_print fbguard fbsvcmgr fbtracemgr gbak gfix gsec gsplit gstat isql nbackup
 
-utilities: firebird_server fb_lock_print fbguard fbsvcmgr fbtracemgr gbak gfix gsec gsplit gstat isql nbackup udfsupport
+# fbguard currently fails to link, with missing fork etc, in util.cpp
+utilities: firebird_server fb_lock_print fbsvcmgr fbtracemgr gbak gfix gsec gsplit gstat isql nbackup udfsupport
 
 firebird_server:	$(FB_DAEMON)
 
-$(FB_DAEMON):	$(Remote_Server_Objects) $(COMMON_LIB)
-	$(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(call LINK_DARWIN_RPATH,..)
+$(FB_DAEMON):	$(Remote_Server_Objects) $(Remote_Client_Objects) $(COMMON_LIB)
+	$(EXE_LINK) $(EXE_LINK_OPTIONS) $^ -o $@ $(FIREBIRD_LIBRARY_LINK) $(LINK_LIBS) $(LIB_GUI) $(call LINK_DARWIN_RPATH,..)
 
 fb_lock_print:	$(LOCKPRINT)
 
@@ -633,7 +635,7 @@
 IBASE_ExtraFiles = include/types_pub.h include/consts_pub.h dsql/sqlda_pub.h common/dsc_pub.h jrd/ibase.h jrd/inf_pub.h jrd/blr.h include/gen/iberror.h
 SRC_IBASE_ExtraFiles = $(addprefix $(SRC_ROOT)/, $(IBASE_ExtraFiles))
 MAKE_HEADER_Src = $(addprefix $(SRC_ROOT)/, misc/makeHeader.cpp)
-MAKE_HEADER_Bin = ./makeHeader
+MAKE_HEADER_Bin = ./makeHeader$(EXEC_EXT)
 
 $(INCLUDE_DEST)/ibase.h: $(SRC_IBASE_ExtraFiles)
 	$(STATICEXE_LINK) -o $(MAKE_HEADER_Bin) $(MAKE_HEADER_Src)
diff -ur builds/posix/make.rules builds/posix/make.rules
--- builds/posix/make.rules	2016-07-07 13:56:13.036235166 +0200
+++ builds/posix/make.rules	2016-07-07 14:31:16.116291485 +0200
@@ -92,26 +92,23 @@
 
 $(OBJ)/%.o: $(SRC_ROOT)/%.c
 	$(CC) $(WCFLAGS) -c $(firstword $<) -o $@
-	@sed $(INLINE_EDIT_SED) -e "1,2s/:/: \$$(wildcard/" -e "\$$s/\(.*\)/\\1)/" $(patsubst %.o,%.d,$@)
 
 $(OBJ)/%.o: $(OBJ)/%.cpp
 	$(CXX) $(WCXXFLAGS) -c $(firstword $<) -o $@
-	@sed $(INLINE_EDIT_SED) -e "1,2s/:/: \$$(wildcard/" -e "\$$s/\(.*\)/\\1)/" $(patsubst %.o,%.d,$@)
 
 $(OBJ)/%.o: $(SRC_ROOT)/%.cpp
 	$(CXX) $(WCXXFLAGS) -c $(firstword $<) -o $@
-	@sed $(INLINE_EDIT_SED) -e "1,2s/:/: \$$(wildcard/" -e "\$$s/\(.*\)/\\1)/" $(patsubst %.o,%.d,$@)
 
 $(OBJ)/%.o: $(ROOT)/%.cpp
 	$(CC) $(WCFLAGS) -c $(firstword $<) -o $@
-	@sed $(INLINE_EDIT_SED) -e "1,2s/:/: \$$(wildcard/" -e "\$$s/\(.*\)/\\1)/" $(patsubst %.o,%.d,$@)
 
 .SUFFIXES: .epp .e
 
 # Rules for making resource files
 
 $(GEN_ROOT)/%.res: $(SRC_ROOT)/%.rc
-	windres --output-format=coff --include-dir=$(<D) $< $@
+	mkdir -p $(@D)
+	rc.exe $(SOLARINC) /fo $@ $<
 
 # Rule for making gbak files when cross-compiling
 
--- src/common/utils.cpp	2016-07-15 11:31:26.746871100 +0200
+++ src/common/utils.cpp	2016-07-19 19:14:45.370689300 +0200
@@ -880,15 +880,15 @@
 	FILETIME utime, stime, dummy;
 	if (GetProcessTimes(GetCurrentProcess(), &dummy, &dummy, &stime, &utime))
 	{
-		LARGE_INTEGER lint;
+		LARGE_INTEGER myLargeInt;
 
-		lint.HighPart = stime.dwHighDateTime;
-		lint.LowPart = stime.dwLowDateTime;
-		sysTime = lint.QuadPart / 10000;
-
-		lint.HighPart = utime.dwHighDateTime;
-		lint.LowPart = utime.dwLowDateTime;
-		userTime = lint.QuadPart / 10000;
+		myLargeInt.HighPart = stime.dwHighDateTime;
+		myLargeInt.LowPart = stime.dwLowDateTime;
+		sysTime = myLargeInt.QuadPart / 10000;
+
+		myLargeInt.HighPart = utime.dwHighDateTime;
+		myLargeInt.LowPart = utime.dwLowDateTime;
+		userTime = myLargeInt.QuadPart / 10000;
 	}
 	else
 	{
diff -ur builds/posix/prefix.mingw builds/posix/prefix.mingw
--- builds/posix/prefix.mingw	2016-07-07 13:56:13.048235166 +0200
+++ builds/posix/prefix.mingw	2016-07-07 14:50:54.704323046 +0200
@@ -20,8 +20,8 @@
 # 

 # -Wno-unused-variable is used due to unused gpre generated variables
-PROD_FLAGS=-O2  -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads -Wno-non-virtual-dtor
-DEV_FLAGS=-ggdb -DMINGW -Wall -Wshadow -Wundef -Wno-long-long -Wno-unused-variable -Wno-sign-compare -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD -mthreads -Wno-non-virtual-dtor
+PROD_FLAGS=-O2  -DMINGW  -Dlint -DWIN32_LEAN_AND_MEAN
+DEV_FLAGS=-ggdb  -DMINGW -Dlint -DWIN32_LEAN_AND_MEAN

 PLATFORM_PATH=os/win32

@@ -29,6 +29,7 @@
 LIB_LINK=$(LD)

 LIB_LINK_OPTIONS+=-Wl,--enable-stdcall-fixup
+LIB_PLATFORM_RPATH=

 # Strip symbols from release versions to decrease size
 ifeq ($(IsProdTypeBuild),Y)
@@ -36,6 +37,9 @@
 LIB_LINK_OPTIONS+=-Wl,-s
 endif

+LIB_LINK_OPTIONS=
+LINK_OPTS=
+
 # Generation of fbclient_ms.lib
 LIB_LINK_IMPLIB:=-Wl,--out-implib,firebird/lib/fbclient_ms.lib
 LIB_GUI:= -mwindows -lcomctl32 -lgdi32
@@ -55,7 +59,9 @@
 ClientLibrarySoName := $(ClientLibraryName)

 # Looks like MinGW 3 does not support version scripts but support def-files
-LINK_FIREBIRD_SYMBOLS = $(BLD_ROOT)/win32/defs/fbclient_s.def $(BLD_ROOT)/win32/defs/fbclient.def
+LINK_FIREBIRD_SYMBOLS = /def:$(BLD_ROOT)/win32/defs/fbclient_s.def /def:$(BLD_ROOT)/win32/defs/firebird.def
+LINK_PLUGIN_SYMBOLS = /def:$(BLD_ROOT)/win32/defs/plugin.def
+LINK_IBUTIL_SYMBOLS = /def:$(BLD_ROOT)/win32/defs/ib_util.def

 # This is required for newly built executable to find newly built shared
 # libraries because on Win32 there is no such thing as LD_LIBRARY_PATH
--- builds/posix/make.shared.variables	2016-07-22 17:07:46.650672300 +0200
+++ builds/posix/make.shared.variables	2016-07-23 10:44:41.311454600 +0200
@@ -62,6 +62,7 @@
				$(SecDbCache)
 Remote_Client:= $(call dirObjects,remote/client) $(call dirObjects,auth/SecureRemotePassword/client) \
 				$(call makeObjects,auth/SecurityDatabase,LegacyClient.cpp) \
+				$(call dirObjects,auth/trusted) \
 				$(call dirObjects,plugins/crypt/arc4)
 Remote_Server_Objects:= $(Remote_Common) $(Remote_Server)
 Remote_Client_Objects:= $(Remote_Common) $(Remote_Client)
diff -ur configure configure
--- configure	2016-07-07 13:55:54.976234682 +0200
+++ configure	2016-07-07 14:54:30.012328812 +0200
@@ -3337,6 +3337,14 @@
     SHRLIB_EXT=dll
     ;;

+  *-*-cygwin*)
+    MAKEFILE_PREFIX=mingw
+    PLATFORM=win32
+    EDITLINE_FLG=N
+    RAW_DEVICES_FLG=N
+    SHRLIB_EXT=dll
+    ;;
+
   *)
     as_fn_error $? "unsupported platform ${build}" "$LINENO" 5
     ;;
@@ -8432,6 +8432,9 @@
 mingw*)
   opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
   ;;
+cygwin*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
 esac

 # Try without a prefix underscore, then with it.
diff -ur extern/btyacc/main.c extern/btyacc/main.c
--- extern/btyacc/main.c	2016-07-07 13:55:55.448234695 +0200
+++ extern/btyacc/main.c	2016-07-07 14:56:03.560331317 +0200
@@ -2,7 +2,7 @@
 #include <signal.h>
 #include <stdio.h>

-#if defined(WIN32)
+#if defined(WIN32) || defined(_WIN32)
 #include <io.h>
 #else
 #include <unistd.h>
diff -ur extern/btyacc/Makefile extern/btyacc/Makefile
--- extern/btyacc/Makefile	2016-07-07 13:55:55.448234695 +0200
+++ extern/btyacc/Makefile	2016-07-07 14:57:42.284333961 +0200
@@ -30,7 +30,7 @@
 
 PRINT	      = pr -f -l88
 
-PROGRAM	      = btyacc
+PROGRAM	      = btyacc.exe
 
 SRCS	      = closure.c error.c lalr.c lr0.c main.c mkpar.c output.c	\
 		mstring.c reader.c readskel.c skeleton.c symtab.c verbose.c warshall.c
@@ -58,7 +58,7 @@
 index:;		ctags -wx $(HDRS) $(SRCS)
 
 install:	$(PROGRAM)
-		cp $(PROGRAM).exe /bin
+		cp $(PROGRAM) /bin
 
 oldinstall:	$(PROGRAM)
 		@echo Installing $(PROGRAM) in $(DEST)
--- extern/cloop/src/tests/test1/CppTest.cpp	2016-07-07 15:56:27.948015300 +0200
+++ extern/cloop/src/tests/test1/CppTest.cpp	2016-07-13 18:58:48.529822600 +0200
@@ -24,6 +24,7 @@
 #include <stdio.h>
 #include <assert.h>
 
+#define WIN32
 #ifdef WIN32
 #include <windows.h>
 #define DLL_EXPORT __declspec(dllexport)
--- extern/cloop/src/tests/test1/CTest.c	2016-07-07 15:56:27.611791300 +0200
+++ extern/cloop/src/tests/test1/CTest.c	2016-07-13 17:04:22.805090300 +0200
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 
+#define WIN32
 #ifdef WIN32
 #include <windows.h>
 #define DLL_EXPORT __declspec(dllexport)
--- extern/cloop/Makefile	2016-07-07 15:56:28.279136300 +0200
+++ extern/cloop/Makefile	2016-07-13 16:22:38.493479800 +0200
@@ -11,8 +11,8 @@
 SRC_DIR		:= src
 BUILD_DIR	:= build
 OUT_DIR		:= output
-SHRLIB_EXT	:= .so
-EXE_EXT		:=
+SHRLIB_EXT	:= .dll
+EXE_EXT		:= .exe
 
 OBJ_DIR := $(BUILD_DIR)/$(TARGET)
 BIN_DIR := $(OUT_DIR)/$(TARGET)/bin
@@ -27,7 +27,7 @@
 OBJS_C := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS_C))
 OBJS_CPP := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRCS_CPP))
 
-C_FLAGS := -ggdb -fPIC -MMD -MP -W -Wall -Wno-unused-parameter
+C_FLAGS := -fPIC
 CXX_FLAGS := $(C_FLAGS)
 FPC_FLAGS := -Mdelphi
 
@@ -53,7 +53,7 @@
 .PHONY: all mkdirs clean
 
 all: mkdirs \
-	$(BIN_DIR)/cloop	\
+	$(BIN_DIR)/cloop$(EXE_EXT)	\
 	$(BIN_DIR)/test1-c$(SHRLIB_EXT)	\
 	$(BIN_DIR)/test1-c$(EXE_EXT)	\
 	$(BIN_DIR)/test1-cpp$(SHRLIB_EXT)	\
@@ -63,6 +63,10 @@
 
 mkdirs: $(OBJ_DIRS) $(BIN_DIR) $(LIB_DIR)
 
+# These files have the same basename, so various conflicting intermediate files break the build
+$(BIN_DIR)/test1-c$(EXE_EXT): | $(BIN_DIR)/test1-c$(SHRLIB_EXT)
+$(BIN_DIR)/test1-cpp$(EXE_EXT): | $(BIN_DIR)/test1-cpp$(SHRLIB_EXT)
+
 $(OBJ_DIRS) $(BIN_DIR) $(LIB_DIR):
 	@mkdir -p $@
 
@@ -74,7 +74,7 @@
 -include $(addsuffix .d,$(basename $(OBJS_C)))
 -include $(addsuffix .d,$(basename $(OBJS_CPP)))
 
-$(BIN_DIR)/cloop: \
+$(BIN_DIR)/cloop$(EXE_EXT): \
 	$(OBJ_DIR)/cloop/Expr.o \
 	$(OBJ_DIR)/cloop/Generator.o \
 	$(OBJ_DIR)/cloop/Lexer.o \
@@ -83,20 +83,20 @@
 
 	$(LD) $^ -o $@
 
-$(SRC_DIR)/tests/test1/CalcCApi.h: $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl
-	$(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl c-header $@ CALC_C_API_H CALC_I
+$(SRC_DIR)/tests/test1/CalcCApi.h: $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl
+	$(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl c-header $@ CALC_C_API_H CALC_I
 
-$(SRC_DIR)/tests/test1/CalcCApi.c: $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl $(SRC_DIR)/tests/test1/CalcCApi.h
-	$(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl c-impl $@ CalcCApi.h CALC_I
+$(SRC_DIR)/tests/test1/CalcCApi.c: $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl $(SRC_DIR)/tests/test1/CalcCApi.h
+	$(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl c-impl $@ CalcCApi.h CALC_I
 
-$(SRC_DIR)/tests/test1/CalcCppApi.h: $(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl
-	$(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl c++ $@ CALC_CPP_API_H calc I
+$(SRC_DIR)/tests/test1/CalcCppApi.h: $(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl
+	$(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl c++ $@ CALC_CPP_API_H calc I
 
-$(SRC_DIR)/tests/test1/CalcPascalApi.pas: $(BIN_DIR)/cloop \
+$(SRC_DIR)/tests/test1/CalcPascalApi.pas: $(BIN_DIR)/cloop$(EXE_EXT) \
 	$(SRC_DIR)/tests/test1/Interface.idl \
 	$(SRC_DIR)/tests/test1/CalcPascalApi.interface.pas \
 	$(SRC_DIR)/tests/test1/CalcPascalApi.implementation.pas
-	$(BIN_DIR)/cloop $(SRC_DIR)/tests/test1/Interface.idl pascal $@ CalcPascalApi \
+	$(BIN_DIR)/cloop$(EXE_EXT) $(SRC_DIR)/tests/test1/Interface.idl pascal $@ CalcPascalApi \
 		--uses "SysUtils" \
 		--interfaceFile $(SRC_DIR)/tests/test1/CalcPascalApi.interface.pas \
 		--implementationFile $(SRC_DIR)/tests/test1/CalcPascalApi.implementation.pas \
@@ -108,23 +108,23 @@
 	$(OBJ_DIR)/tests/test1/CalcCApi.o \
 	$(OBJ_DIR)/tests/test1/CTest.o \
 
-	$(LD) $^ -shared -ldl -o $@
+	$(LD) $^ -o $@
 
 $(BIN_DIR)/test1-c$(EXE_EXT): \
 	$(OBJ_DIR)/tests/test1/CalcCApi.o \
 	$(OBJ_DIR)/tests/test1/CTest.o \
 
-	$(LD) $^ -ldl -o $@
+	$(LD) $^ -o $@
 
 $(BIN_DIR)/test1-cpp$(SHRLIB_EXT): \
 	$(OBJ_DIR)/tests/test1/CppTest.o \
 
-	$(LD) $^ -shared -ldl -o $@
+	$(LD) $^ -o $@
 
 $(BIN_DIR)/test1-cpp$(EXE_EXT): \
 	$(OBJ_DIR)/tests/test1/CppTest.o \
 
-	$(LD) $^ -ldl -o $@
+	$(LD) $^ -o $@
 
 $(BIN_DIR)/test1-pascal$(SHRLIB_EXT): \
 	$(SRC_DIR)/tests/test1/PascalClasses.pas \
diff -ur src/common/classes/fb_string.cpp src/common/classes/fb_string.cpp
--- src/common/classes/fb_string.cpp	2016-07-07 13:55:56.064234711 +0200
+++ src/common/classes/fb_string.cpp	2016-07-07 14:59:01.516336083 +0200
@@ -32,6 +32,12 @@
 #include <ctype.h>
 #include <stdarg.h>
 
+#ifdef WIN_NT
+#pragma comment(lib, "User32.lib")
+#pragma comment(lib, "advapi32")
+#pragma comment(lib, "shell32.lib")
+#endif
+
 #ifdef HAVE_STRCASECMP
 #define STRNCASECMP strncasecmp
 #else
diff -ur src/misc/makeHeader.cpp src/misc/makeHeader.cpp
--- src/misc/makeHeader.cpp	2016-07-07 13:56:00.100234819 +0200
+++ src/misc/makeHeader.cpp	2016-07-07 15:00:14.780338045 +0200
@@ -1,9 +1,9 @@
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
-//#ifdef HAVE_UNISTD_H
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
-//#endif
+#endif



--- builds/posix/Makefile.in.plugins_examples.orig	2020-11-13 18:07:52.515550600 +0100
+++ builds/posix/Makefile.in.plugins_examples	2020-11-13 18:08:33.218626500 +0100
@@ -28,7 +28,7 @@
 #  Adriano dos Santos Fernandes
 #
 
-ROOT=$(shell cd ..; pwd)
+ROOT=$(shell cygpath -m '$(shell cd ..; pwd)')
 
 ifeq ($(IsDeveloper), Y)
   DefaultTarget := Debug
--- examples/dbcrypt/CryptApplication.cpp.orig	2020-11-13 20:57:11.222938900 +0100
+++ examples/dbcrypt/CryptApplication.cpp	2020-11-13 21:01:19.332316100 +0100
@@ -27,6 +27,13 @@
 #include "../interfaces/ifaceExamples.h"
 #include <firebird/Message.h>
 
+#include "gen/autoconfig.h"
+
+#ifdef WIN_NT
+#include <windows.h>
+#include <winbase.h>
+#endif
+
 using namespace Firebird;
 
 class CryptKey : public ICryptKeyCallbackImpl<CryptKey, CheckStatusWrapper>
@@ -238,8 +238,15 @@
 		av++;
 	}
 
+#ifdef WIN_NT
+	if (!getenv("ISC_USER"))
+		SetEnvironmentVariable("ISC_USER", "sysdba");
+	if (!getenv("ISC_PASSWORD"))
+		SetEnvironmentVariable("ISC_PASSWORD", "masterkey");
+#else
 	setenv("ISC_USER", "sysdba", 0);
 	setenv("ISC_PASSWORD", "masterkey", 0);
+#endif
 
 	App app;
 	try