diff --git a/Filelist b/Filelist
index dd09b84..fd145bd 100644
--- a/Filelist
+++ b/Filelist
@@ -277,6 +277,7 @@
 		src/Make_bc3.mak \
 		src/Make_bc5.mak \
 		src/Make_cyg.mak \
+		src/Make_cyg_ming.mak \
 		src/Make_djg.mak \
 		src/Make_ivc.mak \
 		src/Make_dvc.mak \
diff --git a/src/INSTALLpc.txt b/src/INSTALLpc.txt
index 370c208..24fb4f0 100644
--- a/src/INSTALLpc.txt
+++ b/src/INSTALLpc.txt
@@ -228,11 +228,15 @@
 
     http://www.mingw.org/
 
+or you can use 'MinGW-w64' compiler.
+
+    http://mingw-w64.sourceforge.net/
+
 Once you have downloaded the compiler binaries, unpack them on your hard disk
 somewhere, and put them on your PATH.  If you are on Win95/98 you can edit
 your AUTOEXEC.BAT file with a line like:
 
-    set PATH=C:\GCC-2.95.2\BIN;%PATH%
+    set PATH=C:\MinGW\bin;%PATH%
 
 or on NT/2000/XP, go to the Control Panel, (Performance and Maintenance),
 System, Advanced, and edit the environment from there.
@@ -240,10 +244,10 @@
 Test if gcc is on your path.  From a CMD (or COMMAND on '95/98) window:
 
     C:\> gcc --version
-    2.95.2
+    gcc (GCC) 4.8.1
 
-    C:\> make --version
-    GNU Make version 3.77 (...etc...)
+    C:\> mingw32-make --version
+    GNU Make 3.82.90 (...etc...)
 
 Now you are ready to rock 'n' roll.  Unpack the vim sources (look on
 www.vim.org for exactly which version of the vim files you need).
@@ -255,7 +259,7 @@
 
 and you type:
 
-    make -f Make_ming.mak gvim.exe
+    mingw32-make -f Make_ming.mak gvim.exe
 
 After churning for a while, you will end up with 'gvim.exe' in the 'vim\src'
 directory.
@@ -264,7 +268,7 @@
 way.  If, for some reason, you want the console-mode-only version of vim (this
 is NOT recommended on Win32, especially on '95/'98!!!), you can use:
 
-    make -f Make_ming.mak GUI=no vim.exe
+    mingw32-make -f Make_ming.mak GUI=no vim.exe
 
 If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
 (also free!) and compress the file (typical compression is 50%). UPX can be
@@ -291,8 +295,7 @@
 Use Make_cyg.mak with Cygwin's GCC. See
     http://users.skynet.be/antoine.mechelynck/vim/compile.htm
 
-The Cygnus one many not fully work yet.
-With Cygnus gcc you can use the Unix Makefile instead (you need to get the
+With Cygnus gcc you should use the Unix Makefile instead (you need to get the
 Unix archive then).  Then you get a Cygwin application (feels like Vim is
 running on Unix), while with Make_cyg.mak you get a Windows application (like
 with the other makefiles).
@@ -316,9 +319,9 @@
 	http://www.mingw.org/wiki/LinuxCrossMinGW
 	http://www.libsdl.org/extras/win32/cross/README.txt
     2) Get and unpack both the Unix sources and the extra archive
-    3) in 'Make_ming.mak', set 'CROSS' to 'yes' instead of 'no'.
-       Make further changes to 'Make_ming.mak' as you wish.
-       If your cross-compiler prefix differs from the predefined value,
+    3) in 'Make_cyg_ming.mak', set 'CROSS' to 'yes' instead of 'no'.
+       Make further changes to 'Make_cyg_ming.mak' and 'Make_ming.mak' as you
+       wish.  If your cross-compiler prefix differs from the predefined value,
        set 'CROSS_COMPILE' corresponding.
     4) make -f Make_ming.mak gvim.exe
 
diff --git a/src/Make_cyg.mak b/src/Make_cyg.mak
index ff40548..828666c 100644
--- a/src/Make_cyg.mak
+++ b/src/Make_cyg.mak
@@ -1,754 +1,52 @@
 #
-# Makefile for VIM on Win32, using Cygnus gcc
-# Updated by Dan Sharp.
-# Last Change: 2014 Aug 10
+# Makefile for VIM on Win32, using MinGW cross compiler on Cygwin
 #
 # Also read INSTALLpc.txt!
 #
 # This compiles Vim as a Windows application.  If you want Vim to run as a
 # Cygwin application use the Makefile (just like on Unix).
 #
-# GUI		no or yes: set to yes if you want the GUI version (yes)
-# DIRECTX	no or yes: set to yes if you want use DirectWrite (no)
-# PERL		define to path to Perl dir to get Perl support (not defined)
-#   PERL_VER	  define to version of Perl being used (56)
-#   DYNAMIC_PERL  no or yes: set to yes to load the Perl DLL dynamically (yes)
-# PYTHON	define to path to Python dir to get PYTHON support (not defined)
-#   PYTHON_VER	    define to version of Python being used (22)
-#   DYNAMIC_PYTHON  no or yes: use yes to load the Python DLL dynamically (yes)
-# PYTHON3	define to path to Python3 dir to get PYTHON3 support (not defined)
-#   PYTHON3_VER	    define to version of Python3 being used (22)
-#   DYNAMIC_PYTHON3  no or yes: use yes to load the Python3 DLL dynamically (yes)
-# TCL		define to path to TCL dir to get TCL support (not defined)
-#   TCL_VER	define to version of TCL being used (83)
-#   DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (yes)
-# RUBY		define to path to Ruby dir to get Ruby support (not defined)
-#   RUBY_VER		define to version of Ruby being used (16)
-#   RUBY_VER_LONG	same, but in format with dot. (1.6)
-#	    You must set RUBY_VER_LONG when changing RUBY_VER.
-#	    You must set RUBY_API_VER version to RUBY_VER_LONG.
-#	    Don't set ruby API version to RUBY_VER like 191.
-#   DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes)
-# MZSCHEME	define to path to MzScheme dir to get MZSCHEME support (not defined)
-#   MZSCHEME_VER      define to version of MzScheme being used (209_000)
-#   DYNAMIC_MZSCHEME  no or yes: use yes to load the MzScheme DLLs dynamically (yes)
-#   MZSCHEME_DLLS     path to MzScheme DLLs (libmzgc and libmzsch), for "static" build.
-#   MZSCHEME_USE_RACKET  define to use "racket" instead of "mzsch".
-# LUA	define to path to Lua dir to get Lua support (not defined)
-#   LUA_VER	    define to version of Lua being used (51)
-#   DYNAMIC_LUA  no or yes: use yes to load the Lua DLL dynamically (yes)
-# GETTEXT	no or yes: set to yes for dynamic gettext support (yes)
-# ICONV		no or yes: set to yes for dynamic iconv support (yes)
-# MBYTE		no or yes: set to yes to include multibyte support (yes)
-# IME		no or yes: set to yes to include IME support (yes)
-#   DYNAMIC_IME no or yes: set to yes to load imm32.dll dynamically (yes)
-# OLE		no or yes: set to yes to make OLE gvim (no)
-# DEBUG		no or yes: set to yes if you wish a DEBUGging build (no)
-# CPUNR		No longer supported, use ARCH.
-# ARCH		i386 through pentium4: select -march argument to compile with
-#               (i386)
-# USEDLL	no or yes: set to yes to use the Runtime library DLL (no)
-#		For USEDLL=yes the cygwin1.dll is required to run Vim.
-#		For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++
-#		package is required to compile Vim.  Or set CC to gcc-3 and add
-#		-L/lib/w32api to EXTRA_LIBS.
-# POSTSCRIPT	no or yes: set to yes for PostScript printing (no)
-# FEATURES	TINY, SMALL, NORMAL, BIG or HUGE (BIG)
-# WINVER	Lowest Win32 version to support.  (0x0500)
-# CSCOPE	no or yes: to include cscope interface support (yes)
-# OPTIMIZE	SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED)
-# NETBEANS	no or yes: to include netbeans interface support (yes when GUI
-#		is yes)
-# NBDEBUG	no or yes: to include netbeans interface debugging support (no)
-# XPM		define to path to XPM dir to get XPM image support (not defined)
-#>>>>> choose options:
-ifndef GUI
-GUI=yes
-endif
-
-ifndef FEATURES
-FEATURES = BIG
-endif
-
-ifndef GETTEXT
-GETTEXT = yes
-endif
-
-ifndef ICONV
-ICONV = yes
-endif
-
-ifndef MBYTE
-MBYTE = yes
-endif
-
-ifndef IME
-IME = yes
-endif
-
-ifndef ARCH
-ARCH = i386
-endif
-
-ifndef DIRECTX
-DIRECTX = no
-endif
-
-ifndef WINVER
-WINVER = 0x0500
-endif
-
-ifndef CSCOPE
-CSCOPE = yes
-endif
-
-ifndef NETBEANS
-ifeq ($(GUI),yes)
-NETBEANS = yes
-endif
-endif
-
-ifndef OPTIMIZE
-OPTIMIZE = MAXSPEED
-endif
+# The old Make_cyg.mak (maintained by Dan Sharp et al.) was merged into
+# Make_cyg_ming.mak.  Note: USEDLL option was removed.
+# This file contains Cygwin specific settings. Common settings are contained
+# in Make_cyg_ming.mak.
+#
+# Last updated by Ken Takata.
+# Last Change: 2014 Oct 21
 
 
-# Link against the shared version of libstdc++ by default.  Set
-# STATIC_STDCPLUS to "yes" to link against static version instead.
-ifndef STATIC_STDCPLUS
-STATIC_STDCPLUS=no
-endif
+# uncomment 'PERL' if you want a perl-enabled version
+#PERL=/cygdrive/c/perl
 
-### See feature.h for a list of optionals.
-### Any other defines can be included here.
+# uncomment 'LUA' if you want a Lua-enabled version
+#LUA=/cygdrive/c/lua
 
-DEFINES = -DWIN32 -DHAVE_PATHDEF -DFEAT_$(FEATURES) \
-	  -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER)
-ifeq ($(ARCH),x86-64)
-DEFINES+=-DMS_WIN64
-endif
-INCLUDES = -march=$(ARCH) -Iproto
+# uncomment 'MZSCHEME' if you want a MzScheme-enabled version
+#MZSCHEME=/cygdrive/d/plt
 
-#>>>>> name of the compiler and linker, name of lib directory
-ifeq (yes, $(USEDLL))
-# CROSS_COMPILE is used for the gvimext DLL.
+# uncomment 'PYTHON' if you want a python-enabled version
+#PYTHON=/cygdrive/c/python20
+
+# uncomment 'PYTHON3' if you want a python3-enabled version
+#PYTHON3=/cygdrive/c/python31
+
+# uncomment 'TCL' if you want a Tcl-enabled version
+#TCL=/cygdrive/c/tcl
+
+# uncomment 'RUBY' if you want a Ruby-enabled version
+#RUBY=/cygdribe/c/ruby
+
+
+# Use MinGW(-w64) cross compiler.
+# There are three MinGW packages in Cygwin:
+#   32-bit: mingw-gcc-g++ and mingw64-i686-gcc-g++
+#   64-bit: mingw64-x86_64-gcc-g++
+# You may also need to set 'ARCH' in Make_cyg_ming.mak.
 CROSS_COMPILE = i686-pc-mingw32-
-CC = gcc
-RC = windres
-else
-# i686-pc-mingw32-gcc, i686-w64-mingw32-gcc or gcc-3 can be used.
-CROSS_COMPILE = i686-pc-mingw32-
-CC = $(CROSS_COMPILE)gcc
-RC = $(CROSS_COMPILE)windres
-endif
+#CROSS_COMPILE = i686-w64-mingw32-
+#CROSS_COMPILE = x86_64-w64-mingw32-
 
-##############################
-# DYNAMIC_PERL=yes and no both work
-##############################
-ifdef PERL
-DEFINES += -DFEAT_PERL
-INCLUDES += -I$(PERL)/lib/CORE
-EXTRA_OBJS += $(OUTDIR)/if_perl.o
 
-ifndef DYNAMIC_PERL
-DYNAMIC_PERL = yes
-endif
-
-ifndef PERL_VER
-PERL_VER = 56
-endif
-
-ifeq (yes, $(DYNAMIC_PERL))
-DEFINES += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
-else
-EXTRA_LIBS += -L$(PERL)/lib/CORE -lperl$(PERL_VER)
-endif
-endif
-
-##############################
-# DYNAMIC_PYTHON=yes works.
-# DYNAMIC_PYTHON=no does not (unresolved externals on link).
-##############################
-ifdef PYTHON
-DEFINES += -DFEAT_PYTHON
-EXTRA_OBJS += $(OUTDIR)/if_python.o
-
-ifndef DYNAMIC_PYTHON
-DYNAMIC_PYTHON = yes
-endif
-
-ifndef PYTHON_VER
-PYTHON_VER = 22
-endif
-
-ifeq (yes, $(DYNAMIC_PYTHON))
-DEFINES += -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\"
-else
-EXTRA_LIBS += $(PYTHON)/libs/python$(PYTHON_VER).lib
-endif
-endif
-
-##############################
-# DYNAMIC_PYTHON3=yes works.
-# DYNAMIC_PYTHON3=no does not (unresolved externals on link).
-##############################
-ifdef PYTHON3
-DEFINES += -DFEAT_PYTHON3
-EXTRA_OBJS += $(OUTDIR)/if_python3.o
-
-ifndef DYNAMIC_PYTHON3
-DYNAMIC_PYTHON3 = yes
-endif
-
-ifndef PYTHON3_VER
-PYTHON3_VER = 31
-endif
-
-ifeq (yes, $(DYNAMIC_PYTHON3))
-DEFINES += -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python$(PYTHON3_VER).dll\"
-else
-EXTRA_LIBS += $(PYTHON3)/libs/python$(PYTHON3_VER).lib
-endif
-endif
-
-##############################
-# DYNAMIC_RUBY=yes works.
-# DYNAMIC_RUBY=no does not (process exits).
-##############################
-ifdef RUBY
-
-ifndef DYNAMIC_RUBY
-DYNAMIC_RUBY=yes
-endif
-#  Set default value
-ifndef RUBY_VER
-RUBY_VER = 16
-endif
-ifndef RUBY_VER_LONG
-RUBY_VER_LONG = 1.6
-endif
-ifndef RUBY_API_VER
-RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG))
-endif
-
-ifndef RUBY_PLATFORM
-ifeq ($(RUBY_VER), 16)
-RUBY_PLATFORM = i586-mswin32
-else
-ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
-RUBY_PLATFORM = i386-mingw32
-else
-ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),)
-RUBY_PLATFORM = x64-mingw32
-else
-RUBY_PLATFORM = i386-mswin32
-endif
-endif
-endif
-endif
-
-ifndef RUBY_INSTALL_NAME
-ifeq ($(RUBY_VER), 16)
-RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
-else
-ifeq ($(ARCH),x86-64)
-RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER)
-else
-RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
-endif
-endif
-endif
-
-ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
-RUBY_19_OR_LATER = 1
-endif
-
-DEFINES += -DFEAT_RUBY
-ifneq ($(findstring w64-mingw32,$(CC)),)
-# A workaround for mingw-w64
-DEFINES += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE
-endif
-INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
-ifdef RUBY_19_OR_LATER
-INCLUDES += -I$(RUBY)/include/ruby-$(RUBY_VER_LONG) -I$(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
-endif
-EXTRA_OBJS += $(OUTDIR)/if_ruby.o
-
-ifeq (yes, $(DYNAMIC_RUBY))
-DEFINES += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
-DEFINES += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
-else
-EXTRA_LIBS += $(RUBY)/lib/$(RUBY_INSTALL_NAME)
-endif
-endif
-
-##############################
-# DYNAMIC_MZSCHEME=yes works
-# DYNAMIC_MZSCHEME=no works too
-##############################
-ifdef MZSCHEME
-DEFINES += -DFEAT_MZSCHEME
-INCLUDES += -I$(MZSCHEME)/include
-EXTRA_OBJS += $(OUTDIR)/if_mzsch.o
-
-ifndef DYNAMIC_MZSCHEME
-DYNAMIC_MZSCHEME = yes
-endif
-
-ifndef MZSCHEME_VER
-MZSCHEME_VER = 209_000
-endif
-
-ifndef MZSCHEME_PRECISE_GC
-MZSCHEME_PRECISE_GC=no
-endif
-
-# for version 4.x we need to generate byte-code for Scheme base
-ifndef MZSCHEME_GENERATE_BASE
-MZSCHEME_GENERATE_BASE=no
-endif
-
-ifndef MZSCHEME_USE_RACKET
-MZSCHEME_MAIN_LIB=mzsch
-else
-MZSCHEME_MAIN_LIB=racket
-endif
-
-ifeq (yes, $(DYNAMIC_MZSCHEME))
-DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
-else
-ifndef MZSCHEME_DLLS
-MZSCHEME_DLLS = $(MZSCHEME)
-endif
-ifeq (yes,$(MZSCHEME_PRECISE_GC))
-MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
-else
-MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
-endif
-EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB)
-endif
-ifeq (yes,$(MZSCHEME_GENERATE_BASE))
-DEFINES += -DINCLUDE_MZSCHEME_BASE
-MZ_EXTRA_DEP += mzscheme_base.c
-endif
-ifeq (yes,$(MZSCHEME_PRECISE_GC))
-DEFINES += -DMZ_PRECISE_GC
-endif
-endif
-
-##############################
-# DYNAMIC_TCL=yes and no both work.
-##############################
-ifdef TCL
-DEFINES += -DFEAT_TCL
-INCLUDES += -I$(TCL)/include
-EXTRA_OBJS += $(OUTDIR)/if_tcl.o
-
-ifndef DYNAMIC_TCL
-DYNAMIC_TCL = yes
-endif
-
-ifndef TCL_VER
-TCL_VER = 83
-endif
-
-ifeq (yes, $(DYNAMIC_TCL))
-DEFINES += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\"
-EXTRA_LIBS += $(TCL)/lib/tclstub$(TCL_VER).lib
-else
-EXTRA_LIBS += $(TCL)/lib/tcl$(TCL_VER).lib
-endif
-endif
-
-##############################
-# DYNAMIC_LUA=yes works.
-# DYNAMIC_LUA=no does not (unresolved externals on link).
-##############################
-ifdef LUA
-DEFINES += -DFEAT_LUA
-INCLUDES += -I$(LUA)/include
-EXTRA_OBJS += $(OUTDIR)/if_lua.o
-
-ifndef DYNAMIC_LUA
-DYNAMIC_LUA = yes
-endif
-
-ifndef LUA_VER
-LUA_VER = 51
-endif
-
-ifeq (yes, $(DYNAMIC_LUA))
-DEFINES += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
-else
-EXTRA_LIBS += $(LUA)/lib/lua$(LUA_VER).lib
-endif
-endif
-
-##############################
-ifeq (yes, $(GETTEXT))
-DEFINES += -DDYNAMIC_GETTEXT
-endif
-
-##############################
-ifeq (yes, $(ICONV))
-DEFINES += -DDYNAMIC_ICONV
-endif
-
-##############################
-ifeq (yes, $(MBYTE))
-DEFINES += -DFEAT_MBYTE
-endif
-
-##############################
-ifeq (yes, $(IME))
-DEFINES += -DFEAT_MBYTE_IME
-
-ifndef DYNAMIC_IME
-DYNAMIC_IME = yes
-endif
-
-ifeq (yes, $(DYNAMIC_IME))
-DEFINES += -DDYNAMIC_IME
-else
-EXTRA_LIBS += -limm32
-endif
-endif
-
-##############################
-ifeq (yes, $(DEBUG))
-DEFINES += -DDEBUG
-INCLUDES += -g -fstack-check
-DEBUG_SUFFIX = d
-else
-
-ifeq ($(OPTIMIZE), SIZE)
-OPTFLAG = -Os
-else
-ifeq ($(OPTIMIZE), MAXSPEED)
-OPTFLAG = -O3 -fomit-frame-pointer -freg-struct-return
-else
-OPTFLAG = -O2
-endif
-endif
-
-# A bug in the GCC <= 3.2 optimizer can cause a crash.  The
-# following option removes the problem optimization.
-OPTFLAG += -fno-strength-reduce
-
-INCLUDES += -s
-
-endif
-
-##############################
-# USEDLL=yes will build a Cygwin32 executable that relies on cygwin1.dll.
-# USEDLL=no will build a Mingw32 executable with no extra dll dependencies.
-##############################
-ifeq (yes, $(USEDLL))
-DEFINES += -D_MAX_PATH=256 -D__CYGWIN__
-endif
-
-##############################
-ifeq (yes, $(POSTSCRIPT))
-DEFINES += -DMSWINPS
-endif
-
-##############################
-ifeq (yes, $(CSCOPE))
-DEFINES += -DFEAT_CSCOPE
-EXTRA_OBJS += $(OUTDIR)/if_cscope.o
-endif
-
-##############################
-ifeq ($(GUI),yes)
-
-##############################
-ifeq (yes, $(NETBEANS))
-# Only allow NETBEANS for a GUI build.
-DEFINES += -DFEAT_NETBEANS_INTG
-EXTRA_OBJS += $(OUTDIR)/netbeans.o
-EXTRA_LIBS += -lwsock32
-
-ifeq (yes, $(NBDEBUG))
-DEFINES += -DNBDEBUG
-NBDEBUG_DEP = nbdebug.h nbdebug.c
-endif
-
-endif
-
-##############################
-ifeq (yes, $(DIRECTX))
-# Only allow DIRECTX for a GUI build.
-DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
-EXTRA_OBJS += $(OUTDIR)/gui_dwrite.o
-EXTRA_LIBS += -ld2d1 -ldwrite
-USE_STDCPLUS = yes
-endif
-
-##############################
-ifndef XPM
-ifeq ($(ARCH),i386)
-XPM = xpm/x86
-endif
-ifeq ($(ARCH),i486)
-XPM = xpm/x86
-endif
-ifeq ($(ARCH),i586)
-XPM = xpm/x86
-endif
-ifeq ($(ARCH),i686)
-XPM = xpm/x86
-endif
-ifeq ($(ARCH),x86-64)
-XPM = xpm/x64
-endif
-endif
-ifdef XPM
-ifneq ($(XPM),no)
-# Only allow XPM for a GUI build.
-DEFINES += -DFEAT_XPM_W32
-INCLUDES += -I$(XPM)/include -I$(XPM)/../include
-EXTRA_OBJS += $(OUTDIR)/xpm_w32.o
-EXTRA_LIBS += -L$(XPM)/lib -lXpm
-endif
-endif
-
-##############################
-EXE = gvim$(DEBUG_SUFFIX).exe
-OUTDIR = gobj$(DEBUG_SUFFIX)
-DEFINES += -DFEAT_GUI_W32 -DFEAT_CLIPBOARD
-EXTRA_OBJS += $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
-EXTRA_LIBS += -mwindows -lcomctl32 -lversion
-else
-EXE = vim$(DEBUG_SUFFIX).exe
-OUTDIR = obj$(DEBUG_SUFFIX)
-LIBS += -luser32 -lgdi32 -lcomdlg32
-endif
-
-##############################
-ifeq (yes, $(OLE))
-DEFINES += -DFEAT_OLE
-EXTRA_OBJS += $(OUTDIR)/if_ole.o
-EXTRA_LIBS += -loleaut32
-USE_STDCPLUS = yes
-endif
-
-##############################
-ifneq (sh.exe, $(SHELL))
-DEL = rm
-MKDIR = mkdir -p
-DIRSLASH = /
-else
-DEL = del
-MKDIR = mkdir
-DIRSLASH = \\
-endif
-
-##############################
-ifeq (yes, $(USE_STDCPLUS))
-ifeq (yes, $(STATIC_STDCPLUS))
-EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
-else
-EXTRA_LIBS += -lstdc++
-endif
-endif
-
-#>>>>> end of choices
-###########################################################################
-
-INCL = vim.h globals.h option.h keymap.h macros.h ascii.h term.h os_win32.h \
-       structs.h version.h
-
-CFLAGS = $(OPTFLAG) $(DEFINES) $(INCLUDES)
-
-RCFLAGS = -O coff $(DEFINES)
-
-OBJ = \
-	$(OUTDIR)/blowfish.o \
-	$(OUTDIR)/buffer.o \
-	$(OUTDIR)/charset.o \
-	$(OUTDIR)/crypt.o \
-	$(OUTDIR)/crypt_zip.o \
-	$(OUTDIR)/diff.o \
-	$(OUTDIR)/digraph.o \
-	$(OUTDIR)/edit.o \
-	$(OUTDIR)/eval.o \
-	$(OUTDIR)/ex_cmds.o \
-	$(OUTDIR)/ex_cmds2.o \
-	$(OUTDIR)/ex_docmd.o \
-	$(OUTDIR)/ex_eval.o \
-	$(OUTDIR)/ex_getln.o \
-	$(OUTDIR)/fileio.o \
-	$(OUTDIR)/fold.o \
-	$(OUTDIR)/getchar.o \
-	$(OUTDIR)/hardcopy.o \
-	$(OUTDIR)/hashtab.o \
-	$(OUTDIR)/main.o \
-	$(OUTDIR)/mark.o \
-	$(OUTDIR)/memfile.o \
-	$(OUTDIR)/memline.o \
-	$(OUTDIR)/menu.o \
-	$(OUTDIR)/message.o \
-	$(OUTDIR)/misc1.o \
-	$(OUTDIR)/misc2.o \
-	$(OUTDIR)/move.o \
-	$(OUTDIR)/mbyte.o \
-	$(OUTDIR)/normal.o \
-	$(OUTDIR)/ops.o \
-	$(OUTDIR)/option.o \
-	$(OUTDIR)/os_win32.o \
-	$(OUTDIR)/os_mswin.o \
-	$(OUTDIR)/winclip.o \
-	$(OUTDIR)/pathdef.o \
-	$(OUTDIR)/popupmnu.o \
-	$(OUTDIR)/quickfix.o \
-	$(OUTDIR)/regexp.o \
-	$(OUTDIR)/screen.o \
-	$(OUTDIR)/search.o \
-	$(OUTDIR)/sha256.o \
-	$(OUTDIR)/spell.o \
-	$(OUTDIR)/syntax.o \
-	$(OUTDIR)/tag.o \
-	$(OUTDIR)/term.o \
-	$(OUTDIR)/ui.o \
-	$(OUTDIR)/undo.o \
-	$(OUTDIR)/version.o \
-	$(OUTDIR)/vimrc.o \
-	$(OUTDIR)/window.o \
-	$(EXTRA_OBJS)
-
-all: $(EXE) xxd/xxd.exe vimrun.exe install.exe uninstal.exe GvimExt/gvimext.dll
-
-# According to the Cygwin doc 1.2 FAQ, kernel32 should not be specified for
-# linking unless calling ld directly.
-# See /usr/doc/cygwin-doc-1.2/html/faq_toc.html#TOC93 for more information.
-$(EXE): $(OUTDIR) $(OBJ)
-	$(CC) $(CFLAGS) -o $(EXE) $(OBJ) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)
-
-xxd/xxd.exe: xxd/xxd.c
-	$(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL)
-
-GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
-	$(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE)
-
-vimrun.exe: vimrun.c
-	$(CC) $(CFLAGS) -o vimrun.exe vimrun.c  $(LIBS)
-
-install.exe: dosinst.c
-	$(CC) $(CFLAGS) -o install.exe dosinst.c  $(LIBS) -luuid -lole32
-
-uninstal.exe: uninstal.c
-	$(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIBS)
-
-$(OUTDIR):
-	$(MKDIR) $(OUTDIR)
-
-tags:
-	command /c ctags *.c $(INCL)
-
-clean:
-	-$(DEL) $(OUTDIR)$(DIRSLASH)*.o
-	-rmdir $(OUTDIR)
-	-$(DEL) $(EXE) vimrun.exe install.exe uninstal.exe
-ifdef PERL
-	-$(DEL) if_perl.c
-endif
-ifdef MZSCHEME
-	-$(DEL) mzscheme_base.c
-endif
-	-$(DEL) pathdef.c
-	$(MAKE) -C xxd -f Make_cyg.mak clean
-	$(MAKE) -C GvimExt -f Make_cyg.mak clean
-
-distclean: clean
-	-$(DEL) obj$(DIRSLASH)*.o
-	-rmdir obj
-	-$(DEL) gobj$(DIRSLASH)*.o
-	-rmdir gobj
-	-$(DEL) objd$(DIRSLASH)*.o
-	-rmdir objd
-	-$(DEL) gobjd$(DIRSLASH)*.o
-	-rmdir gobjd
-	-$(DEL) *.exe
-
-###########################################################################
-
-$(OUTDIR)/%.o : %.c $(INCL)
-	$(CC) -c $(CFLAGS) $< -o $@
-
-$(OUTDIR)/ex_docmd.o:	ex_docmd.c $(INCL) ex_cmds.h
-	$(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
-
-$(OUTDIR)/ex_eval.o:	ex_eval.c $(INCL) ex_cmds.h
-	$(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
-
-$(OUTDIR)/gui_w32.o:	gui_w32.c gui_w48.c $(INCL)
-	$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
-
-$(OUTDIR)/gui_dwrite.o:	gui_dwrite.cpp $(INCL) gui_dwrite.h
-	$(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
-
-$(OUTDIR)/if_cscope.o:	if_cscope.c $(INCL) if_cscope.h
-	$(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
-
-$(OUTDIR)/if_ole.o:	if_ole.cpp $(INCL)
-	$(CC) -c $(CFLAGS) if_ole.cpp -o $(OUTDIR)/if_ole.o
-
-$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
-	$(CC) -c $(CFLAGS) -I$(PYTHON)/include $< -o $@
-
-$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
-	$(CC) -c $(CFLAGS) -I$(PYTHON3)/include $< -o $@
-
-if_perl.c: if_perl.xs typemap
-	$(PERL)/bin/perl `cygpath -d $(PERL)/lib/ExtUtils/xsubpp` \
-		-prototypes -typemap \
-		`cygpath -d $(PERL)/lib/ExtUtils/typemap` if_perl.xs > $@
-
-$(OUTDIR)/if_perl.o:	if_perl.c $(INCL)
-ifeq (yes, $(USEDLL))
-	$(CC) -c $(CFLAGS) -I/usr/include/mingw -D__MINGW32__ if_perl.c -o $(OUTDIR)/if_perl.o
-endif
-
-$(OUTDIR)/if_ruby.o:	if_ruby.c $(INCL)
-ifeq (16, $(RUBY_VER))
-	$(CC) -c $(CFLAGS) -U_WIN32 if_ruby.c -o $(OUTDIR)/if_ruby.o
-endif
-
-$(OUTDIR)/netbeans.o:	netbeans.c $(INCL) $(NBDEBUG_DEP)
-	$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
-
-$(OUTDIR)/regexp.o:		regexp.c regexp_nfa.c $(INCL)
-	$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
-
-$(OUTDIR)/if_mzsch.o:	if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
-	$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
-
-$(OUTDIR)/vimrc.o:	vim.rc version.h gui_w32_rc.h
-	$(RC) $(RCFLAGS) vim.rc -o $(OUTDIR)/vimrc.o
-
-mzscheme_base.c:
-	$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
-
-pathdef.c: $(INCL)
-ifneq (sh.exe, $(SHELL))
-	@echo creating pathdef.c
-	@echo '/* pathdef.c */' > pathdef.c
-	@echo '#include "vim.h"' >> pathdef.c
-	@echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c
-	@echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c
-	@echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c
-	@echo 'char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)";' >> pathdef.c
-	@echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c
-	@echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c
-else
-	@echo creating pathdef.c
-	@echo /* pathdef.c */ > pathdef.c
-	@echo #include "vim.h" >> pathdef.c
-	@echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c
-	@echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c
-	@echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c
-	@echo char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)"; >> pathdef.c
-	@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
-	@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
-endif
-
+# Do not change this.
+UNDER_CYGWIN = yes
+include Make_cyg_ming.mak
diff --git a/src/Make_cyg_ming.mak b/src/Make_cyg_ming.mak
new file mode 100644
index 0000000..e4764c5
--- /dev/null
+++ b/src/Make_cyg_ming.mak
@@ -0,0 +1,847 @@
+# Makefile for VIM on Win32 (Cygwin and MinGW)
+#
+# This file contains common part for Cygwin and MinGW and it is included
+# from Make_cyg.mak and Make_ming.mak.
+#
+# Info at http://www.mingw.org
+# Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net
+# Also requires GNU make, which you can download from the same sites.
+# Get missing libraries from http://gnuwin32.sf.net.
+#
+# Tested on Win32 NT 4 and Win95.
+#
+# To make everything, just 'make -f Make_ming.mak'.
+# To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'.
+# After a run, you can 'make -f Make_ming.mak clean' to clean up.
+#
+# NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think
+# it's just run out of memory or something.  Run again, and it will continue
+# with 'xxd'.
+#
+# "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs,
+# using the excellent UPX compressor:
+#     http://upx.sourceforge.net/
+# "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs:
+#     http://www.matcode.com/mpress.htm
+#
+# Maintained by Ron Aaron <ronaharon@yahoo.com> et al.
+# Updated 2014 Oct 13.
+
+#>>>>> choose options:
+# set to yes for a debug build
+DEBUG=no
+# set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization
+OPTIMIZE=MAXSPEED
+# set to yes to make gvim, no for vim
+GUI=yes
+# set to yes if you want to use DirectWrite (DirectX)
+# MinGW-w64 is needed, and ARCH should be set to i686 or x86-64.
+DIRECTX=no
+# FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE]
+# Set to TINY to make minimal version (few features).
+FEATURES=BIG
+# Set to one of i386, i486, i586, i686 as the minimum target processor.
+# For amd64/x64 architecture set ARCH=x86-64 .
+ARCH=i386
+# Set to yes to cross-compile from unix; no=native Windows (and Cygwin).
+CROSS=no
+# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'.
+#ICONV="."
+ICONV=yes
+GETTEXT=yes
+# Set to yes to include multibyte support.
+MBYTE=yes
+# Set to yes to include IME support.
+IME=yes
+DYNAMIC_IME=yes
+# Set to yes to enable writing a postscript file with :hardcopy.
+POSTSCRIPT=no
+# Set to yes to enable OLE support.
+OLE=no
+# Set the default $(WINVER) to make it work with pre-Win2k.
+ifndef WINVER
+WINVER = 0x0500
+endif
+# Set to yes to enable Cscope support.
+CSCOPE=yes
+# Set to yes to enable Netbeans support.
+NETBEANS=$(GUI)
+
+
+# Link against the shared version of libstdc++ by default.  Set
+# STATIC_STDCPLUS to "yes" to link against static version instead.
+ifndef STATIC_STDCPLUS
+STATIC_STDCPLUS=no
+endif
+
+# If the user doesn't want gettext, undefine it.
+ifeq (no, $(GETTEXT))
+GETTEXT=
+endif
+# Added by E.F. Amatria <eferna1@platea.ptic.mec.es> 2001 Feb 23
+# Uncomment the first line and one of the following three if you want Native Language
+# Support.  You'll need gnu_gettext.win32, a MINGW32 Windows PORT of gettext by
+# Franco Bez <franco.bez@gmx.de>.  It may be found at
+# http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html
+# Tested with mingw32 with GCC-2.95.2 on Win98
+# Updated 2001 Jun 9
+#GETTEXT=c:/gettext.win32.msvcrt
+#STATIC_GETTEXT=USE_STATIC_GETTEXT
+#DYNAMIC_GETTEXT=USE_GETTEXT_DLL
+#DYNAMIC_GETTEXT=USE_SAFE_GETTEXT_DLL
+SAFE_GETTEXT_DLL_OBJ = $(GETTEXT)/src/safe_gettext_dll/safe_gettext_dll.o
+# Alternatively, if you uncomment the two following lines, you get a "safe" version
+# without linking the safe_gettext_dll.o object file.
+#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
+#GETTEXT_DYNAMIC=gnu_gettext.dll
+INTLPATH=$(GETTEXT)/lib/mingw32
+INTLLIB=gnu_gettext
+
+# If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext
+# or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/
+# uncomment the following, but I can't build a static version with them, ?-(|
+#GETTEXT=c:/gettext-0.10.37-20010430
+#STATIC_GETTEXT=USE_STATIC_GETTEXT
+#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
+#INTLPATH=$(GETTEXT)/lib
+#INTLLIB=intl
+
+#	Perl interface:
+#	  PERL=[Path to Perl directory] (Set inside Make_cyg.mak or Make_ming.mak)
+#	  DYNAMIC_PERL=yes (to load the Perl DLL dynamically)
+#	  PERL_VER=[Perl version, eg 56, 58, 510] (default is 56)
+ifdef PERL
+ifndef PERL_VER
+PERL_VER=56
+endif
+ifndef DYNAMIC_PERL
+DYNAMIC_PERL=yes
+endif
+# on Linux, for cross-compile, it's here:
+#PERLLIB=/home/ron/ActivePerl/lib
+# on NT, it's here:
+PERLEXE=$(PERL)/bin/perl
+PERLLIB=$(PERL)/lib
+PERLLIBS=$(PERLLIB)/Core
+ifeq ($(UNDER_CYGWIN),yes)
+PERLTYPEMAP:=$(shell cygpath -m $(PERLLIB)/ExtUtils/typemap)
+XSUBPPTRY:=$(shell cygpath -m $(PERLLIB)/ExtUtils/xsubpp)
+else
+PERLTYPEMAP=$(PERLLIB)/ExtUtils/typemap
+XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp
+endif
+XSUBPP_EXISTS=$(shell $(PERLEXE) -e "print 1 unless -e '$(XSUBPPTRY)'")
+ifeq "$(XSUBPP_EXISTS)" ""
+XSUBPP=$(PERLEXE) "$(XSUBPPTRY)"
+else
+XSUBPP=xsubpp
+endif
+endif
+
+#	Lua interface:
+#	  LUA=[Path to Lua directory] (Set inside Make_cyg.mak or Make_ming.mak)
+#	  DYNAMIC_LUA=yes (to load the Lua DLL dynamically)
+#	  LUA_VER=[Lua version, eg 51, 52] (default is 51)
+ifdef LUA
+ifndef DYNAMIC_LUA
+DYNAMIC_LUA=yes
+endif
+
+ifndef LUA_VER
+LUA_VER=51
+endif
+
+ifeq (no,$(DYNAMIC_LUA))
+LUA_LIB = -L$(LUA)/lib -llua
+endif
+
+endif
+
+#	MzScheme interface:
+#	  MZSCHEME=[Path to MzScheme directory] (Set inside Make_cyg.mak or Make_ming.mak)
+#	  DYNAMIC_MZSCHEME=yes (to load the MzScheme DLL dynamically)
+#	  MZSCHEME_VER=[MzScheme version] (default is 205_000)
+#	  MZSCHEME_DEBUG=no
+ifdef MZSCHEME
+ifndef DYNAMIC_MZSCHEME
+DYNAMIC_MZSCHEME=yes
+endif
+
+ifndef MZSCHEME_VER
+MZSCHEME_VER=205_000
+endif
+
+ifndef MZSCHEME_PRECISE_GC
+MZSCHEME_PRECISE_GC=no
+endif
+
+# for version 4.x we need to generate byte-code for Scheme base
+ifndef MZSCHEME_GENERATE_BASE
+MZSCHEME_GENERATE_BASE=no
+endif
+
+ifndef MZSCHEME_USE_RACKET
+MZSCHEME_MAIN_LIB=mzsch
+else
+MZSCHEME_MAIN_LIB=racket
+endif
+
+ifeq (no,$(DYNAMIC_MZSCHEME))
+ifeq (yes,$(MZSCHEME_PRECISE_GC))
+MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
+else
+MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
+endif
+# the modern MinGW can dynamically link to dlls directly.
+# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
+ifndef MZSCHEME_DLLS
+MZSCHEME_DLLS=$(MZSCHEME)
+endif
+MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib
+endif
+
+endif
+
+#	Python interface:
+#	  PYTHON=[Path to Python directory] (Set inside Make_cyg.mak or Make_ming.mak)
+#	  DYNAMIC_PYTHON=yes (to load the Python DLL dynamically)
+#	  PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 22)
+ifdef PYTHON
+ifndef DYNAMIC_PYTHON
+DYNAMIC_PYTHON=yes
+endif
+
+ifndef PYTHON_VER
+PYTHON_VER=22
+endif
+
+ifeq (no,$(DYNAMIC_PYTHON))
+PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER)
+endif
+# my include files are in 'win32inc' on Linux, and 'include' in the standard
+# NT distro (ActiveState)
+ifeq ($(CROSS),no)
+PYTHONINC=-I $(PYTHON)/include
+else
+PYTHONINC=-I $(PYTHON)/win32inc
+endif
+endif
+
+#	Python3 interface:
+#	  PYTHON3=[Path to Python3 directory] (Set inside Make_cyg.mak or Make_ming.mak)
+#	  DYNAMIC_PYTHON3=yes (to load the Python3 DLL dynamically)
+#	  PYTHON3_VER=[Python3 version, eg 31, 32] (default is 31)
+ifdef PYTHON3
+ifndef DYNAMIC_PYTHON3
+DYNAMIC_PYTHON3=yes
+endif
+
+ifndef PYTHON3_VER
+PYTHON3_VER=31
+endif
+
+ifeq (no,$(DYNAMIC_PYTHON3))
+PYTHON3LIB=-L$(PYTHON3)/libs -lPYTHON$(PYTHON3_VER)
+endif
+
+ifeq ($(CROSS),no)
+PYTHON3INC=-I $(PYTHON3)/include
+else
+PYTHON3INC=-I $(PYTHON3)/win32inc
+endif
+endif
+
+#	TCL interface:
+#	  TCL=[Path to TCL directory] (Set inside Make_cyg.mak or Make_ming.mak)
+#	  DYNAMIC_TCL=yes (to load the TCL DLL dynamically)
+#	  TCL_VER=[TCL version, eg 83, 84] (default is 83)
+ifdef TCL
+ifndef DYNAMIC_TCL
+DYNAMIC_TCL=yes
+endif
+ifndef TCL_VER
+TCL_VER = 83
+endif
+TCLINC += -I$(TCL)/include
+endif
+
+
+#	Ruby interface:
+#	  RUBY=[Path to Ruby directory] (Set inside Make_cyg.mak or Make_ming.mak)
+#	  DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically)
+#	  RUBY_VER=[Ruby version, eg 18, 19, 20] (default is 18)
+#	  RUBY_VER_LONG=[Ruby version, eg 1.8, 1.9.1, 2.0.0] (default is 1.8)
+#	    You must set RUBY_VER_LONG when changing RUBY_VER.
+#	    RUBY_API_VER is derived from RUBY_VER_LONG.
+#	    Note: If you use Ruby 1.9.3, set as follows:
+#	      RUBY_VER=19
+#	      RUBY_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.)
+ifdef RUBY
+ifndef DYNAMIC_RUBY
+DYNAMIC_RUBY=yes
+endif
+#  Set default value
+ifndef RUBY_VER
+RUBY_VER = 18
+endif
+ifndef RUBY_VER_LONG
+RUBY_VER_LONG = 1.8
+endif
+ifndef RUBY_API_VER
+RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG))
+endif
+
+ifndef RUBY_PLATFORM
+ifeq ($(RUBY_VER), 16)
+RUBY_PLATFORM = i586-mswin32
+else
+ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
+RUBY_PLATFORM = i386-mingw32
+else
+ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),)
+RUBY_PLATFORM = x64-mingw32
+else
+RUBY_PLATFORM = i386-mswin32
+endif
+endif
+endif
+endif
+
+ifndef RUBY_INSTALL_NAME
+ifeq ($(RUBY_VER), 16)
+RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
+else
+ifeq ($(ARCH),x86-64)
+RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER)
+else
+RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
+endif
+endif
+endif
+
+ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
+RUBY_19_OR_LATER = 1
+endif
+
+RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
+ifdef RUBY_19_OR_LATER
+RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
+endif
+ifeq (no, $(DYNAMIC_RUBY))
+RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME)
+endif
+
+endif # RUBY
+
+# See feature.h for a list of options.
+# Any other defines can be included here.
+DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD
+DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \
+	-DHAVE_PATHDEF -DFEAT_$(FEATURES)
+ifeq ($(ARCH),x86-64)
+DEFINES+=-DMS_WIN64
+endif
+ifeq ($(CROSS),yes)
+# cross-compiler prefix:
+ifndef CROSS_COMPILE
+CROSS_COMPILE = i586-pc-mingw32msvc-
+endif
+DEL = rm
+MKDIR = mkdir -p
+DIRSLASH = /
+else
+# normal (Windows) compilation:
+ifndef CROSS_COMPILE
+CROSS_COMPILE =
+endif
+ifneq (sh.exe, $(SHELL))
+DEL = rm
+MKDIR = mkdir -p
+DIRSLASH = /
+else
+DEL = del
+MKDIR = mkdir
+DIRSLASH = \\
+endif
+endif
+CC := $(CROSS_COMPILE)gcc
+CXX := $(CROSS_COMPILE)g++
+WINDRES := $(CROSS_COMPILE)windres
+WINDRES_CC = $(CC)
+
+#>>>>> end of choices
+###########################################################################
+
+CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall
+WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED
+EXTRA_LIBS =
+
+ifdef GETTEXT
+DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
+GETTEXTINCLUDE = $(GETTEXT)/include
+GETTEXTLIB = $(INTLPATH)
+ifeq (yes, $(GETTEXT))
+DEFINES += -DDYNAMIC_GETTEXT
+else
+ifdef DYNAMIC_GETTEXT
+DEFINES += -D$(DYNAMIC_GETTEXT)
+ifdef GETTEXT_DYNAMIC
+DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\"
+endif
+endif
+endif
+endif
+
+ifdef PERL
+CFLAGS += -I$(PERLLIBS) -DFEAT_PERL
+ifeq (yes, $(DYNAMIC_PERL))
+CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
+EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER)
+endif
+endif
+
+ifdef LUA
+CFLAGS += -I$(LUA)/include -I$(LUA) -DFEAT_LUA
+ifeq (yes, $(DYNAMIC_LUA))
+CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
+endif
+endif
+
+ifdef MZSCHEME
+CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\"
+ifeq (yes, $(DYNAMIC_MZSCHEME))
+CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
+endif
+ifeq (yes, "$(MZSCHEME_DEBUG)")
+CFLAGS += -DMZSCHEME_FORCE_GC
+endif
+endif
+
+ifdef RUBY
+CFLAGS += -DFEAT_RUBY $(RUBYINC)
+ifeq (yes, $(DYNAMIC_RUBY))
+CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
+CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
+endif
+ifneq ($(findstring w64-mingw32,$(CC)),)
+# A workaround for MinGW-w64
+CFLAGS += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE
+endif
+endif
+
+ifdef PYTHON
+CFLAGS += -DFEAT_PYTHON 
+ifeq (yes, $(DYNAMIC_PYTHON))
+CFLAGS += -DDYNAMIC_PYTHON
+endif
+endif
+
+ifdef PYTHON3 
+CFLAGS += -DFEAT_PYTHON3 
+ifeq (yes, $(DYNAMIC_PYTHON3))
+CFLAGS += -DDYNAMIC_PYTHON3 
+endif
+endif
+
+ifdef TCL
+CFLAGS += -DFEAT_TCL $(TCLINC)
+ifeq (yes, $(DYNAMIC_TCL))
+CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\"
+endif
+endif
+
+ifeq ($(POSTSCRIPT),yes)
+DEFINES += -DMSWINPS
+endif
+
+ifeq (yes, $(OLE))
+DEFINES += -DFEAT_OLE
+endif
+
+ifeq ($(CSCOPE),yes)
+DEFINES += -DFEAT_CSCOPE
+endif
+
+ifeq ($(NETBEANS),yes)
+# Only allow NETBEANS for a GUI build.
+ifeq (yes, $(GUI))
+DEFINES += -DFEAT_NETBEANS_INTG
+
+ifeq ($(NBDEBUG), yes)
+DEFINES += -DNBDEBUG
+NBDEBUG_INCL = nbdebug.h
+NBDEBUG_SRC = nbdebug.c
+endif
+endif
+endif
+
+# DirectWrite (DirectX)
+ifeq ($(DIRECTX),yes)
+# Only allow DirectWrite for a GUI build.
+ifeq (yes, $(GUI))
+DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
+endif
+endif
+
+# Only allow XPM for a GUI build.
+ifeq (yes, $(GUI))
+
+ifndef XPM
+ifeq ($(ARCH),i386)
+XPM = xpm/x86
+endif
+ifeq ($(ARCH),i486)
+XPM = xpm/x86
+endif
+ifeq ($(ARCH),i586)
+XPM = xpm/x86
+endif
+ifeq ($(ARCH),i686)
+XPM = xpm/x86
+endif
+ifeq ($(ARCH),x86-64)
+XPM = xpm/x64
+endif
+endif
+ifdef XPM
+ifneq ($(XPM),no)
+CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include
+endif
+endif
+
+endif
+
+ifeq ($(DEBUG),yes)
+CFLAGS += -g -fstack-check
+DEBUG_SUFFIX=d
+else
+ifeq ($(OPTIMIZE), SIZE)
+CFLAGS += -Os
+else
+ifeq ($(OPTIMIZE), MAXSPEED)
+CFLAGS += -O3
+CFLAGS += -fomit-frame-pointer -freg-struct-return
+else  # SPEED
+CFLAGS += -O2
+endif
+endif
+CFLAGS += -s
+endif
+
+LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion
+GUIOBJ =  $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
+OBJ = \
+	$(OUTDIR)/blowfish.o \
+	$(OUTDIR)/buffer.o \
+	$(OUTDIR)/charset.o \
+	$(OUTDIR)/crypt.o \
+	$(OUTDIR)/crypt_zip.o \
+	$(OUTDIR)/diff.o \
+	$(OUTDIR)/digraph.o \
+	$(OUTDIR)/edit.o \
+	$(OUTDIR)/eval.o \
+	$(OUTDIR)/ex_cmds.o \
+	$(OUTDIR)/ex_cmds2.o \
+	$(OUTDIR)/ex_docmd.o \
+	$(OUTDIR)/ex_eval.o \
+	$(OUTDIR)/ex_getln.o \
+	$(OUTDIR)/fileio.o \
+	$(OUTDIR)/fold.o \
+	$(OUTDIR)/getchar.o \
+	$(OUTDIR)/hardcopy.o \
+	$(OUTDIR)/hashtab.o \
+	$(OUTDIR)/main.o \
+	$(OUTDIR)/mark.o \
+	$(OUTDIR)/memfile.o \
+	$(OUTDIR)/memline.o \
+	$(OUTDIR)/menu.o \
+	$(OUTDIR)/message.o \
+	$(OUTDIR)/misc1.o \
+	$(OUTDIR)/misc2.o \
+	$(OUTDIR)/move.o \
+	$(OUTDIR)/mbyte.o \
+	$(OUTDIR)/normal.o \
+	$(OUTDIR)/ops.o \
+	$(OUTDIR)/option.o \
+	$(OUTDIR)/os_win32.o \
+	$(OUTDIR)/os_mswin.o \
+	$(OUTDIR)/winclip.o \
+	$(OUTDIR)/pathdef.o \
+	$(OUTDIR)/popupmnu.o \
+	$(OUTDIR)/quickfix.o \
+	$(OUTDIR)/regexp.o \
+	$(OUTDIR)/screen.o \
+	$(OUTDIR)/search.o \
+	$(OUTDIR)/sha256.o \
+	$(OUTDIR)/spell.o \
+	$(OUTDIR)/syntax.o \
+	$(OUTDIR)/tag.o \
+	$(OUTDIR)/term.o \
+	$(OUTDIR)/ui.o \
+	$(OUTDIR)/undo.o \
+	$(OUTDIR)/version.o \
+	$(OUTDIR)/vimrc.o \
+	$(OUTDIR)/window.o
+
+ifdef PERL
+OBJ += $(OUTDIR)/if_perl.o
+endif
+ifdef LUA
+OBJ += $(OUTDIR)/if_lua.o
+endif
+ifdef MZSCHEME
+OBJ += $(OUTDIR)/if_mzsch.o
+MZSCHEME_INCL = if_mzsch.h
+ifeq (yes,$(MZSCHEME_GENERATE_BASE))
+CFLAGS += -DINCLUDE_MZSCHEME_BASE
+MZ_EXTRA_DEP += mzscheme_base.c
+endif
+ifeq (yes,$(MZSCHEME_PRECISE_GC))
+CFLAGS += -DMZ_PRECISE_GC
+endif
+endif
+ifdef PYTHON
+OBJ += $(OUTDIR)/if_python.o
+endif
+ifdef PYTHON3
+OBJ += $(OUTDIR)/if_python3.o
+endif
+ifdef RUBY
+OBJ += $(OUTDIR)/if_ruby.o
+endif
+ifdef TCL
+OBJ += $(OUTDIR)/if_tcl.o
+endif
+ifeq ($(CSCOPE),yes)
+OBJ += $(OUTDIR)/if_cscope.o
+endif
+ifeq ($(NETBEANS),yes)
+# Only allow NETBEANS for a GUI build.
+ifeq (yes, $(GUI))
+OBJ += $(OUTDIR)/netbeans.o
+LIB += -lwsock32
+endif
+endif
+ifeq ($(DIRECTX),yes)
+# Only allow DIRECTX for a GUI build.
+ifeq (yes, $(GUI))
+OBJ += $(OUTDIR)/gui_dwrite.o
+LIB += -ld2d1 -ldwrite
+USE_STDCPLUS = yes
+endif
+endif
+ifneq ($(XPM),no)
+# Only allow XPM for a GUI build.
+ifeq (yes, $(GUI))
+OBJ += $(OUTDIR)/xpm_w32.o
+# You'll need libXpm.a from http://gnuwin32.sf.net
+LIB += -L$(XPM)/lib -lXpm
+endif
+endif
+
+
+ifdef MZSCHEME
+MZSCHEME_SUFFIX = Z
+endif
+
+ifeq ($(GUI),yes)
+TARGET := gvim$(DEBUG_SUFFIX).exe
+DEFINES += $(DEF_GUI)
+OBJ += $(GUIOBJ)
+LFLAGS += -mwindows
+OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH)
+else
+TARGET := vim$(DEBUG_SUFFIX).exe
+OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH)
+endif
+
+ifdef GETTEXT
+ifneq (yes, $(GETTEXT))
+CFLAGS += -I$(GETTEXTINCLUDE)
+ifndef STATIC_GETTEXT
+LIB += -L$(GETTEXTLIB) -l$(INTLLIB)
+ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT))
+OBJ+=$(SAFE_GETTEXT_DLL_OBJ)
+endif
+else
+LIB += -L$(GETTEXTLIB) -lintl
+endif
+endif
+endif
+
+ifdef PERL
+ifeq (no, $(DYNAMIC_PERL))
+LIB += -L$(PERLLIBS) -lperl$(PERL_VER)
+endif
+endif
+
+ifdef TCL
+LIB += -L$(TCL)/lib
+ifeq (yes, $(DYNAMIC_TCL))
+LIB += -ltclstub$(TCL_VER)
+else
+LIB += -ltcl$(TCL_VER)
+endif
+endif
+
+ifeq (yes, $(OLE))
+LIB += -loleaut32
+OBJ += $(OUTDIR)/if_ole.o
+USE_STDCPLUS = yes
+endif
+
+ifeq (yes, $(MBYTE))
+DEFINES += -DFEAT_MBYTE
+endif
+
+ifeq (yes, $(IME))
+DEFINES += -DFEAT_MBYTE_IME
+ifeq (yes, $(DYNAMIC_IME))
+DEFINES += -DDYNAMIC_IME
+else
+LIB += -limm32
+endif
+endif
+
+ifdef ICONV
+ifneq (yes, $(ICONV))
+LIB += -L$(ICONV)
+CFLAGS += -I$(ICONV)
+endif
+DEFINES+=-DDYNAMIC_ICONV
+endif
+
+ifeq (yes, $(USE_STDCPLUS))
+ifeq (yes, $(STATIC_STDCPLUS))
+LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
+else
+LIB += -lstdc++
+endif
+endif
+
+all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll
+
+vimrun.exe: vimrun.c
+	$(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIB)
+
+install.exe: dosinst.c
+	$(CC) $(CFLAGS) -o install.exe dosinst.c $(LIB) -lole32 -luuid
+
+uninstal.exe: uninstal.c
+	$(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB)
+
+$(TARGET): $(OUTDIR) $(OBJ)
+	$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)
+
+upx: exes
+	upx gvim.exe
+	upx vim.exe
+
+mpress: exes
+	mpress gvim.exe
+	mpress vim.exe
+
+xxd/xxd.exe: xxd/xxd.c
+	$(MAKE) -C xxd -f Make_ming.mak CC='$(CC)'
+
+GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+	$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX='$(CXX)' STATIC_STDCPLUS=$(STATIC_STDCPLUS)
+
+clean:
+	-$(DEL) $(OUTDIR)$(DIRSLASH)*.o
+	-$(DEL) $(OUTDIR)$(DIRSLASH)*.res
+	-rmdir $(OUTDIR)
+	-$(DEL) *.exe
+	-$(DEL) pathdef.c
+ifdef PERL
+	-$(DEL) if_perl.c
+endif
+ifdef MZSCHEME
+	-$(DEL) mzscheme_base.c
+endif
+	$(MAKE) -C GvimExt -f Make_ming.mak clean
+	$(MAKE) -C xxd -f Make_ming.mak clean
+
+###########################################################################
+INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
+	structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \
+	gui.h
+
+$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
+	$(CC) -c $(CFLAGS) $(PYTHONINC) -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" $< -o $@
+
+$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
+	$(CC) -c $(CFLAGS) $(PYTHON3INC) -DDYNAMIC_PYTHON3_DLL=\"PYTHON$(PYTHON3_VER).dll\" $< -o $@
+
+$(OUTDIR)/%.o : %.c $(INCL)
+	$(CC) -c $(CFLAGS) $< -o $@
+
+$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
+	$(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \
+	    --input-format=rc --output-format=coff -i vim.rc -o $@
+
+$(OUTDIR):
+	$(MKDIR) $(OUTDIR)
+
+$(OUTDIR)/ex_docmd.o:	ex_docmd.c $(INCL) ex_cmds.h
+	$(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
+
+$(OUTDIR)/ex_eval.o:	ex_eval.c $(INCL) ex_cmds.h
+	$(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
+
+$(OUTDIR)/gui_w32.o:	gui_w32.c gui_w48.c $(INCL)
+	$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
+
+$(OUTDIR)/gui_dwrite.o:	gui_dwrite.cpp $(INCL) gui_dwrite.h
+	$(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
+
+$(OUTDIR)/if_cscope.o:	if_cscope.c $(INCL) if_cscope.h
+	$(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
+
+# Remove -D__IID_DEFINED__ for newer versions of the w32api
+$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL)
+	$(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp
+
+$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
+ifeq (16, $(RUBY))
+	$(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c
+endif
+
+if_perl.c: if_perl.xs typemap
+	$(XSUBPP) -prototypes -typemap \
+	     "$(PERLTYPEMAP)" if_perl.xs > $@
+
+$(OUTDIR)/netbeans.o:	netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
+	$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
+
+$(OUTDIR)/regexp.o:		regexp.c regexp_nfa.c $(INCL)
+	$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
+
+$(OUTDIR)/if_mzsch.o:	if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
+	$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
+
+mzscheme_base.c:
+	$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
+
+pathdef.c: $(INCL)
+ifneq (sh.exe, $(SHELL))
+	@echo creating pathdef.c
+	@echo '/* pathdef.c */' > pathdef.c
+	@echo '#include "vim.h"' >> pathdef.c
+	@echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c
+	@echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c
+	@echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c
+	@echo 'char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)";' >> pathdef.c
+	@echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c
+	@echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c
+else
+	@echo creating pathdef.c
+	@echo /* pathdef.c */ > pathdef.c
+	@echo #include "vim.h" >> pathdef.c
+	@echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c
+	@echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c
+	@echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c
+	@echo char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)"; >> pathdef.c
+	@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
+	@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
+endif
diff --git a/src/Make_ming.mak b/src/Make_ming.mak
index 19b4c2f..9ed1a70 100644
--- a/src/Make_ming.mak
+++ b/src/Make_ming.mak
@@ -1,193 +1,27 @@
-# Makefile for VIM on Win32
 #
-# Info at http://www.mingw.org
-# Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net
-# Also requires GNU make, which you can download from the same sites.
-# Get missing libraries from http://gnuwin32.sf.net.
+# Makefile for VIM on Win32, using MinGW
 #
-# Tested on Win32 NT 4 and Win95.
+# Also read INSTALLpc.txt!
 #
-# To make everything, just 'make -f Make_ming.mak'.
-# To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'.
-# After a run, you can 'make -f Make_ming.mak clean' to clean up.
+# The old Make_ming.mak (maintained by Ron Aaron et al.) was merged into
+# Make_cyg_ming.mak.
+# This file contains MinGW specific settings. Common settings are contained
+# in Make_cyg_ming.mak.
 #
-# NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think
-# it's just run out of memory or something.  Run again, and it will continue
-# with 'xxd'.
-#
-# "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs,
-# using the excellent UPX compressor:
-#     http://upx.sourceforge.net/
-# "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs:
-#     http://www.matcode.com/mpress.htm
-#
-# Maintained by Ron Aaron <ronaharon@yahoo.com> et al.
-# Updated 2014 Oct 13.
+# Last updated by Ken Takata.
+# Last Change: 2014 Oct 21
 
-#>>>>> choose options:
-# set to yes for a debug build
-DEBUG=no
-# set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization
-OPTIMIZE=MAXSPEED
-# set to yes to make gvim, no for vim
-GUI=yes
-# set to yes if you want to use DirectWrite (DirectX)
-DIRECTX=no
-# FEATURES=[TINY | SMALL  | NORMAL | BIG | HUGE]
-# Set to TINY to make minimal version (few features).
-FEATURES=BIG
-# Set to one of i386, i486, i586, i686 as the minimum target processor.
-# For amd64/x64 architecture set ARCH=x86-64 .
-ARCH=i386
-# Set to yes to cross-compile from unix; no=native Windows.
-CROSS=no
-# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'.
-#ICONV="."
-ICONV=yes
-GETTEXT=yes
-# Set to yes to include multibyte support.
-MBYTE=yes
-# Set to yes to include IME support.
-IME=yes
-DYNAMIC_IME=yes
-# Set to yes to enable writing a postscript file with :hardcopy.
-POSTSCRIPT=no
-# Set to yes to enable OLE support.
-OLE=no
-# Set the default $(WINVER) to make it work with pre-Win2k.
-ifndef WINVER
-WINVER = 0x0500
-endif
-# Set to yes to enable Cscope support.
-CSCOPE=yes
-# Set to yes to enable Netbeans support.
-NETBEANS=$(GUI)
-
-
-# Link against the shared version of libstdc++ by default.  Set
-# STATIC_STDCPLUS to "yes" to link against static version instead.
-ifndef STATIC_STDCPLUS
-STATIC_STDCPLUS=no
-endif
-
-# If the user doesn't want gettext, undefine it.
-ifeq (no, $(GETTEXT))
-GETTEXT=
-endif
-# Added by E.F. Amatria <eferna1@platea.ptic.mec.es> 2001 Feb 23
-# Uncomment the first line and one of the following three if you want Native Language
-# Support.  You'll need gnu_gettext.win32, a MINGW32 Windows PORT of gettext by
-# Franco Bez <franco.bez@gmx.de>.  It may be found at
-# http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html
-# Tested with mingw32 with GCC-2.95.2 on Win98
-# Updated 2001 Jun 9
-#GETTEXT=c:/gettext.win32.msvcrt
-#STATIC_GETTEXT=USE_STATIC_GETTEXT
-#DYNAMIC_GETTEXT=USE_GETTEXT_DLL
-#DYNAMIC_GETTEXT=USE_SAFE_GETTEXT_DLL
-SAFE_GETTEXT_DLL_OBJ = $(GETTEXT)/src/safe_gettext_dll/safe_gettext_dll.o
-# Alternatively, if you uncomment the two following lines, you get a "safe" version
-# without linking the safe_gettext_dll.o object file.
-#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
-#GETTEXT_DYNAMIC=gnu_gettext.dll
-INTLPATH=$(GETTEXT)/lib/mingw32
-INTLLIB=gnu_gettext
-
-# If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext
-# or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/
-# uncomment the following, but I can't build a static version with them, ?-(|
-#GETTEXT=c:/gettext-0.10.37-20010430
-#STATIC_GETTEXT=USE_STATIC_GETTEXT
-#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
-#INTLPATH=$(GETTEXT)/lib
-#INTLLIB=intl
 
 # uncomment 'PERL' if you want a perl-enabled version
-#PERL=C:/perl
-ifdef PERL
-ifndef PERL_VER
-PERL_VER=56
-endif
-ifndef DYNAMIC_PERL
-DYNAMIC_PERL=yes
-endif
-# on Linux, for cross-compile, it's here:
-#PERLLIB=/home/ron/ActivePerl/lib
-# on NT, it's here:
-PERLLIB=$(PERL)/lib
-PERLLIBS=$(PERLLIB)/Core
-XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp
-XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPPTRY)'")
-ifeq "$(XSUBPP_EXISTS)" ""
-XSUBPP=perl $(XSUBPPTRY)
-else
-XSUBPP=xsubpp
-endif
-endif
+#PERL=c:/perl
 
 # uncomment 'LUA' if you want a Lua-enabled version
-#LUA=/usr/local
-ifdef LUA
-ifndef DYNAMIC_LUA
-DYNAMIC_LUA=yes
-endif
-
-ifndef LUA_VER
-LUA_VER=51
-endif
-
-ifeq (no,$(DYNAMIC_LUA))
-LUA_LIB = -L$(LUA)/lib -llua
-endif
-
-endif
+#LUA=c:/lua
 
 # uncomment 'MZSCHEME' if you want a MzScheme-enabled version
 #MZSCHEME=d:/plt
-ifdef MZSCHEME
-ifndef DYNAMIC_MZSCHEME
-DYNAMIC_MZSCHEME=yes
-endif
 
-ifndef MZSCHEME_VER
-MZSCHEME_VER=205_000
-endif
-
-ifndef MZSCHEME_PRECISE_GC
-MZSCHEME_PRECISE_GC=no
-endif
-
-# for version 4.x we need to generate byte-code for Scheme base
-ifndef MZSCHEME_GENERATE_BASE
-MZSCHEME_GENERATE_BASE=no
-endif
-
-ifndef MZSCHEME_USE_RACKET
-MZSCHEME_MAIN_LIB=mzsch
-else
-MZSCHEME_MAIN_LIB=racket
-endif
-
-ifeq (no,$(DYNAMIC_MZSCHEME))
-ifeq (yes,$(MZSCHEME_PRECISE_GC))
-MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
-else
-MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
-endif
-# the modern MinGW can dynamically link to dlls directly.
-# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
-ifndef MZSCHEME_DLLS
-MZSCHEME_DLLS=$(MZSCHEME)
-endif
-MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib
-endif
-
-endif
-
-# Python support -- works with the ActiveState python 2.0 release (and others
-# too, probably)
-#
-# uncomment 'PYTHON' to make python-enabled version
+# uncomment 'PYTHON' if you want a python-enabled version
 # Put the path to the python distro here.  If cross compiling from Linux, you
 # will also need to convert the header files to unix instead of dos format:
 #   for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil
@@ -200,631 +34,16 @@
 # on my NT box, it's here:
 #PYTHON=c:/python20
 
-ifdef PYTHON
-ifndef DYNAMIC_PYTHON
-DYNAMIC_PYTHON=yes
-endif
+# uncomment 'PYTHON3' if you want a python3-enabled version
+#PYTHON3=c:/python31
 
-ifndef PYTHON_VER
-PYTHON_VER=22
-endif
-
-ifeq (no,$(DYNAMIC_PYTHON))
-PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER)
-endif
-# my include files are in 'win32inc' on Linux, and 'include' in the standard
-# NT distro (ActiveState)
-ifeq ($(CROSS),no)
-PYTHONINC=-I $(PYTHON)/include
-else
-PYTHONINC=-I $(PYTHON)/win32inc
-endif
-endif
-
-#PYTHON3: See comment for Python 2 above
-
-ifdef PYTHON3
-ifndef DYNAMIC_PYTHON3
-DYNAMIC_PYTHON3=yes
-endif
-
-ifndef PYTHON3_VER
-PYTHON3_VER=31
-endif
-
-ifeq (no,$(DYNAMIC_PYTHON3))
-PYTHON3LIB=-L$(PYTHON3)/libs -lPYTHON$(PYTHON3_VER)
-endif
-
-ifeq ($(CROSS),no)
-PYTHON3INC=-I $(PYTHON3)/include
-else
-PYTHON3INC=-I $(PYTHON3)/win32inc
-endif
-endif
-
-#	TCL interface:
-#	  TCL=[Path to TCL directory]
-#	  DYNAMIC_TCL=yes (to load the TCL DLL dynamically)
-#	  TCL_VER=[TCL version, eg 83, 84] (default is 83)
+# uncomment 'TCL' if you want a Tcl-enabled version
 #TCL=c:/tcl
-ifdef TCL
-ifndef DYNAMIC_TCL
-DYNAMIC_TCL=yes
-endif
-ifndef TCL_VER
-TCL_VER = 83
-endif
-TCLINC += -I$(TCL)/include
-endif
 
-
-#	Ruby interface:
-#	  RUBY=[Path to Ruby directory]
-#	  DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically)
-#	  RUBY_VER=[Ruby version, eg 16, 17] (default is 16)
-#	  RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6)
-#	    You must set RUBY_VER_LONG when changing RUBY_VER.
-#	    You must set RUBY_API_VER version to RUBY_VER_LONG.
-#	    Don't set ruby API version to RUBY_VER like 191.
+# uncomment 'RUBY' if you want a Ruby-enabled version
 #RUBY=c:/ruby
-ifdef RUBY
-ifndef DYNAMIC_RUBY
-DYNAMIC_RUBY=yes
-endif
-#  Set default value
-ifndef RUBY_VER
-RUBY_VER = 16
-endif
-ifndef RUBY_VER_LONG
-RUBY_VER_LONG = 1.6
-endif
-ifndef RUBY_API_VER
-RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG))
-endif
 
-ifndef RUBY_PLATFORM
-ifeq ($(RUBY_VER), 16)
-RUBY_PLATFORM = i586-mswin32
-else
-ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
-RUBY_PLATFORM = i386-mingw32
-else
-ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),)
-RUBY_PLATFORM = x64-mingw32
-else
-RUBY_PLATFORM = i386-mswin32
-endif
-endif
-endif
-endif
 
-ifndef RUBY_INSTALL_NAME
-ifeq ($(RUBY_VER), 16)
-RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
-else
-ifeq ($(ARCH),x86-64)
-RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER)
-else
-RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
-endif
-endif
-endif
-
-ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
-RUBY_19_OR_LATER = 1
-endif
-
-RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
-ifdef RUBY_19_OR_LATER
-RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
-endif
-ifeq (no, $(DYNAMIC_RUBY))
-RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME)
-endif
-
-endif # RUBY
-
-# See feature.h for a list of options.
-# Any other defines can be included here.
-DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD
-DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \
-	-DHAVE_PATHDEF -DFEAT_$(FEATURES)
-ifeq ($(ARCH),x86-64)
-DEFINES+=-DMS_WIN64
-endif
-ifeq ($(CROSS),yes)
-# cross-compiler prefix:
-CROSS_COMPILE = i586-pc-mingw32msvc-
-DEL = rm
-MKDIR = mkdir -p
-DIRSLASH = /
-else
-# normal (Windows) compilation:
-CROSS_COMPILE =
-ifneq (sh.exe, $(SHELL))
-DEL = rm
-MKDIR = mkdir -p
-DIRSLASH = /
-else
-DEL = del
-MKDIR = mkdir
-DIRSLASH = \\
-endif
-endif
-CC := $(CROSS_COMPILE)gcc
-WINDRES := $(CROSS_COMPILE)windres
-WINDRES_CC = $(CC)
-
-#>>>>> end of choices
-###########################################################################
-
-CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall
-WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED
-EXTRA_LIBS =
-
-ifdef GETTEXT
-DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
-GETTEXTINCLUDE = $(GETTEXT)/include
-GETTEXTLIB = $(INTLPATH)
-ifeq (yes, $(GETTEXT))
-DEFINES += -DDYNAMIC_GETTEXT
-else
-ifdef DYNAMIC_GETTEXT
-DEFINES += -D$(DYNAMIC_GETTEXT)
-ifdef GETTEXT_DYNAMIC
-DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\"
-endif
-endif
-endif
-endif
-
-ifdef PERL
-CFLAGS += -I$(PERLLIBS) -DFEAT_PERL
-ifeq (yes, $(DYNAMIC_PERL))
-CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
-EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER)
-endif
-endif
-
-ifdef LUA
-CFLAGS += -I$(LUA)/include -DFEAT_LUA
-ifeq (yes, $(DYNAMIC_LUA))
-CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
-endif
-endif
-
-ifdef MZSCHEME
-CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\"
-ifeq (yes, $(DYNAMIC_MZSCHEME))
-CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
-endif
-ifeq (yes, "$(MZSCHEME_DEBUG)")
-CFLAGS += -DMZSCHEME_FORCE_GC
-endif
-endif
-
-ifdef RUBY
-CFLAGS += -DFEAT_RUBY $(RUBYINC)
-ifeq (yes, $(DYNAMIC_RUBY))
-CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
-CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
-endif
-endif
-
-ifdef PYTHON
-CFLAGS += -DFEAT_PYTHON 
-ifeq (yes, $(DYNAMIC_PYTHON))
-CFLAGS += -DDYNAMIC_PYTHON
-endif
-endif
-
-ifdef PYTHON3 
-CFLAGS += -DFEAT_PYTHON3 
-ifeq (yes, $(DYNAMIC_PYTHON3))
-CFLAGS += -DDYNAMIC_PYTHON3 
-endif
-endif
-
-ifdef TCL
-CFLAGS += -DFEAT_TCL $(TCLINC)
-ifeq (yes, $(DYNAMIC_TCL))
-CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\"
-endif
-endif
-
-ifeq ($(POSTSCRIPT),yes)
-DEFINES += -DMSWINPS
-endif
-
-ifeq (yes, $(OLE))
-DEFINES += -DFEAT_OLE
-endif
-
-ifeq ($(CSCOPE),yes)
-DEFINES += -DFEAT_CSCOPE
-endif
-
-ifeq ($(NETBEANS),yes)
-# Only allow NETBEANS for a GUI build.
-ifeq (yes, $(GUI))
-DEFINES += -DFEAT_NETBEANS_INTG
-
-ifeq ($(NBDEBUG), yes)
-DEFINES += -DNBDEBUG
-NBDEBUG_INCL = nbdebug.h
-NBDEBUG_SRC = nbdebug.c
-endif
-endif
-endif
-
-# DirectWrite (DirectX)
-ifeq ($(DIRECTX),yes)
-# Only allow DirectWrite for a GUI build.
-ifeq (yes, $(GUI))
-DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
-endif
-endif
-
-# Only allow XPM for a GUI build.
-ifeq (yes, $(GUI))
-
-ifndef XPM
-ifeq ($(ARCH),i386)
-XPM = xpm/x86
-endif
-ifeq ($(ARCH),i486)
-XPM = xpm/x86
-endif
-ifeq ($(ARCH),i586)
-XPM = xpm/x86
-endif
-ifeq ($(ARCH),i686)
-XPM = xpm/x86
-endif
-ifeq ($(ARCH),x86-64)
-XPM = xpm/x64
-endif
-endif
-ifdef XPM
-ifneq ($(XPM),no)
-CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include
-endif
-endif
-
-endif
-
-ifeq ($(DEBUG),yes)
-CFLAGS += -g -fstack-check
-DEBUG_SUFFIX=d
-else
-ifeq ($(OPTIMIZE), SIZE)
-CFLAGS += -Os
-else
-ifeq ($(OPTIMIZE), MAXSPEED)
-CFLAGS += -O3
-CFLAGS += -fomit-frame-pointer -freg-struct-return
-else  # SPEED
-CFLAGS += -O2
-endif
-endif
-CFLAGS += -s
-endif
-
-LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion
-GUIOBJ =  $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
-OBJ = \
-	$(OUTDIR)/blowfish.o \
-	$(OUTDIR)/buffer.o \
-	$(OUTDIR)/charset.o \
-	$(OUTDIR)/crypt.o \
-	$(OUTDIR)/crypt_zip.o \
-	$(OUTDIR)/diff.o \
-	$(OUTDIR)/digraph.o \
-	$(OUTDIR)/edit.o \
-	$(OUTDIR)/eval.o \
-	$(OUTDIR)/ex_cmds.o \
-	$(OUTDIR)/ex_cmds2.o \
-	$(OUTDIR)/ex_docmd.o \
-	$(OUTDIR)/ex_eval.o \
-	$(OUTDIR)/ex_getln.o \
-	$(OUTDIR)/fileio.o \
-	$(OUTDIR)/fold.o \
-	$(OUTDIR)/getchar.o \
-	$(OUTDIR)/hardcopy.o \
-	$(OUTDIR)/hashtab.o \
-	$(OUTDIR)/main.o \
-	$(OUTDIR)/mark.o \
-	$(OUTDIR)/memfile.o \
-	$(OUTDIR)/memline.o \
-	$(OUTDIR)/menu.o \
-	$(OUTDIR)/message.o \
-	$(OUTDIR)/misc1.o \
-	$(OUTDIR)/misc2.o \
-	$(OUTDIR)/move.o \
-	$(OUTDIR)/mbyte.o \
-	$(OUTDIR)/normal.o \
-	$(OUTDIR)/ops.o \
-	$(OUTDIR)/option.o \
-	$(OUTDIR)/os_win32.o \
-	$(OUTDIR)/os_mswin.o \
-	$(OUTDIR)/winclip.o \
-	$(OUTDIR)/pathdef.o \
-	$(OUTDIR)/popupmnu.o \
-	$(OUTDIR)/quickfix.o \
-	$(OUTDIR)/regexp.o \
-	$(OUTDIR)/screen.o \
-	$(OUTDIR)/search.o \
-	$(OUTDIR)/sha256.o \
-	$(OUTDIR)/spell.o \
-	$(OUTDIR)/syntax.o \
-	$(OUTDIR)/tag.o \
-	$(OUTDIR)/term.o \
-	$(OUTDIR)/ui.o \
-	$(OUTDIR)/undo.o \
-	$(OUTDIR)/version.o \
-	$(OUTDIR)/vimrc.o \
-	$(OUTDIR)/window.o
-
-ifdef PERL
-OBJ += $(OUTDIR)/if_perl.o
-endif
-ifdef LUA
-OBJ += $(OUTDIR)/if_lua.o
-endif
-ifdef MZSCHEME
-OBJ += $(OUTDIR)/if_mzsch.o
-MZSCHEME_INCL = if_mzsch.h
-ifeq (yes,$(MZSCHEME_GENERATE_BASE))
-CFLAGS += -DINCLUDE_MZSCHEME_BASE
-MZ_EXTRA_DEP += mzscheme_base.c
-endif
-ifeq (yes,$(MZSCHEME_PRECISE_GC))
-CFLAGS += -DMZ_PRECISE_GC
-endif
-endif
-ifdef PYTHON
-OBJ += $(OUTDIR)/if_python.o
-endif
-ifdef PYTHON3
-OBJ += $(OUTDIR)/if_python3.o
-endif
-ifdef RUBY
-OBJ += $(OUTDIR)/if_ruby.o
-endif
-ifdef TCL
-OBJ += $(OUTDIR)/if_tcl.o
-endif
-ifeq ($(CSCOPE),yes)
-OBJ += $(OUTDIR)/if_cscope.o
-endif
-ifeq ($(NETBEANS),yes)
-# Only allow NETBEANS for a GUI build.
-ifeq (yes, $(GUI))
-OBJ += $(OUTDIR)/netbeans.o
-LIB += -lwsock32
-endif
-endif
-ifeq ($(DIRECTX),yes)
-# Only allow DIRECTX for a GUI build.
-ifeq (yes, $(GUI))
-OBJ += $(OUTDIR)/gui_dwrite.o
-LIB += -ld2d1 -ldwrite
-USE_STDCPLUS = yes
-endif
-endif
-ifneq ($(XPM),no)
-# Only allow XPM for a GUI build.
-ifeq (yes, $(GUI))
-OBJ += $(OUTDIR)/xpm_w32.o
-# You'll need libXpm.a from http://gnuwin32.sf.net
-LIB += -L$(XPM)/lib -lXpm
-endif
-endif
-
-
-ifdef MZSCHEME
-MZSCHEME_SUFFIX = Z
-endif
-
-ifeq ($(GUI),yes)
-TARGET := gvim$(DEBUG_SUFFIX).exe
-DEFINES += $(DEF_GUI)
-OBJ += $(GUIOBJ)
-LFLAGS += -mwindows
-OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH)
-else
-TARGET := vim$(DEBUG_SUFFIX).exe
-OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH)
-endif
-
-ifdef GETTEXT
-ifneq (yes, $(GETTEXT))
-CFLAGS += -I$(GETTEXTINCLUDE)
-ifndef STATIC_GETTEXT
-LIB += -L$(GETTEXTLIB) -l$(INTLLIB)
-ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT))
-OBJ+=$(SAFE_GETTEXT_DLL_OBJ)
-endif
-else
-LIB += -L$(GETTEXTLIB) -lintl
-endif
-endif
-endif
-
-ifdef PERL
-ifeq (no, $(DYNAMIC_PERL))
-LIB += -L$(PERLLIBS) -lperl$(PERL_VER)
-endif
-endif
-
-ifdef TCL
-LIB += -L$(TCL)/lib
-ifeq (yes, $(DYNAMIC_TCL))
-LIB += -ltclstub$(TCL_VER)
-else
-LIB += -ltcl$(TCL_VER)
-endif
-endif
-
-ifeq (yes, $(OLE))
-LIB += -loleaut32
-OBJ += $(OUTDIR)/if_ole.o
-USE_STDCPLUS = yes
-endif
-
-ifeq (yes, $(MBYTE))
-DEFINES += -DFEAT_MBYTE
-endif
-
-ifeq (yes, $(IME))
-DEFINES += -DFEAT_MBYTE_IME
-ifeq (yes, $(DYNAMIC_IME))
-DEFINES += -DDYNAMIC_IME
-else
-LIB += -limm32
-endif
-endif
-
-ifdef ICONV
-ifneq (yes, $(ICONV))
-LIB += -L$(ICONV)
-CFLAGS += -I$(ICONV)
-endif
-DEFINES+=-DDYNAMIC_ICONV
-endif
-
-ifeq (yes, $(USE_STDCPLUS))
-ifeq (yes, $(STATIC_STDCPLUS))
-LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
-else
-LIB += -lstdc++
-endif
-endif
-
-all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll
-
-vimrun.exe: vimrun.c
-	$(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIB)
-
-install.exe: dosinst.c
-	$(CC) $(CFLAGS) -o install.exe dosinst.c $(LIB) -lole32 -luuid
-
-uninstal.exe: uninstal.c
-	$(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB)
-
-$(TARGET): $(OUTDIR) $(OBJ)
-	$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)
-
-upx: exes
-	upx gvim.exe
-	upx vim.exe
-
-mpress: exes
-	mpress gvim.exe
-	mpress vim.exe
-
-xxd/xxd.exe: xxd/xxd.c
-	$(MAKE) -C xxd -f Make_ming.mak CC=$(CC)
-
-GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
-	$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE)
-
-clean:
-	-$(DEL) $(OUTDIR)$(DIRSLASH)*.o
-	-$(DEL) $(OUTDIR)$(DIRSLASH)*.res
-	-rmdir $(OUTDIR)
-	-$(DEL) *.exe
-	-$(DEL) pathdef.c
-ifdef PERL
-	-$(DEL) if_perl.c
-endif
-ifdef MZSCHEME
-	-$(DEL) mzscheme_base.c
-endif
-	$(MAKE) -C GvimExt -f Make_ming.mak clean
-	$(MAKE) -C xxd -f Make_ming.mak clean
-
-###########################################################################
-INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
-	structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \
-	gui.h
-
-$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
-	$(CC) -c $(CFLAGS) $(PYTHONINC) -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" $< -o $@
-
-$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
-	$(CC) -c $(CFLAGS) $(PYTHON3INC) -DDYNAMIC_PYTHON3_DLL=\"PYTHON$(PYTHON3_VER).dll\" $< -o $@
-
-$(OUTDIR)/%.o : %.c $(INCL)
-	$(CC) -c $(CFLAGS) $< -o $@
-
-$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
-	$(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \
-	    --input-format=rc --output-format=coff -i vim.rc -o $@
-
-$(OUTDIR):
-	$(MKDIR) $(OUTDIR)
-
-$(OUTDIR)/ex_docmd.o:	ex_docmd.c $(INCL) ex_cmds.h
-	$(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
-
-$(OUTDIR)/ex_eval.o:	ex_eval.c $(INCL) ex_cmds.h
-	$(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
-
-$(OUTDIR)/gui_w32.o:	gui_w32.c gui_w48.c $(INCL)
-	$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
-
-$(OUTDIR)/gui_dwrite.o:	gui_dwrite.cpp $(INCL) gui_dwrite.h
-	$(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
-
-$(OUTDIR)/if_cscope.o:	if_cscope.c $(INCL) if_cscope.h
-	$(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
-
-# Remove -D__IID_DEFINED__ for newer versions of the w32api
-$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL)
-	$(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp
-
-$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
-ifeq (16, $(RUBY))
-	$(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c
-endif
-
-if_perl.c: if_perl.xs typemap
-	$(XSUBPP) -prototypes -typemap \
-	     $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@
-
-$(OUTDIR)/netbeans.o:	netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
-	$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
-
-$(OUTDIR)/regexp.o:		regexp.c regexp_nfa.c $(INCL)
-	$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
-
-$(OUTDIR)/if_mzsch.o:	if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
-	$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
-
-mzscheme_base.c:
-	$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
-
-pathdef.c: $(INCL)
-ifneq (sh.exe, $(SHELL))
-	@echo creating pathdef.c
-	@echo '/* pathdef.c */' > pathdef.c
-	@echo '#include "vim.h"' >> pathdef.c
-	@echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c
-	@echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c
-	@echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c
-	@echo 'char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)";' >> pathdef.c
-	@echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c
-	@echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c
-else
-	@echo creating pathdef.c
-	@echo /* pathdef.c */ > pathdef.c
-	@echo #include "vim.h" >> pathdef.c
-	@echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c
-	@echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c
-	@echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c
-	@echo char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)"; >> pathdef.c
-	@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
-	@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
-endif
+# Do not change this.
+UNDER_CYGWIN = no
+include Make_cyg_ming.mak
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index 31bcd68..f751757 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -50,13 +50,14 @@
 #	Perl interface:
 #	  PERL=[Path to Perl directory]
 #	  DYNAMIC_PERL=yes (to load the Perl DLL dynamically)
-#	  PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x), etc]
+#	  PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x),
+#		    510 (5.10.x), etc]
 #	  (default is 56)
 #
 #	Python interface:
 #	  PYTHON=[Path to Python directory]
 #	  DYNAMIC_PYTHON=yes (to load the Python DLL dynamically)
-#	  PYTHON_VER=[Python version, eg 15, 20]  (default is 22)
+#	  PYTHON_VER=[Python version, eg 22, 23, ..., 27]  (default is 22)
 #
 #	Python3 interface:
 #	  PYTHON3=[Path to Python3 directory]
@@ -66,11 +67,13 @@
 #	Ruby interface:
 #	  RUBY=[Path to Ruby directory]
 #	  DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically)
-#	  RUBY_VER=[Ruby version, eg 16, 17] (default is 18)
-#	  RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.8)
+#	  RUBY_VER=[Ruby version, eg 18, 19, 20] (default is 18)
+#	  RUBY_VER_LONG=[Ruby version, eg 1.8, 1.9.1, 2.0.0] (default is 1.8)
 #	    You must set RUBY_VER_LONG when change RUBY_VER.
-#	    You must set RUBY_API_VER to RUBY_VER_LONG.
-#	    Don't set ruby API version to RUBY_VER like 191.
+#	    RUBY_API_VER is derived from RUBY_VER_LONG.
+#	    Note: If you use Ruby 1.9.3, set as follows:
+#	      RUBY_VER=19
+#	      RUBY_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.)
 #
 #	Tcl interface:
 #	  TCL=[Path to Tcl directory]
diff --git a/src/version.c b/src/version.c
index 4b75a58..c399dd6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    496,
+/**/
     495,
 /**/
     494,
