changeset 16606:7e733046db1d v8.1.1306

patch 8.1.1306: Borland support is outdated and doesn't work commit https://github.com/vim/vim/commit/eae1b91fea74842000fc055afc74fe2e7934c6ee Author: Bram Moolenaar <Bram@vim.org> Date: Thu May 9 15:12:55 2019 +0200 patch 8.1.1306: Borland support is outdated and doesn't work Problem: Borland support is outdated and doesn't work. Solution: Remove Borland support, there are other (free) compilers available. (Thomas Dziedzic, Ken Takata, closes #4364)
author Bram Moolenaar <Bram@vim.org>
date Thu, 09 May 2019 15:15:07 +0200
parents 50115650f6c7
children 5c5a7f945ade
files .gitignore .hgignore Filelist runtime/doc/debug.txt runtime/doc/develop.txt runtime/doc/usr_90.txt src/GvimExt/Make_bc5.mak src/GvimExt/gvimext.cpp src/GvimExt/gvimext.rc src/INSTALLpc.txt src/Make_bc5.mak src/dosinst.c src/dosinst.h src/evalfunc.c src/ex_cmds.c src/ex_getln.c src/gui_w32.c src/if_ole.cpp src/if_py_both.h src/main.c src/mark.c src/message.c src/misc1.c src/misc2.c src/normal.c src/option.c src/os_mswin.c src/os_w32exe.c src/os_win32.c src/os_win32.h src/proto.h src/screen.c src/spell.c src/spellfile.c src/syntax.c src/userfunc.c src/version.c src/vim.h src/vim.rc src/vimrun.c src/xxd/Make_bc5.mak src/xxd/xxd.c
diffstat 42 files changed, 80 insertions(+), 1476 deletions(-) [+]
line wrap: on
line diff
--- a/.gitignore
+++ b/.gitignore
@@ -43,14 +43,6 @@ gvim.lib
 runtime/doc/uganda.nsis.txt
 nsis/icons/*
 
-# Borland C++
-bcc.cfg
-*.ilc
-*.ild
-*.ilf
-*.ils
-*.tds
-
 # NetBeans
 nbproject/*
 
--- a/.hgignore
+++ b/.hgignore
@@ -45,14 +45,6 @@ gvim.lib
 runtime/doc/uganda.nsis.txt
 nsis/icons/*
 
-# Borland C++
-bcc.cfg
-*.ilc
-*.ild
-*.ilf
-*.ils
-*.tds
-
 # NetBeans
 nbproject/*
 
--- a/Filelist
+++ b/Filelist
@@ -421,7 +421,6 @@ SRC_DOS =	\
 		src/GvimExt/uninst.bat \
 		README_srcdos.txt \
 		src/INSTALLpc.txt \
-		src/Make_bc5.mak \
 		src/Make_cyg.mak \
 		src/Make_cyg_ming.mak \
 		src/Make_ming.mak \
@@ -474,7 +473,6 @@ SRC_DOS =	\
 		src/xpm_w32.c \
 		src/xpm_w32.h \
 		src/tee/Make_mvc.mak \
-		src/xxd/Make_bc5.mak \
 		src/xxd/Make_ming.mak \
 		src/xxd/Make_mvc.mak \
 		nsis/gvim.nsi \
--- a/runtime/doc/debug.txt
+++ b/runtime/doc/debug.txt
@@ -80,9 +80,8 @@ then the PDB was built with the EXE.
 
 If you have Visual Studio, use that instead of the VC Toolkit and WinDbg.
 
-For other compilers, you should always use the corresponding debugger: TD for
-a Vim executable compiled with the Borland compiler; gdb (see above
-|debug-gcc|) for the Cygwin and MinGW compilers.
+For other compilers, you should always use the corresponding debugger: gdb
+(see above |debug-gcc|) for the Cygwin and MinGW compilers.
 
 
 								*debug-vs2005*
--- a/runtime/doc/develop.txt
+++ b/runtime/doc/develop.txt
@@ -278,7 +278,6 @@ wait		don't use as argument to a functio
 index		shadows global declaration
 time		shadows global declaration
 new		C++ reserved keyword
-try		Borland C++ doesn't like it to be used as a variable.
 
 clear		Mac curses.h
 echo		Mac curses.h
--- a/runtime/doc/usr_90.txt
+++ b/runtime/doc/usr_90.txt
@@ -281,9 +281,8 @@ unpacked them.
 In case you are not satisfied with the features included in the supplied
 binaries, you could try compiling Vim yourself.  Get the source archive from
 the same location as where the binaries are.  You need a compiler for which a
-makefile exists.  Microsoft Visual C works, but is expensive.  The Free
-Borland command-line compiler 5.5 can be used, as well as the free MingW and
-Cygwin compilers.  Check the file src/INSTALLpc.txt for hints.
+makefile exists.  Microsoft Visual C works, but is expensive.  The free MinGW
+and Cygwin compilers can be used.  Check the file src/INSTALLpc.txt for hints.
 
 ==============================================================================
 *90.3*	Upgrading
deleted file mode 100644
--- a/src/GvimExt/Make_bc5.mak
+++ /dev/null
@@ -1,43 +0,0 @@
-### USEDLL  no for statically linked version of run-time, yes for DLL runtime
-### BOR	    path to root of Borland C install (c:\bc5)
-
-### (requires cc3250.dll be available in %PATH%)
-!if ("$(USEDLL)"=="")
-USEDLL = no
-!endif
-
-### BOR: root of the BC installation
-!if ("$(BOR)"=="")
-BOR = c:\bc5
-!endif
-
-CC	= $(BOR)\bin\Bcc32
-BRC	= $(BOR)\bin\brc32
-LINK	= $(BOR)\BIN\ILink32
-INCLUDE = $(BOR)\include;.
-LIB	= $(BOR)\lib
-
-!if ("$(USEDLL)"=="yes")
-RT_DEF = -D_RTLDLL
-RT_LIB = cw32i.lib
-!else
-RT_DEF =
-RT_LIB = cw32.lib
-!endif
-
-
-all : gvimext.dll
-
-gvimext.obj : gvimext.cpp gvimext.h
-	$(CC) -tWD -I$(INCLUDE) -c -DFEAT_GETTEXT $(RT_DEF) -w- gvimext.cpp
-
-gvimext.res : gvimext.rc
-	$(BRC) -r gvimext.rc
-
-gvimext.dll : gvimext.obj gvimext.res
-	$(LINK) -L$(LIB) -aa gvimext.obj, gvimext.dll, , c0d32.obj $(RT_LIB) import32.lib, gvimext.def, gvimext.res
-
-clean :
-	-@del gvimext.obj
-	-@del gvimext.res
-	-@del gvimext.dll
--- a/src/GvimExt/gvimext.cpp
+++ b/src/GvimExt/gvimext.cpp
@@ -16,14 +16,7 @@
 
 #include "gvimext.h"
 
-#ifdef __BORLANDC__
-# include <dir.h>
-# ifndef _strnicmp
-#  define _strnicmp(a, b, c) strnicmp((a), (b), (c))
-# endif
-#else
 static char *searchpath(char *name);
-#endif
 
 // Always get an error while putting the following stuff to the
 // gvimext.h file as class protected variables, give up and
@@ -917,7 +910,6 @@ BOOL CShellExt::LoadMenuIcon()
 	return TRUE;
 }
 
-#ifndef __BORLANDC__
     static char *
 searchpath(char *name)
 {
@@ -937,7 +929,6 @@ searchpath(char *name)
     }
     return (char *)"";
 }
-#endif
 
 STDMETHODIMP CShellExt::InvokeGvim(HWND hParent,
 				   LPCSTR  /* pszWorkingDir */,
--- a/src/GvimExt/gvimext.rc
+++ b/src/GvimExt/gvimext.rc
@@ -7,9 +7,7 @@
 //
 // Generated from the TEXTINCLUDE 2 resource.
 //
-#ifndef __BORLANDC__
-# include "winresrc.h"
-#endif
+#include "winresrc.h"
 
 /////////////////////////////////////////////////////////////////////////////
 #undef APSTUDIO_READONLY_SYMBOLS
--- a/src/INSTALLpc.txt
+++ b/src/INSTALLpc.txt
@@ -25,21 +25,20 @@ 1. Microsoft Visual C++
 2. Using MSYS2 with MinGW
 3. Using MinGW
 4. Cygwin
-5. Borland
-6. Cross compiling for Win32 from a Linux machine
-7. Building with Python support
-8. Building with Python3 support
-9. Building with Racket or MzScheme support
-10. Building with Lua support
-11. Building with Perl support
-12. Building with Ruby support
-13. Building with Tcl support
-14. Building with Terminal support
-15. Building with DirectX (DirectWrite) support
-16. Windows 3.1
-17. MS-DOS
+5. Cross compiling for Win32 from a Linux machine
+6. Building with Python support
+7. Building with Python3 support
+8. Building with Racket or MzScheme support
+9. Building with Lua support
+10. Building with Perl support
+11. Building with Ruby support
+12. Building with Tcl support
+13. Building with Terminal support
+14. Building with DirectX (DirectWrite) support
+15. Windows 3.1
+16. MS-DOS
 
-18. Installing after building from sources
+17. Installing after building from sources
 
 
 The currently recommended way (that means it has been verified to work) is
@@ -451,14 +450,7 @@ running on Unix), while with Make_cyg.ma
 with the other makefiles).
 
 
-5. Borland
-===========
-
-Use Make_bc5.mak with Borland C++ 5.x. See
-    http://users.skynet.be/antoine.mechelynck/vim/compile.htm
-
-
-6. Cross compiling for Win32 from a Linux machine
+5. Cross compiling for Win32 from a Linux machine
 =================================================
 
 [Update of 1) needs to be verified]
@@ -478,7 +470,7 @@ your Linux (or other unix) box.  To do t
 Now you have created the Windows binary from your Linux box!  Have fun...
 
 
-7. Building with Python support
+6. Building with Python support
 ===============================
 
 For building with MSVC 2008 the "Windows Installer" from www.python.org
@@ -539,7 +531,7 @@ Now just do:
 You will end up with a Python-enabled, Win32 version. Enjoy!
 
 
-8. Building with Python3 support
+7. Building with Python3 support
 ================================
 
 For building with MSVC 2008 the "Windows Installer" from www.python.org
@@ -576,7 +568,7 @@ When using msys2 and link with Python3 b
 libstdc++-6.dll.)
 
 
-9. Building with Racket or MzScheme support
+8. Building with Racket or MzScheme support
 ========================================
 
 1) Building with Racket support (newest)
@@ -666,7 +658,7 @@ After a successful build, these dlls can
 
 
 
-10. Building with Lua support
+9. Building with Lua support
 ============================
 
 Vim with Lua support can be built with either MSVC or MinGW (or maybe Cygwin).
@@ -721,7 +713,7 @@ Or when using Cygwin (as one line) (unte
         LUA=/cygdrive/c/projects/lua53 DYNAMIC_LUA=yes LUA_VER=53
 
 
-11. Building with Perl support
+10. Building with Perl support
 ==============================
 
 Vim with Perl support can be built with either MSVC or MinGW (or Cygwin).
@@ -747,7 +739,7 @@ Or when using MinGW (as one line):
         PERL=C:/Perl DYNAMIC_PERL=yes PERL_VER=522
 
 
-12. Building with Ruby support
+11. Building with Ruby support
 ==============================
 
 Vim with Ruby support can be built with either MSVC or MinGW (or Cygwin).
@@ -855,7 +847,7 @@ Ruby 2.1 or later.  (Default is 0x600.)
 
 
 
-13. Building with Tcl support
+12. Building with Tcl support
 =============================
 
 Vim with Tcl support can be built with either MSVC or MinGW (or Cygwin).
@@ -894,7 +886,7 @@ Or when using MinGW (as one line):
         TCL=C:/Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
 
 
-14. Building with Terminal support
+13. Building with Terminal support
 ==================================
 
 Vim with Terminal support can be built with either MSVC, MinGW or Cygwin.
@@ -910,7 +902,7 @@ Or when using MinGW:
     mingw32-make -f Make_ming.mak TERMINAL=yes
 
 
-15. Building with DirectX (DirectWrite) support
+14. Building with DirectX (DirectWrite) support
 ===============================================
 
 Vim with DirectX (DirectWrite) support can be built with either MSVC or MinGW.
@@ -944,20 +936,20 @@ Just set DIRECTX to yes:
     mingw32-make -f Make_ming.mak DIRECTX=yes
 
 
-16. Windows 3.1x
+15. Windows 3.1x
 ================
 
 The Windows 3.1x support was removed in patch 7.4.1364.
 
 
-17. MS-DOS
+16. MS-DOS
 ==========
 
 The MS-DOS support was removed in patch 7.4.1399.  Only very old Vim versions
 work on MS-DOS because of the limited amount of memory available.
 
 
-18. Installing after building from sources
+17. Installing after building from sources
 ==========================================
 
 [provided by Michael Soyka, updated by Ken Takata]
deleted file mode 100644
--- a/src/Make_bc5.mak
+++ /dev/null
@@ -1,983 +0,0 @@
-#
-# Makefile for Vim.
-# Compiler: Borland C++ 5.0 and later 32-bit compiler
-#  Targets: Win32 (Windows NT and Windows 95) (with/without GUI)
-#
-# NOTE: THIS IS OLD AND PROBABLY NO LONGER WORKS.
-#
-# Contributed by Ben Singer.
-# Updated 4/1997 by Ron Aaron
-#	2016: removed support for 16 bit DOS
-#	6/1997 - added support for 16 bit DOS
-#	Note: this has been tested, and works, for BC5.  Your mileage may vary.
-#	Has been reported NOT to work with BC 4.52.  Maybe it can be fixed?
-#	10/1997 - ron - fixed bugs w/ BC 5.02
-#	8/1998 - ron - updated with new targets, fixed some stuff
-#	3/2000 - Bram: Made it work with BC 5.5 free command line compiler,
-#			cleaned up variables.
-#	6/2001 - Dan - Added support for compiling Python and TCL
-#	7/2001 - Dan - Added support for compiling Ruby
-#
-# It builds on Windows 95 and NT-Intel, producing the same binary in either
-# case.  To build using Microsoft Visual C++, use Make_mvc.mak.
-#
-# This should work with the free Borland command line compiler, version 5.5.
-# You need at least sp1 (service pack 1).  With sp2 it compiles faster.
-# Use a command like this:
-# <path>\bin\make /f Make_bc5.mak BOR=<path>
-#
-
-# let the make utility do the hard work:
-.AUTODEPEND
-.CACHEAUTODEPEND
-
-# VARIABLES:
-# name		value (default)
-#
-# BOR		path to root of Borland C install (c:\bc5)
-# LINK		name of the linker ($(BOR)\bin\ilink32)
-# GUI		no or yes: set to yes if you want the GUI version (yes)
-# 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: set to yes to load the Lua DLL dynamically (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 (no)
-# 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 (no)
-# PYTHON3	define to path to Python3 dir to get PYTHON3 support (not defined)
-#   PYTHON3_VER	    define to version of Python3 being used (31)
-#   DYNAMIC_PYTHON3  no or yes: use yes to load the Python3 DLL dynamically (no)
-# 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 (no)
-# RUBY		define to path to Ruby dir to get Ruby support (not defined)
-#		NOTE: You may have to remove the defines for uid_t and gid_t
-#		from the Ruby config.h header file.
-#   RUBY_VER	define to version of Ruby being used (16)
-#		NOTE: compilation on WinNT/2K/XP requires
-#		at least version 1.6.5 of Ruby.  Earlier versions
-#		of Ruby will cause a compile error on these systems.
-#   RUBY_VER_LONG  same, but in format with dot. (1.6)
-#   DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (no)
-# IME		no or yes: set to yes for multi-byte IME support (yes)
-#   DYNAMIC_IME no or yes: set to yes to load imm32.dll dynamically (yes)
-# GETTEXT	no or yes: set to yes for multi-language support (yes)
-# ICONV		no or yes: set to yes for dynamic iconv support (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)
-# CODEGUARD	no or yes: set to yes if you want to use CODEGUARD (no)
-# CPUNR		1 through 6: select -CPU argument to compile with (3)
-#		3 for 386, 4 for 486, 5 for pentium, 6 for pentium pro.
-# USEDLL	no or yes: set to yes to use the Runtime library DLL (no)
-#		For USEDLL=yes the cc3250.dll is required to run Vim.
-# ALIGN		1, 2 or 4: Alignment to use (4 for Win32)
-# FASTCALL	no or yes: set to yes to use register-based function protocol (yes)
-# OPTIMIZE	SPACE, SPEED, or MAXSPEED: type of optimization (MAXSPEED)
-# POSTSCRIPT	no or yes: set to yes for PostScript printing
-# FEATURES	TINY, SMALL, NORMAL, BIG or HUGE (BIG for WIN32)
-# WINVER	0x0400 or 0x0500: minimum Win32 version to support (0x0400)
-# CSCOPE	no or yes: include support for Cscope interface (yes)
-# NETBEANS	no or yes: include support for Netbeans interface; also
-#		requires CHANNEL (yes if GUI
-#		is yes)
-# NBDEBUG	no or yes: include support for debugging Netbeans interface (no)
-# CHANNEL	no or yes: include support for inter process communication (yes
-#		if GUI is yes)
-# XPM		define to path to XPM dir to get support for loading XPM images.
-
-### BOR: root of the BC installation
-!if ("$(BOR)"=="")
-BOR = c:\bc5
-!endif
-
-### LINK: Name of the linker: ilink32 (this is below)
-
-### GUI: yes for GUI version, no for console version
-!if ("$(GUI)"=="")
-GUI = yes
-!endif
-
-### IME: yes for multibyte support, no to disable it.
-!if ("$(IME)"=="")
-IME = yes
-!endif
-!if ("$(DYNAMIC_IME)"=="")
-DYNAMIC_IME = yes
-!endif
-
-### GETTEXT: yes for multilanguage support, no to disable it.
-!if ("$(GETTEXT)"=="")
-GETTEXT = yes
-!endif
-
-### ICONV: yes to enable dynamic-iconv support, no to disable it
-!if ("$(ICONV)"=="")
-ICONV = yes
-!endif
-
-### CSCOPE: yes to enable Cscope support, no to disable it
-!if ("$(CSCOPE)"=="")
-CSCOPE = yes
-!endif
-
-### NETBEANS: yes to enable NetBeans interface support, no to disable it
-!if ("$(NETBEANS)"=="") && ("$(GUI)"=="yes")
-NETBEANS = yes
-!endif
-
-### CHANNEL: yes to enable inter process communication, no to disable it
-!if ("$(CHANNEL)"=="") && ("$(GUI)"=="yes")
-CHANNEL = yes
-!endif
-
-### LUA: uncomment this line if you want lua support in vim
-# LUA=c:\lua
-
-### PERL: uncomment this line if you want perl support in vim
-# PERL=c:\perl
-
-### PYTHON: uncomment this line if you want python support in vim
-# PYTHON=c:\python22
-
-### PYTHON3: uncomment this line if you want python3 support in vim
-# PYTHON3=c:\python31
-
-### RUBY: uncomment this line if you want ruby support in vim
-# RUBY=c:\ruby
-
-### TCL: uncomment this line if you want tcl support in vim
-# TCL=c:\tcl
-
-### OLE: no for normal gvim, yes for OLE-capable gvim (only works with GUI)
-#OLE = yes
-
-### DEBUG: Uncomment to make an executable for debugging
-# DEBUG = yes
-!if ("$(DEBUG)"=="yes")
-DEBUG_FLAG = -v
-!endif
-
-### CODEGUARD: Uncomment to use the CODEGUARD stuff (BC 5.0 or later):
-# CODEGUARD = yes
-!if ("$(CODEGUARD)"=="yes")
-CODEGUARD_FLAG = -vG
-!endif
-
-### CPUNR: set your target processor (3 to 6)
-!if ("$(CPUNR)" == "i386") || ("$(CPUNR)" == "3")
-CPUNR = 3
-!elif ("$(CPUNR)" == "i486") || ("$(CPUNR)" == "4")
-CPUNR = 4
-!elif ("$(CPUNR)" == "i586") || ("$(CPUNR)" == "5")
-CPUNR = 5
-!elif ("$(CPUNR)" == "i686") || ("$(CPUNR)" == "6")
-CPUNR = 6
-!else
-CPUNR = 3
-!endif
-
-### Comment out to use precompiled headers (faster, but uses lots of disk!)
-HEADERS = -H -H=vim.csm -Hc
-
-### USEDLL: no for statically linked version of run-time, yes for DLL runtime
-!if ("$(USEDLL)"=="")
-USEDLL = no
-!endif
-
-### ALIGN: alignment you desire: (1,2 or 4: s/b 4 for Win32)
-!if ("$(ALIGN)"=="")
-ALIGN = 4
-!endif
-
-### FASTCALL: yes to use FASTCALL calling convention (RECOMMENDED!), no otherwise
-#   Incompatible when calling external functions (like MSVC-compiled DLLs), so
-#   don't use FASTCALL when linking with external libs.
-!if ("$(FASTCALL)"=="") && \
-	("$(LUA)"=="") && \
-	("$(PYTHON)"=="") && \
-	("$(PYTHON3)"=="") && \
-	("$(PERL)"=="") && \
-	("$(TCL)"=="") && \
-	("$(RUBY)"=="") && \
-	("$(ICONV)"!="yes") && \
-	("$(IME)"!="yes") && \
-	("$(XPM)"=="")
-FASTCALL = yes
-!endif
-
-### OPTIMIZE: SPEED to optimize for speed, SPACE otherwise (SPEED RECOMMENDED)
-!if ("$(OPTIMIZE)"=="")
-OPTIMIZE = MAXSPEED
-!endif
-
-### FEATURES: TINY, SMALL, NORMAL, BIG or HUGE (BIG for WIN32)
-!if ("$(FEATURES)"=="")
-FEATURES = BIG
-!endif
-
-### POSTSCRIPT: uncomment this line if you want PostScript printing
-#POSTSCRIPT = yes
-
-###
-# If you have a fixed directory for $VIM or $VIMRUNTIME, other than the normal
-# default, use these lines.
-#VIMRCLOC = somewhere
-#VIMRUNTIMEDIR = somewhere
-
-### Set the default $(WINVER) to make it work with Bcc 5.5.
-!ifndef WINVER
-WINVER = 0x0400
-!endif
-
-#
-# Sanity checks for the above options:
-#
-
-OSTYPE = WIN32
-
-#
-# Optimizations: change as desired (RECOMMENDATION: Don't change!):
-#
-!if ("$(DEBUG)"=="yes")
-OPT = -Od -N
-!else
-!if ("$(OPTIMIZE)"=="SPACE")
-OPT = -O1 -f- -d
-!elif ("$(OPTIMIZE)"=="MAXSPEED")
-OPT = -O2 -f- -d -Ocavi -O
-!else
-OPT = -O2 -f- -d -Oc -O
-!endif
-!if ("$(FASTCALL)"=="yes")
-OPT = $(OPT) -pr
-!endif
-!if ("$(CODEGUARD)"!="yes")
-OPT = $(OPT) -vi-
-!endif
-!endif
-# shouldn't have to change:
-LIB = $(BOR)\lib
-INCLUDE = $(BOR)\include;.;proto
-DEFINES = -DFEAT_$(FEATURES) -DWIN32 -DHAVE_PATHDEF \
-	  -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER)
-
-!ifdef LUA
-INTERP_DEFINES = $(INTERP_DEFINES) -DFEAT_LUA
-INCLUDE = $(LUA)\include;$(INCLUDE)
-!  ifndef LUA_VER
-LUA_VER = 51
-!  endif
-!  if ("$(DYNAMIC_LUA)" == "yes")
-INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
-LUA_LIB_FLAG = /nodefaultlib:
-!  endif
-!endif
-
-!ifdef PERL
-INTERP_DEFINES = $(INTERP_DEFINES) -DFEAT_PERL
-INCLUDE = $(PERL)\lib\core;$(INCLUDE)
-!  ifndef PERL_VER
-PERL_VER = 56
-!  endif
-!  if ("$(DYNAMIC_PERL)" == "yes")
-!    if ($(PERL_VER) > 55)
-INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
-PERL_LIB_FLAG = /nodefaultlib:
-!    else
-!      message "Cannot dynamically load Perl versions less than 5.6.  Loading statically..."
-!    endif
-!  endif
-!endif
-
-!ifdef PYTHON
-!ifdef PYTHON3
-DYNAMIC_PYTHON=yes
-DYNAMIC_PYTHON3=yes
-!endif
-!endif
-
-!ifdef PYTHON
-INTERP_DEFINES = $(INTERP_DEFINES) -DFEAT_PYTHON
-!ifndef PYTHON_VER
-PYTHON_VER = 22
-!endif
-!if "$(DYNAMIC_PYTHON)" == "yes"
-INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\"
-PYTHON_LIB_FLAG = /nodefaultlib:
-!endif
-!endif
-
-!ifdef PYTHON3
-INTERP_DEFINES = $(INTERP_DEFINES) -DFEAT_PYTHON3
-!ifndef PYTHON3_VER
-PYTHON3_VER = 31
-!endif
-!if "$(DYNAMIC_PYTHON3)" == "yes"
-INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python$(PYTHON3_VER).dll\"
-PYTHON3_LIB_FLAG = /nodefaultlib:
-!endif
-!endif
-
-
-!ifdef RUBY
-!ifndef RUBY_VER
-RUBY_VER = 16
-!endif
-!ifndef RUBY_VER_LONG
-RUBY_VER_LONG = 1.6
-!endif
-
-!if "$(RUBY_VER)" == "16"
-!ifndef RUBY_PLATFORM
-RUBY_PLATFORM = i586-mswin32
-!endif
-!ifndef RUBY_INSTALL_NAME
-RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
-!endif
-!else
-!ifndef RUBY_PLATFORM
-RUBY_PLATFORM = i386-mswin32
-!endif
-!ifndef RUBY_INSTALL_NAME
-RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER)
-!endif
-!endif
-
-INTERP_DEFINES = $(INTERP_DEFINES) -DFEAT_RUBY
-INCLUDE = $(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM);$(INCLUDE)
-
-!if "$(DYNAMIC_RUBY)" == "yes"
-INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
-INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_RUBY_VER=$(RUBY_VER)
-RUBY_LIB_FLAG = /nodefaultlib:
-!endif
-!endif
-
-!ifdef TCL
-INTERP_DEFINES = $(INTERP_DEFINES) -DFEAT_TCL
-INCLUDE = $(TCL)\include;$(INCLUDE)
-!ifndef TCL_VER
-TCL_VER = 83
-!endif
-TCL_LIB = $(TCL)\lib\tcl$(TCL_VER).lib
-TCL_LIB_FLAG =
-!if "$(DYNAMIC_TCL)" == "yes"
-INTERP_DEFINES = $(INTERP_DEFINES) -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\"
-TCL_LIB = tclstub$(TCL_VER)-bor.lib
-TCL_LIB_FLAG =
-!endif
-!endif
-#
-# DO NOT change below:
-#
-CPUARG = -$(CPUNR)
-ALIGNARG = -a$(ALIGN)
-#
-!if ("$(DEBUG)"=="yes")
-DEFINES=$(DEFINES) -DDEBUG -D_DEBUG
-!endif
-#
-!if ("$(OLE)"=="yes")
-DEFINES = $(DEFINES) -DFEAT_OLE
-!endif
-#
-!if ("$(IME)"=="yes")
-MBDEFINES = $(MBDEFINES) -DFEAT_MBYTE_IME
-!if ("$(DYNAMIC_IME)" == "yes")
-MBDEFINES = $(MBDEFINES) -DDYNAMIC_IME
-!endif
-!endif
-!if ("$(ICONV)"=="yes")
-MBDEFINES = $(MBDEFINES) -DDYNAMIC_ICONV
-!endif
-!if ("$(GETTEXT)"=="yes")
-MBDEFINES = $(MBDEFINES) -DDYNAMIC_GETTEXT
-!endif
-
-!if ("$(CSCOPE)"=="yes")
-DEFINES = $(DEFINES) -DFEAT_CSCOPE
-!endif
-
-!if ("$(GUI)"=="yes")
-DEFINES = $(DEFINES) -DFEAT_GUI_MSWIN -DFEAT_CLIPBOARD
-!if ("$(DEBUG)"=="yes")
-TARGET = gvimd.exe
-!else
-TARGET = gvim.exe
-!endif
-EXETYPE=-W
-STARTUPOBJ = c0w32.obj
-LINK2 = -aa
-RESFILE = vim.res
-!else
-!undef NETBEANS
-!undef CHANNEL
-!undef XPM
-!if ("$(DEBUG)"=="yes")
-TARGET = vimd.exe
-!else
-# for now, anyway: VIMDLL is only for the GUI version
-TARGET = vim.exe
-!endif
-EXETYPE=-WC
-STARTUPOBJ = c0x32.obj
-LINK2 = -ap -OS -o -P
-RESFILE = vim.res
-!endif
-
-!if ("$(NETBEANS)"=="yes")
-!if ("$(CHANNEL)"!="yes")
-# cannot use Netbeans without CHANNEL
-NETBEANS = no
-!else
-DEFINES = $(DEFINES) -DFEAT_NETBEANS_INTG
-!if ("$(NBDEBUG)"=="yes")
-DEFINES = $(DEFINES) -DNBDEBUG
-NBDEBUG_DEP = nbdebug.h nbdebug.c
-!endif
-!endif
-!endif
-
-!if ("$(CHANNEL)"=="yes")
-DEFINES = $(DEFINES) -DFEAT_JOB_CHANNEL
-!endif
-
-!ifdef XPM
-!if ("$(GUI)"=="yes")
-DEFINES = $(DEFINES) -DFEAT_XPM_W32
-INCLUDE = $(XPM)\include;$(INCLUDE)
-!endif
-!endif
-
-!if ("$(USEDLL)"=="yes")
-DEFINES = $(DEFINES) -D_RTLDLL
-!endif
-
-!if ("$(DEBUG)"=="yes")
-OBJDIR	= $(OSTYPE)\objdbg
-!else
-!if ("$(GUI)"=="yes")
-!if ("$(OLE)"=="yes")
-OBJDIR	= $(OSTYPE)\oleobj
-!else
-OBJDIR	= $(OSTYPE)\gobj
-!endif
-!else
-OBJDIR	= $(OSTYPE)\obj
-!endif
-!endif
-
-!if ("$(POSTSCRIPT)"=="yes")
-DEFINES = $(DEFINES) -DMSWINPS
-!endif
-
-##### BASE COMPILER/TOOLS RULES #####
-MAKE = $(BOR)\bin\make
-CFLAGS = -w-aus -w-par -w-pch -w-ngu -w-csu -I$(INCLUDE)
-BRC = $(BOR)\BIN\brc32
-!if ("$(LINK)"=="")
-LINK	= $(BOR)\BIN\ILink32
-!endif
-CC   = $(BOR)\BIN\Bcc32
-LFLAGS	= -OS -Tpe -c -m -L$(LIB) $(DEBUG_FLAG) $(LINK2)
-LFLAGSDLL  = -Tpd -c -m -L$(LIB) $(DEBUG_FLAG) $(LINK2)
-CFLAGS = $(CFLAGS) -d -RT- -k- -Oi $(HEADERS) -f-
-
-CC1 = -c
-CC2 = -o
-CCARG = +$(OBJDIR)\bcc.cfg
-
-# implicit rules:
-
-# Without the following, the implicit rule in BUILTINS.MAK is picked up
-# for a rule for .c.obj rather than the local implicit rule
-.SUFFIXES
-.SUFFIXES .c .obj
-.path.c = .
-
-{.}.c{$(OBJDIR)}.obj:
-	$(CC) $(CCARG) $(CC1) -n$(OBJDIR)\ {$< }
-
-.cpp.obj:
-	$(CC) $(CCARG) $(CC1) $(CC2)$@ $*.cpp
-
-vimmain = \
-	$(OBJDIR)\os_w32exe.obj
-vimwinmain = \
-	$(OBJDIR)\os_w32exe.obj
-
-vimobj =  \
-	$(OBJDIR)\arabic.obj \
-	$(OBJDIR)\autocmd.obj \
-	$(OBJDIR)\blowfish.obj \
-	$(OBJDIR)\buffer.obj \
-	$(OBJDIR)\charset.obj \
-	$(OBJDIR)\crypt.obj \
-	$(OBJDIR)\crypt_zip.obj \
-	$(OBJDIR)\debugger.obj \
-	$(OBJDIR)\dict.obj \
-	$(OBJDIR)\diff.obj \
-	$(OBJDIR)\digraph.obj \
-	$(OBJDIR)\edit.obj \
-	$(OBJDIR)\eval.obj \
-	$(OBJDIR)\evalfunc.obj \
-	$(OBJDIR)\ex_cmds.obj \
-	$(OBJDIR)\ex_cmds2.obj \
-	$(OBJDIR)\ex_docmd.obj \
-	$(OBJDIR)\ex_eval.obj \
-	$(OBJDIR)\ex_getln.obj \
-	$(OBJDIR)\fileio.obj \
-	$(OBJDIR)\findfile.obj \
-	$(OBJDIR)\fold.obj \
-	$(OBJDIR)\getchar.obj \
-	$(OBJDIR)\hardcopy.obj \
-	$(OBJDIR)\hashtab.obj \
-	$(OBJDIR)\indent.obj \
-	$(OBJDIR)\insexpand.obj \
-	$(OBJDIR)\json.obj \
-	$(OBJDIR)\list.obj \
-	$(OBJDIR)\main.obj \
-	$(OBJDIR)\mark.obj \
-	$(OBJDIR)\memfile.obj \
-	$(OBJDIR)\memline.obj \
-	$(OBJDIR)\menu.obj \
-	$(OBJDIR)\message.obj \
-	$(OBJDIR)\misc1.obj \
-	$(OBJDIR)\misc2.obj \
-	$(OBJDIR)\move.obj \
-	$(OBJDIR)\mbyte.obj \
-	$(OBJDIR)\normal.obj \
-	$(OBJDIR)\ops.obj \
-	$(OBJDIR)\option.obj \
-	$(OBJDIR)\popupmnu.obj \
-	$(OBJDIR)\quickfix.obj \
-	$(OBJDIR)\regexp.obj \
-	$(OBJDIR)\screen.obj \
-	$(OBJDIR)\search.obj \
-	$(OBJDIR)\sha256.obj \
-	$(OBJDIR)\sign.obj \
-	$(OBJDIR)\spell.obj \
-	$(OBJDIR)\spellfile.obj \
-	$(OBJDIR)\syntax.obj \
-	$(OBJDIR)\tag.obj \
-	$(OBJDIR)\term.obj \
-	$(OBJDIR)\ui.obj \
-	$(OBJDIR)\undo.obj \
-	$(OBJDIR)\usercmd.obj \
-	$(OBJDIR)\userfunc.obj \
-	$(OBJDIR)\version.obj \
-	$(OBJDIR)\window.obj \
-	$(OBJDIR)\pathdef.obj
-
-!if ("$(OLE)"=="yes")
-vimobj = $(vimobj) \
-	$(OBJDIR)\if_ole.obj
-!endif
-
-!ifdef LUA
-vimobj = $(vimobj) \
-    $(OBJDIR)\if_lua.obj
-!endif
-
-!ifdef PERL
-vimobj = $(vimobj) \
-    $(OBJDIR)\if_perl.obj
-!endif
-
-!ifdef PYTHON
-vimobj = $(vimobj) \
-    $(OBJDIR)\if_python.obj
-!endif
-
-!ifdef PYTHON3
-vimobj = $(vimobj) \
-    $(OBJDIR)\if_python3.obj
-!endif
-
-!ifdef RUBY
-vimobj = $(vimobj) \
-    $(OBJDIR)\if_ruby.obj
-!endif
-
-!ifdef TCL
-vimobj = $(vimobj) \
-    $(OBJDIR)\if_tcl.obj
-!endif
-
-!if ("$(CSCOPE)"=="yes")
-vimobj = $(vimobj) \
-    $(OBJDIR)\if_cscope.obj
-!endif
-
-!if ("$(NETBEANS)"=="yes")
-vimobj = $(vimobj) \
-    $(OBJDIR)\netbeans.obj
-!endif
-
-!if ("$(CHANNEL)"=="yes")
-vimobj = $(vimobj) \
-    $(OBJDIR)\channel.obj
-!endif
-
-!ifdef XPM
-vimobj = $(vimobj) \
-    $(OBJDIR)\xpm_w32.obj
-!endif
-
-!if ("$(GUI)"=="yes")
-vimobj = $(vimobj) \
-	$(vimwinmain) \
-	$(OBJDIR)\gui.obj \
-	$(OBJDIR)\gui_beval.obj \
-	$(OBJDIR)\gui_w32.obj
-!endif
-
-vimobj = $(vimobj) \
-	$(OBJDIR)\os_win32.obj $(OBJDIR)\os_mswin.obj $(OBJDIR)\winclip.obj
-# Blab what we are going to do:
-MSG = Compiling $(OSTYPE) $(TARGET) $(OLETARGET), with:
-!if ("$(GUI)"=="yes")
-MSG = $(MSG) GUI
-!endif
-!if ("$(OLE)"=="yes")
-MSG = $(MSG) OLE
-!endif
-!if ("$(USEDLL)"=="yes")
-MSG = $(MSG) USEDLL
-!endif
-!if ("$(FASTCALL)"=="yes")
-MSG = $(MSG) FASTCALL
-!endif
-!if ("$(IME)"=="yes")
-MSG = $(MSG) IME
-! if "$(DYNAMIC_IME)" == "yes"
-MSG = $(MSG)(dynamic)
-! endif
-!endif
-!if ("$(GETTEXT)"=="yes")
-MSG = $(MSG) GETTEXT
-!endif
-!if ("$(ICONV)"=="yes")
-MSG = $(MSG) ICONV
-!endif
-!if ("$(DEBUG)"=="yes")
-MSG = $(MSG) DEBUG
-!endif
-!if ("$(CODEGUARD)"=="yes")
-MSG = $(MSG) CODEGUARD
-!endif
-!if ("$(CSCOPE)"=="yes")
-MSG = $(MSG) CSCOPE
-!endif
-!if ("$(NETBEANS)"=="yes")
-MSG = $(MSG) NETBEANS
-!endif
-!if ("$(CHANNEL)"=="yes")
-MSG = $(MSG) CHANNEL
-!endif
-!ifdef XPM
-MSG = $(MSG) XPM
-!endif
-!ifdef LUA
-MSG = $(MSG) LUA
-! if "$(DYNAMIC_LUA)" == "yes"
-MSG = $(MSG)(dynamic)
-! endif
-!endif
-!ifdef PERL
-MSG = $(MSG) PERL
-! if "$(DYNAMIC_PERL)" == "yes"
-MSG = $(MSG)(dynamic)
-! endif
-!endif
-!ifdef PYTHON
-MSG = $(MSG) PYTHON
-! if "$(DYNAMIC_PYTHON)" == "yes"
-MSG = $(MSG)(dynamic)
-! endif
-!endif
-!ifdef PYTHON3
-MSG = $(MSG) PYTHON3
-! if "$(DYNAMIC_PYTHON3)" == "yes"
-MSG = $(MSG)(dynamic)
-! endif
-!endif
-!ifdef RUBY
-MSG = $(MSG) RUBY
-! if "$(DYNAMIC_RUBY)" == "yes"
-MSG = $(MSG)(dynamic)
-! endif
-!endif
-!ifdef TCL
-MSG = $(MSG) TCL
-! if "$(DYNAMIC_TCL)" == "yes"
-MSG = $(MSG)(dynamic)
-! endif
-!endif
-MSG = $(MSG) cpu=$(CPUARG)
-MSG = $(MSG) Align=$(ALIGNARG)
-
-!message $(MSG)
-
-TARGETS = $(TARGETS) $(TARGET)
-
-# Targets:
-all: vim vimrun.exe install.exe xxd uninstal.exe GvimExt/gvimext.dll
-
-vim: $(OSTYPE) $(OBJDIR) $(OBJDIR)\bcc.cfg $(TARGETS)
-	@if exist $(OBJDIR)\version.obj del $(OBJDIR)\version.obj
-	@if exist auto\pathdef.c del auto\pathdef.c
-
-$(OSTYPE):
-	-@md $(OSTYPE)
-
-$(OBJDIR):
-	-@md $(OBJDIR)
-
-xxd:
-	@cd xxd
-	$(MAKE) /f Make_bc5.mak BOR="$(BOR)" BCC="$(CC)"
-	@cd ..
-
-GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
-	cd GvimExt
-	$(MAKE) /f Make_bc5.mak USEDLL=$(USEDLL) BOR=$(BOR)
-	cd ..
-
-install.exe: dosinst.c $(OBJDIR)\bcc.cfg
-	$(CC) $(CCARG) -WC -DWIN32 -einstall dosinst.c
-
-uninstal.exe: uninstal.c $(OBJDIR)\bcc.cfg
-	$(CC) $(CCARG) -WC -DWIN32 -O2 -euninstal uninstal.c
-
-clean:
-!if "$(OS)" == "Windows_NT"
-	# For Windows NT/2000, doesn't work on Windows 95/98...
-	# $(COMSPEC) needed to ensure rmdir.exe is not run
-	-@$(COMSPEC) /C rmdir /Q /S $(OBJDIR)
-!else
-	# For Windows 95/98, doesn't work on Windows NT/2000...
-	-@deltree /y $(OBJDIR)
-!endif
-	-@del *.res
-	-@del vim32*.dll
-	-@del vim32*.lib
-	-@del *vim*.exe
-	-@del *install*.exe
-	-@del *.csm
-	-@del *.map
-	-@del *.ilc
-	-@del *.ild
-	-@del *.ilf
-	-@del *.ils
-	-@del *.tds
-!ifdef LUA
-	-@del lua.lib
-!endif
-!ifdef PERL
-	-@del perl.lib
-	-@del if_perl.c
-	-@del auto\if_perl.c
-!endif
-!ifdef PYTHON
-	-@del python.lib
-!endif
-!ifdef PYTHON3
-	-@del python3.lib
-!endif
-!ifdef RUBY
-	-@del ruby.lib
-!endif
-!ifdef TCL
-	-@del tcl.lib
-!endif
-!ifdef XPM
-	-@del xpm.lib
-!endif
-	cd xxd
-	$(MAKE) /f Make_bc5.mak BOR="$(BOR)" clean
-	cd ..
-	cd GvimExt
-	$(MAKE) /f Make_bc5.mak BOR="$(BOR)" clean
-	cd ..
-
-
-$(TARGET): $(OBJDIR) $(vimobj) $(OBJDIR)\$(RESFILE)
-  $(LINK) @&&|
-	$(LFLAGS) +
-	$(STARTUPOBJ) +
-	$(vimobj)
-	$<,$*
-!if ("$(CODEGUARD)"=="yes")
-	cg32.lib+
-!endif
-# $(OSTYPE)==WIN32 causes os_mswin.c compilation. FEAT_SHORTCUT in it needs OLE
-	ole2w32.lib +
-	import32.lib+
-!ifdef LUA
-	$(LUA_LIB_FLAG)lua.lib+
-!endif
-!ifdef PERL
-	$(PERL_LIB_FLAG)perl.lib+
-!endif
-!ifdef PYTHON
-	$(PYTHON_LIB_FLAG)python.lib+
-!endif
-!ifdef PYTHON3
-	$(PYTHON3_LIB_FLAG)python3.lib+
-!endif
-!ifdef RUBY
-	$(RUBY_LIB_FLAG)ruby.lib+
-!endif
-!ifdef TCL
-	$(TCL_LIB_FLAG)tcl.lib+
-!endif
-!ifdef XPM
-	xpm.lib+
-!endif
-!if ("$(USEDLL)"=="yes")
-	cw32i.lib
-!else
-	cw32.lib
-!endif
-
-	$(OBJDIR)\$(RESFILE)
-|
-
-test:
-	cd testdir
-	$(MAKE) /NOLOGO -f Make_dos.mak win32
-	cd ..
-
-$(OBJDIR)\ex_docmd.obj:  ex_docmd.c ex_cmds.h
-
-$(OBJDIR)\ex_eval.obj:  ex_eval.c ex_cmds.h
-
-$(OBJDIR)\if_ole.obj: if_ole.cpp
-
-$(OBJDIR)\if_lua.obj: if_lua.c lua.lib
-	$(CC) $(CCARG) $(CC1) $(CC2)$@ -pc if_lua.c
-
-$(OBJDIR)\if_perl.obj: auto/if_perl.c perl.lib
-	$(CC) $(CCARG) $(CC1) $(CC2)$@ -pc auto/if_perl.c
-
-auto/if_perl.c: if_perl.xs typemap
-	$(PERL)\bin\perl.exe $(PERL)\lib\ExtUtils\xsubpp -prototypes -typemap \
-	    $(PERL)\lib\ExtUtils\typemap if_perl.xs -output $@
-
-$(OBJDIR)\if_python.obj: if_python.c if_py_both.h python.lib
-	$(CC) -I$(PYTHON)\include $(CCARG) $(CC1) $(CC2)$@ -pc if_python.c
-
-$(OBJDIR)\if_python3.obj: if_python3.c if_py_both.h python3.lib
-	$(CC) -I$(PYTHON3)\include $(CCARG) $(CC1) $(CC2)$@ -pc if_python3.c
-
-$(OBJDIR)\if_ruby.obj: if_ruby.c ruby.lib
-	$(CC) $(CCARG) $(CC1) $(CC2)$@ -pc if_ruby.c
-
-$(OBJDIR)\if_tcl.obj: if_tcl.c tcl.lib
-	$(CC) $(CCARG) $(CC1) $(CC2)$@ -pc if_tcl.c
-
-$(OBJDIR)\xpm_w32.obj: xpm_w32.c xpm.lib
-	$(CC) $(CCARG) $(CC1) $(CC2)$@ -pc xpm_w32.c
-
-$(OBJDIR)\netbeans.obj: netbeans.c $(NBDEBUG_DEP)
-	$(CC) $(CCARG) $(CC1) $(CC2)$@ netbeans.c
-
-$(OBJDIR)\channel.obj: channel.c
-	$(CC) $(CCARG) $(CC1) $(CC2)$@ channel.c
-
-$(OBJDIR)\vim.res: vim.rc version.h tools.bmp tearoff.bmp \
-		vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
-	$(BRC) -fo$(OBJDIR)\vim.res -i $(BOR)\include -w32 -r vim.rc @&&|
-	$(DEFINES)
-|
-
-$(OBJDIR)\pathdef.obj:	auto\pathdef.c
-	$(CC) $(CCARG) $(CC1) $(CC2)$@ auto\pathdef.c
-
-
-# Need to escape both quotes and backslashes in $INTERP_DEFINES
-INTERP_DEFINES_ESC_BKS=$(INTERP_DEFINES:\=\\)
-INTERP_DEFINES_ESC=$(INTERP_DEFINES_ESC_BKS:"=\")
-
-# Note:  the silly /*"*/ below are there to trick make into accepting
-# the # character as something other than a comment without messing up
-# the preprocessor directive.
-auto\pathdef.c::
-	-@md auto
-	@echo creating auto/pathdef.c
-	@copy /y &&|
-/* pathdef.c */
-/*"*/#include "vim.h"/*"*/
-
-char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)";
-char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)";
-char_u *all_cflags = (char_u *)"$(CC:\=\\) $(CFLAGS:\=\\) $(DEFINES) $(MBDEFINES) $(INTERP_DEFINES_ESC) $(OPT) $(EXETYPE) $(CPUARG) $(ALIGNARG) $(DEBUG_FLAG) $(CODEGUARD_FLAG)";
-char_u *all_lflags = (char_u *)"$(LINK:\=\\) $(LFLAGS:\=\\)";
-char_u *compiled_user = (char_u *)"$(USERNAME)";
-char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";
-| auto\pathdef.c
-
-lua.lib: $(LUA)\lib\lua$(LUA_VER).lib
-	coff2omf $(LUA)\lib\lua$(LUA_VER).lib $@
-
-perl.lib: $(PERL)\lib\CORE\perl$(PERL_VER).lib
-	coff2omf $(PERL)\lib\CORE\perl$(PERL_VER).lib $@
-
-python.lib: $(PYTHON)\libs\python$(PYTHON_VER).lib
-	coff2omf $(PYTHON)\libs\python$(PYTHON_VER).lib $@
-
-python3.lib: $(PYTHON3)\libs\python$(PYTHON3_VER).lib
-	coff2omf $(PYTHON3)\libs\python$(PYTHON3_VER).lib $@
-
-ruby.lib: $(RUBY)\lib\$(RUBY_INSTALL_NAME).lib
-	coff2omf $(RUBY)\lib\$(RUBY_INSTALL_NAME).lib $@
-
-# For some reason, the coff2omf method doesn't work on libXpm.lib, so
-# we have to manually generate an import library straight from the DLL.
-xpm.lib: $(XPM)\lib\libXpm.lib
-	implib -a $@ $(XPM)\bin\libXpm.dll
-
-tcl.lib: $(TCL_LIB)
-!if ("$(DYNAMIC_TCL)" == "yes")
-	copy $(TCL_LIB) $@
-!else
-	coff2omf $(TCL_LIB) $@
-!endif
-
-!if ("$(DYNAMIC_TCL)" == "yes")
-tclstub$(TCL_VER)-bor.lib:
-	-@IF NOT EXIST $@ ECHO You must download tclstub$(TCL_VER)-bor.lib separately and\
-	place it in the src directory in order to compile a dynamic TCL-enabled\
-	(g)vim with the Borland compiler.  You can get the tclstub$(TCL_VER)-bor.lib file\
-	at http://mywebpage.netscape.com/sharppeople/vim/tclstub$(TCL_VER)-bor.lib
-!endif
-
-# vimrun.exe:
-vimrun.exe: vimrun.c
-!if ("$(USEDLL)"=="yes")
-	$(CC) -WC -O1 -I$(INCLUDE) -L$(LIB) -D_RTLDLL vimrun.c cw32mti.lib
-!else
-	$(CC) -WC -O1 -I$(INCLUDE) -L$(LIB) vimrun.c
-!endif
-
-# The dependency on $(OBJDIR) is to have bcc.cfg generated each time.
-$(OBJDIR)\bcc.cfg: Make_bc5.mak $(OBJDIR)
-  copy /y &&|
-	$(CFLAGS)
-	-L$(LIB)
-	$(DEFINES)
-	$(MBDEFINES)
-	$(INTERP_DEFINES)
-	$(EXETYPE)
-	$(DEBUG_FLAG)
-	$(OPT)
-	$(CODEGUARD_FLAG)
-	$(CPUARG)
-	$(ALIGNARG)
-| $@
-
-# vi:set sts=4 sw=4:
-
--- a/src/dosinst.c
+++ b/src/dosinst.c
@@ -10,7 +10,7 @@
 /*
  * dosinst.c: Install program for Vim on MS-DOS and MS-Windows
  *
- * Compile with Make_mvc.mak, Make_bc3.mak, Make_bc5.mak or Make_djg.mak.
+ * Compile with Make_mvc.mak, Make_cyg.mak or Make_ming.mak.
  */
 
 /*
--- a/src/dosinst.h
+++ b/src/dosinst.h
@@ -47,11 +47,7 @@ char *searchpath(char *name);
 #if defined(UNIX_LINT)
 # define vim_mkdir(x, y) mkdir((char *)(x), y)
 #else
-# ifndef __BORLANDC__
-#  define vim_mkdir(x, y) _mkdir((char *)(x))
-# else
-#  define vim_mkdir(x, y) mkdir((char *)(x))
-# endif
+# define vim_mkdir(x, y) _mkdir((char *)(x))
 #endif
 
 #define sleep(n) Sleep((n) * 1000)
@@ -150,10 +146,6 @@ is_64bit_os(void)
 #endif
 }
 
-#ifdef __BORLANDC__
-/* Borland defines its own searchpath() in dir.h */
-# include <dir.h>
-#else
     static char *
 searchpath(char *name)
 {
@@ -173,7 +165,6 @@ searchpath(char *name)
     }
     return NULL;
 }
-#endif
 
 /*
  * Call searchpath() and save the result in allocated memory, or return NULL.
@@ -463,12 +454,6 @@ mch_chdir(char *path)
 /*
  * Expand the executable name into a full path name.
  */
-#if defined(__BORLANDC__)
-
-/* Only Borland C++ has this. */
-# define my_fullpath(b, n, l) _fullpath(b, n, l)
-
-#else
     static char *
 my_fullpath(char *buf, char *fname, int len)
 {
@@ -478,7 +463,6 @@ my_fullpath(char *buf, char *fname, int 
 
     return (len_read > 0 && len_read < (DWORD)len) ? buf : NULL;
 }
-#endif
 
 /*
  * Remove the tail from a file or directory name.
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -12500,16 +12500,8 @@ f_sinh(typval_T *argvars, typval_T *rett
 }
 #endif
 
-static int
-#ifdef __BORLANDC__
-    _RTLENTRYF
-#endif
-	item_compare(const void *s1, const void *s2);
-static int
-#ifdef __BORLANDC__
-    _RTLENTRYF
-#endif
-	item_compare2(const void *s1, const void *s2);
+static int item_compare(const void *s1, const void *s2);
+static int item_compare2(const void *s1, const void *s2);
 
 /* struct used in the array that's given to qsort() */
 typedef struct
@@ -12540,9 +12532,6 @@ static sortinfo_T	*sortinfo = NULL;
  * Compare functions for f_sort() and f_uniq() below.
  */
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 item_compare(const void *s1, const void *s2)
 {
     sortItem_T  *si1, *si2;
@@ -12627,9 +12616,6 @@ item_compare(const void *s1, const void 
 }
 
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 item_compare2(const void *s1, const void *s2)
 {
     sortItem_T  *si1, *si2;
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -29,11 +29,7 @@ static int read_viminfo_up_to_marks(vir_
 
 static int check_readonly(int *forceit, buf_T *buf);
 static void delbuf_msg(char_u *name);
-static int
-#ifdef __BORLANDC__
-    _RTLENTRYF
-#endif
-	help_compare(const void *s1, const void *s2);
+static int help_compare(const void *s1, const void *s2);
 static void prepare_help_buffer(void);
 
 /*
@@ -314,16 +310,9 @@ typedef struct
     } st_u;
 } sorti_T;
 
-static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
-sort_compare(const void *s1, const void *s2);
+static int sort_compare(const void *s1, const void *s2);
 
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 sort_compare(const void *s1, const void *s2)
 {
     sorti_T	l1 = *(sorti_T *)s1;
@@ -6580,9 +6569,6 @@ help_heuristic(
  * that has been put after the tagname by find_tags().
  */
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 help_compare(const void *s1, const void *s2)
 {
     char    *p1;
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -125,11 +125,7 @@ static int	open_cmdwin(void);
 #endif
 
 #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
-static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
-sort_func_compare(const void *s1, const void *s2);
+static int	sort_func_compare(const void *s1, const void *s2);
 #endif
 
 
@@ -3803,9 +3799,6 @@ ccheck_abbr(int c)
 
 #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 sort_func_compare(const void *s1, const void *s2)
 {
     char_u *p1 = *(char_u **)s1;
@@ -6855,9 +6848,6 @@ concat_history(int type)
 
 #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 sort_hist(const void *s1, const void *s2)
 {
     histentry_T *p1 = *(histentry_T **)s1;
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -1303,9 +1303,6 @@ gui_mch_def_colors(void)
     int
 gui_mch_open(void)
 {
-#ifndef SW_SHOWDEFAULT
-# define SW_SHOWDEFAULT 10	/* Borland 5.0 doesn't have it */
-#endif
     /* Actually open the window, if not already visible
      * (may be done already in gui_mch_set_shellsize) */
     if (!IsWindowVisible(s_hwnd))
@@ -3799,9 +3796,6 @@ gui_mch_browsedir(char_u *title, char_u 
  * Add a lot of missing defines.
  * They are not always missing, we need the #ifndef's.
  */
-# ifndef _cdecl
-#  define _cdecl
-# endif
 # ifndef IsMinimized
 #  define     IsMinimized(hwnd)		IsIconic(hwnd)
 # endif
@@ -5521,7 +5515,7 @@ gui_mch_set_sp_color(guicolor_T color)
  * First static functions (no prototypes generated).
  */
 # ifdef _MSC_VER
-#  include <ime.h>   /* Apparently not needed for Cygwin, MingW or Borland. */
+#  include <ime.h>   /* Apparently not needed for Cygwin or MinGW. */
 # endif
 # include <imm.h>
 
@@ -6272,15 +6266,6 @@ gui_mch_draw_string(
     void
 gui_mch_flush(void)
 {
-#   if defined(__BORLANDC__)
-    /*
-     * The GdiFlush declaration (in Borland C 5.01 <wingdi.h>) is not a
-     * prototype declaration.
-     * The compiler complains if __stdcall is not used in both declarations.
-     */
-    BOOL  __stdcall GdiFlush(void);
-#   endif
-
 #if defined(FEAT_DIRECTX)
     if (IS_ENABLE_DIRECTX())
 	DWriteContext_Flush(s_dwc);
--- a/src/if_ole.cpp
+++ b/src/if_ole.cpp
@@ -12,24 +12,14 @@
  *
  * See os_mswin.c for the client side.
  */
-
-/*
- * We have some trouble with order of includes here.  For Borland it needs to
- * be different from MSVC...
- */
-#ifndef __BORLANDC__
 extern "C" {
 # include "vim.h"
 }
-#endif
 
 #include <windows.h>
 #include <oleauto.h>
 
 extern "C" {
-#ifdef __BORLANDC__
-# include "vim.h"
-#endif
 extern HWND s_hwnd;
 extern HWND vim_parent_hwnd;
 }
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -13,11 +13,6 @@
  * Common code for if_python.c and if_python3.c.
  */
 
-#ifdef __BORLANDC__
-/* Disable Warning W8060: Possibly incorrect assignment in function ... */
-# pragma warn -8060
-#endif
-
 static char_u e_py_systemexit[]	= "E880: Can't handle SystemExit of %s exception in vim";
 
 #if PY_VERSION_HEX < 0x02050000
--- a/src/main.c
+++ b/src/main.c
@@ -98,9 +98,6 @@ static int has_dash_c_arg = FALSE;
 # endif
     int
 # ifdef MSWIN
-#  ifdef __BORLANDC__
-_cdecl
-#  endif
 VimMain
 # else
 main
--- a/src/mark.c
+++ b/src/mark.c
@@ -1950,9 +1950,6 @@ write_viminfo_marks(FILE *fp_out, garray
  * Compare functions for qsort() below, that compares b_last_used.
  */
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 buf_compare(const void *s1, const void *s2)
 {
     buf_T *buf1 = *(buf_T **)s1;
--- a/src/message.c
+++ b/src/message.c
@@ -357,9 +357,6 @@ trunc_string(
 int vim_snprintf(char *str, size_t str_m, const char *fmt, ...);
 
     int
-# ifdef __BORLANDC__
-_RTLENTRYF
-# endif
 smsg(const char *s, ...)
 {
     va_list arglist;
@@ -371,9 +368,6 @@ smsg(const char *s, ...)
 }
 
     int
-# ifdef __BORLANDC__
-_RTLENTRYF
-# endif
 smsg_attr(int attr, const char *s, ...)
 {
     va_list arglist;
@@ -385,9 +379,6 @@ smsg_attr(int attr, const char *s, ...)
 }
 
     int
-# ifdef __BORLANDC__
-_RTLENTRYF
-# endif
 smsg_attr_keep(int attr, const char *s, ...)
 {
     va_list arglist;
@@ -3091,7 +3082,7 @@ mch_msg(char *str)
 	    (isatty(2) && strcmp("/dev/console", ttyname(2)) != 0)
 #  else
 	    isatty(2)
-#   endif
+#  endif
 #  ifdef FEAT_GUI
 	    ||
 #  endif
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -5626,18 +5626,11 @@ static int expand_backtick(garray_T *gap
  * File name expansion code for MS-DOS, Win16 and Win32.  It's here because
  * it's shared between these systems.
  */
-# if defined(PROTO)
-#  define _cdecl
-# else
-#  ifdef __BORLANDC__
-#   define _cdecl _RTLENTRYF
-#  endif
-# endif
 
 /*
  * comparison function for qsort in dos_expandpath()
  */
-    static int _cdecl
+    static int
 pstrcmp(const void *a, const void *b)
 {
     return (pathcmp(*(char **)a, *(char **)b, -1));
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -3912,16 +3912,9 @@ qsort(
 /*
  * Sort an array of strings.
  */
-static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
-sort_compare(const void *s1, const void *s2);
+static int sort_compare(const void *s1, const void *s2);
 
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 sort_compare(const void *s1, const void *s2)
 {
     return STRCMP(*(char **)s1, *(char **)s2);
--- a/src/normal.c
+++ b/src/normal.c
@@ -27,11 +27,7 @@ static int	restart_VIsual_select = 0;
 #ifdef FEAT_EVAL
 static void	set_vcount_ca(cmdarg_T *cap, int *set_prevcount);
 #endif
-static int
-#ifdef __BORLANDC__
-    _RTLENTRYF
-#endif
-		nv_compare(const void *s1, const void *s2);
+static int	nv_compare(const void *s1, const void *s2);
 static void	op_colon(oparg_T *oap);
 static void	op_function(oparg_T *oap);
 #if defined(FEAT_MOUSE)
@@ -422,9 +418,6 @@ static int nv_max_linear;
  * through the index in nv_cmd_idx[].
  */
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 nv_compare(const void *s1, const void *s2)
 {
     int		c1, c2;
--- a/src/option.c
+++ b/src/option.c
@@ -12561,11 +12561,6 @@ compatible_set(void)
 
 #ifdef FEAT_LINEBREAK
 
-# if defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
-   /* Borland C++ screws up loop optimisation here (negri) */
-  #pragma option -O-l
-# endif
-
 /*
  * fill_breakat_flags() -- called when 'breakat' changes value.
  */
@@ -12582,11 +12577,6 @@ fill_breakat_flags(void)
 	for (p = p_breakat; *p; p++)
 	    breakat_flags[*p] = TRUE;
 }
-
-# if defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
-  #pragma option -O.l
-# endif
-
 #endif
 
 /*
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -172,26 +172,6 @@ int _chdrive(int drive)
     return !SetCurrentDirectory(temp);
 }
 # endif
-#else
-# ifdef __BORLANDC__
-/* being a more ANSI compliant compiler, BorlandC doesn't define _stricoll:
- * but it does in BC 5.02! */
-#  if __BORLANDC__ < 0x502
-int _stricoll(char *a, char *b)
-{
-#   if 1
-    // this is fast but not correct:
-    return stricmp(a, b);
-#   else
-    // the ANSI-ish correct way is to use strxfrm():
-    char a_buff[512], b_buff[512];  // file names, so this is enough on Win32
-    strxfrm(a_buff, a, 512);
-    strxfrm(b_buff, b, 512);
-    return strcoll(a_buff, b_buff);
-#   endif
-}
-#  endif
-# endif
 #endif
 
 
@@ -374,30 +354,22 @@ mch_FullName(
     int		force UNUSED)
 {
     int		nResult = FAIL;
-
-#ifdef __BORLANDC__
-    if (*fname == NUL) /* Borland behaves badly here - make it consistent */
-	nResult = mch_dirname(buf, len);
-    else
-#endif
+    WCHAR	*wname;
+    WCHAR	wbuf[MAX_PATH];
+    char_u	*cname = NULL;
+
+    wname = enc_to_utf16(fname, NULL);
+    if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH) != NULL)
     {
-	WCHAR	*wname;
-	WCHAR	wbuf[MAX_PATH];
-	char_u	*cname = NULL;
-
-	wname = enc_to_utf16(fname, NULL);
-	if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH) != NULL)
+	cname = utf16_to_enc((short_u *)wbuf, NULL);
+	if (cname != NULL)
 	{
-	    cname = utf16_to_enc((short_u *)wbuf, NULL);
-	    if (cname != NULL)
-	    {
-		vim_strncpy(buf, cname, len - 1);
-		nResult = OK;
-	    }
+	    vim_strncpy(buf, cname, len - 1);
+	    nResult = OK;
 	}
-	vim_free(wname);
-	vim_free(cname);
     }
+    vim_free(wname);
+    vim_free(cname);
 
 #ifdef USE_FNAME_CASE
     fname_case(buf, len);
@@ -2044,9 +2016,6 @@ serverSendEnc(HWND target)
  * Clean up on exit. This destroys the hidden message window.
  */
     static void
-#ifdef __BORLANDC__
-    _RTLENTRYF
-#endif
 CleanUpMessaging(void)
 {
     if (message_window != 0)
--- a/src/os_w32exe.c
+++ b/src/os_w32exe.c
@@ -15,19 +15,13 @@
  */
 #include "vim.h"
 
-#ifdef __MINGW32__
-# ifndef _cdecl
-#  define _cdecl
-# endif
-#endif
-
 // cproto doesn't create a prototype for VimMain()
 #ifdef VIMDLL
 __declspec(dllimport)
 #endif
-int _cdecl VimMain(int argc, char **argv);
+int VimMain(int argc, char **argv);
 #ifndef VIMDLL
-void _cdecl SaveInst(HINSTANCE hInst);
+void SaveInst(HINSTANCE hInst);
 #endif
 
 #ifndef PROTO
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -146,11 +146,6 @@ typedef int LPSECURITY_ATTRIBUTES;
 # define __stdcall /* empty */
 #endif
 
-#if defined(__BORLANDC__)
-/* Strangely Borland uses a non-standard name. */
-# define wcsicmp(a, b) wcscmpi((a), (b))
-#endif
-
 #if !defined(FEAT_GUI_MSWIN) || defined(VIMDLL)
 /* Win32 Console handles for input and output */
 static HANDLE g_hConIn  = INVALID_HANDLE_VALUE;
@@ -941,9 +936,6 @@ static const struct
 
 /* The return code indicates key code size. */
     static int
-#ifdef __BORLANDC__
-    __stdcall
-#endif
 win32_kbd_patch_key(
     KEY_EVENT_RECORD *pker)
 {
@@ -6695,8 +6687,6 @@ getout:
     int
 mch_open(const char *name, int flags, int mode)
 {
-    /* _wopen() does not work with Borland C 5.5: creates a read-only file. */
-#ifndef __BORLANDC__
     WCHAR	*wn;
     int		f;
 
@@ -6707,16 +6697,6 @@ mch_open(const char *name, int flags, in
     f = _wopen(wn, flags, mode);
     vim_free(wn);
     return f;
-#else
-    /* open() can open a file which name is longer than _MAX_PATH bytes
-     * and shorter than _MAX_PATH characters successfully, but sometimes it
-     * causes unexpected error in another part. We make it an error explicitly
-     * here. */
-    if (strlen(name) >= _MAX_PATH)
-	return -1;
-
-    return open(name, flags, mode);
-#endif
 }
 
 /*
--- a/src/os_win32.h
+++ b/src/os_win32.h
@@ -53,12 +53,10 @@
 
 #define FEAT_SHORTCUT		/* resolve shortcuts */
 
-#if (!defined(__BORLANDC__) || __BORLANDC__ >= 0x550) \
-	&& (!defined(_MSC_VER) || _MSC_VER > 1020)
+#if (!defined(_MSC_VER) || _MSC_VER > 1020)
 /*
  * Access Control List (actually security info).
- * Borland has the acl stuff only in version 5.5 and later.
- * MSVC in 5.0, not in 4.2, don't know about 4.3.
+ * MSVC has acl stuff only in 5.0, not in 4.2, don't know about 4.3.
  */
 # define HAVE_ACL
 #endif
@@ -142,8 +140,8 @@
 # define IO_REPARSE_TAG_SYMLINK		0xA000000C
 #endif
 
-#if defined(_MSC_VER) || defined(__BORLANDC__)
-    /* Support for __try / __except.  All versions of MSVC and Borland C are
+#if defined(_MSC_VER)
+    /* Support for __try / __except.  All versions of MSVC are
      * expected to have this.  Any other compilers that support it? */
 # define HAVE_TRY_EXCEPT 1
 # include <malloc.h>		/* for _resetstkoflw() */
@@ -206,11 +204,7 @@ Trace(char *pszFormat, ...);
 # define HAVE_SETENV
 #endif
 #define mch_getenv(x) (char_u *)getenv((char *)(x))
-#ifdef __BORLANDC__
-# define vim_mkdir(x, y) mkdir(x)
-#else
-# define vim_mkdir(x, y) mch_mkdir(x)
-#endif
+#define vim_mkdir(x, y) mch_mkdir(x)
 
 /* Enable common dialogs input unicode from IME if possible. */
 #define pDispatchMessage DispatchMessageW
--- a/src/proto.h
+++ b/src/proto.h
@@ -42,8 +42,7 @@
 #  include "os_win32.pro"
 #  include "os_mswin.pro"
 #  include "winclip.pro"
-#  if (defined(__GNUC__) && !defined(__MINGW32__)) \
-	|| (defined(__BORLANDC__) && __BORLANDC__ < 0x502)
+#  if (defined(__GNUC__) && !defined(__MINGW32__))
 extern int _stricoll(char *a, char *b);
 #  endif
 # endif
@@ -108,73 +107,45 @@ extern int _stricoll(char *a, char *b);
 # endif
 
 /* These prototypes cannot be produced automatically. */
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-smsg(const char *, ...)
+int smsg(const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 1, 0)))
 #endif
     ;
 
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-smsg_attr(int, const char *, ...)
+int smsg_attr(int, const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 2, 3)))
 #endif
     ;
 
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-smsg_attr_keep(int, const char *, ...)
+int smsg_attr_keep(int, const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 2, 3)))
 #endif
     ;
 
 /* These prototypes cannot be produced automatically. */
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-semsg(const char *, ...)
+int semsg(const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 1, 0)))
 #endif
     ;
 
 /* These prototypes cannot be produced automatically. */
-void
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-siemsg(const char *, ...)
+void siemsg(const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 1, 0)))
 #endif
     ;
 
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-vim_snprintf_add(char *, size_t, const char *, ...)
+int vim_snprintf_add(char *, size_t, const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 3, 4)))
 #endif
     ;
 
-int
-#  ifdef __BORLANDC__
-_RTLENTRYF
-#  endif
-vim_snprintf(char *, size_t, const char *, ...)
+int vim_snprintf(char *, size_t, const char *, ...)
 #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
     __attribute__((format(printf, 3, 4)))
 #endif
@@ -209,7 +180,7 @@ void qsort(void *base, size_t elm_count,
 # endif
 # include "search.pro"
 # ifdef FEAT_SIGNS
-# include "sign.pro"
+#  include "sign.pro"
 # endif
 # include "spell.pro"
 # include "spellfile.pro"
@@ -337,13 +308,7 @@ extern char *vim_SelFile(Widget toplevel
  */
 #if defined(FEAT_PERL) && !defined(IN_PERL_FILE)
 # define CV void
-# ifdef __BORLANDC__
-  #pragma option -pc
-# endif
 # include "if_perl.pro"
-# ifdef __BORLANDC__
-  #pragma option -p.
-# endif
 # include "if_perlsfio.pro"
 #endif
 
@@ -357,8 +322,4 @@ int clip_mch_own_selection(VimClipboard 
 void clip_mch_request_selection(VimClipboard *cbd);
 void clip_mch_set_selection(VimClipboard *cbd);
 #endif
-
-#ifdef __BORLANDC__
-# define _PROTO_H
-#endif
 #endif /* !PROTO && !NOPROTO */
--- a/src/screen.c
+++ b/src/screen.c
@@ -2945,9 +2945,6 @@ static textprop_T	*current_text_props = 
 static buf_T		*current_buf = NULL;
 
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 text_prop_compare(const void *s1, const void *s2)
 {
     int  idx1, idx2;
--- a/src/spell.c
+++ b/src/spell.c
@@ -6760,20 +6760,13 @@ rescore_one(suginfo_T *su, suggest_T *st
     }
 }
 
-static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
-sug_compare(const void *s1, const void *s2);
+static int sug_compare(const void *s1, const void *s2);
 
 /*
  * Function given to qsort() to sort the suggestions on st_score.
  * First on "st_score", then "st_altscore" then alphabetically.
  */
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 sug_compare(const void *s1, const void *s2)
 {
     suggest_T	*p1 = (suggest_T *)s1;
--- a/src/spellfile.c
+++ b/src/spellfile.c
@@ -4802,19 +4802,12 @@ node_equal(wordnode_T *n1, wordnode_T *n
     return p1 == NULL && p2 == NULL;
 }
 
-static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
-rep_compare(const void *s1, const void *s2);
+static int rep_compare(const void *s1, const void *s2);
 
 /*
  * Function given to qsort() to sort the REP items on "from" string.
  */
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 rep_compare(const void *s1, const void *s2)
 {
     fromto_T	*p1 = (fromto_T *)s1;
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -5348,9 +5348,6 @@ syn_cmd_region(
  * A simple syntax group ID comparison function suitable for use in qsort()
  */
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 syn_compare_stub(const void *v1, const void *v2)
 {
     const short	*s1 = v1;
@@ -6703,9 +6700,6 @@ typedef struct
 } time_entry_T;
 
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 syn_compare_syntime(const void *v1, const void *v2)
 {
     const time_entry_T	*s1 = v1;
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -55,16 +55,8 @@ static char *e_nofunc = N_("E130: Unknow
 static void func_do_profile(ufunc_T *fp);
 static void prof_sort_list(FILE *fd, ufunc_T **sorttab, int st_len, char *title, int prefer_self);
 static void prof_func_line(FILE *fd, int count, proftime_T *total, proftime_T *self, int prefer_self);
-static int
-# ifdef __BORLANDC__
-    _RTLENTRYF
-# endif
-	prof_total_cmp(const void *s1, const void *s2);
-static int
-# ifdef __BORLANDC__
-    _RTLENTRYF
-# endif
-	prof_self_cmp(const void *s1, const void *s2);
+static int prof_total_cmp(const void *s1, const void *s2);
+static int prof_self_cmp(const void *s1, const void *s2);
 #endif
 static void funccal_unref(funccall_T *fc, ufunc_T *fp, int force);
 
@@ -2794,9 +2786,6 @@ prof_func_line(
  * Compare function for total time sorting.
  */
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 prof_total_cmp(const void *s1, const void *s2)
 {
     ufunc_T	*p1, *p2;
@@ -2810,9 +2799,6 @@ prof_total_cmp(const void *s1, const voi
  * Compare function for self time sorting.
  */
     static int
-#ifdef __BORLANDC__
-_RTLENTRYF
-#endif
 prof_self_cmp(const void *s1, const void *s2)
 {
     ufunc_T	*p1, *p2;
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1306,
+/**/
     1305,
 /**/
     1304,
--- a/src/vim.h
+++ b/src/vim.h
@@ -17,24 +17,6 @@
 # define MSWIN
 #endif
 
-// use fastcall for Borland, when compiling for MS-Windows
-#if defined(__BORLANDC__) && defined(MSWIN) && !defined(DEBUG)
-#if defined(FEAT_PERL) || \
-    defined(FEAT_PYTHON) || \
-    defined(FEAT_PYTHON3) || \
-    defined(FEAT_RUBY) || \
-    defined(FEAT_TCL) || \
-    defined(FEAT_MZSCHEME) || \
-    defined(DYNAMIC_GETTEXT) || \
-    defined(DYNAMIC_ICONV) || \
-    defined(DYNAMIC_IME) || \
-    defined(XPM)
-  #pragma option -pc
-# else
-  #pragma option -pr
-# endif
-#endif
-
 #ifdef MSWIN
 # include "vimio.h"
 #endif
@@ -2163,11 +2145,6 @@ typedef enum {
 # define BROWSE_DIR 2	    /* flag for do_browse() */
 #endif
 
-/* stop using fastcall for Borland */
-#if defined(__BORLANDC__) && defined(MSWIN) && !defined(DEBUG)
- #pragma option -p.
-#endif
-
 #ifdef _MSC_VER
 /* Avoid useless warning "conversion from X to Y of greater size". */
  #pragma warning(disable : 4312)
@@ -2344,9 +2321,6 @@ typedef enum {
 # undef FF
 # undef OP_DELETE
 # undef OP_JOIN
-# ifdef __BORLANDC__
-#  define NOPROTO 1
-# endif
   /* remove MAX and MIN, included by glib.h, redefined by sys/param.h */
 # ifdef MAX
 #  undef MAX
@@ -2374,10 +2348,6 @@ typedef enum {
 #  undef bool
 # endif
 
-# ifdef __BORLANDC__
-  /* Borland has the structure stati64 but not _stati64 */
-#  define _stati64 stati64
-# endif
 #endif
 
 /* values for vim_handle_signal() that are not a signal */
--- a/src/vim.rc
+++ b/src/vim.rc
@@ -12,11 +12,7 @@
 #include <winver.h>
 #include "version.h"
 #include "gui_w32_rc.h"
-// #if defined(__BORLANDC__) || defined(__CYGWIN32__) || defined(__MINGW32__)
-# include <winresrc.h>
-// #else
-// # include <winres.h>
-// #endif
+#include <winresrc.h>
 
 //
 // Icons
--- a/src/vimrun.c
+++ b/src/vimrun.c
@@ -23,11 +23,6 @@
 #endif
 #include <windows.h>
 
-#ifdef __BORLANDC__
-# define _kbhit kbhit
-# define _getch getch
-#endif
-
     int
 main(void)
 {
deleted file mode 100644
--- a/src/xxd/Make_bc5.mak
+++ /dev/null
@@ -1,18 +0,0 @@
-# The most simplistic Makefile for Win32 (NT and Windows 95).
-# Used for Borland C++.
-
-!if ("$(BOR)"=="")
-BOR = c:\bc5
-!endif
-!if ("$(BCC)"=="")
-BCC = bcc32
-!endif
-
-xxd: xxd.exe
-
-xxd.exe: xxd.c
-	$(BCC) -I$(BOR)\include -L$(BOR)\lib -DWIN32 xxd.c $(BOR)\lib\wildargs.obj
-
-clean:
-	- del xxd.obj
-	- del xxd.exe
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -81,7 +81,7 @@
 #else
 # include <fcntl.h>
 #endif
-#if defined(WIN32) || defined(__BORLANDC__) || defined(CYGWIN)
+#if defined(WIN32) || defined(CYGWIN)
 # include <io.h>	/* for setmode() */
 #else
 # ifdef UNIX
@@ -96,12 +96,6 @@
 # include <unix.h>	/* for fdopen() on MAC */
 #endif
 
-#if defined(__BORLANDC__) && __BORLANDC__ <= 0x0410 && !defined(fileno)
-/* Missing define and prototype grabbed from the BC 4.0 <stdio.h> */
-# define fileno(f)       ((f)->fd)
-FILE   _FAR *_Cdecl _FARFUNC fdopen(int __handle, char _FAR *__type);
-#endif
-
 
 /*  This corrects the problem of missing prototypes for certain functions
  *  in some GNU installations (e.g. SunOS 4.1.x).
@@ -190,7 +184,7 @@ char osver[] = "";
 #endif
 
 #ifndef __P
-# if defined(__STDC__) || defined(WIN32) || defined(__BORLANDC__)
+# if defined(__STDC__) || defined(WIN32)
 #  define __P(a) a
 # else
 #  define __P(a) ()