diff --git a/src/bcc32.mak b/src/bcc32.mak
new file mode 100644
index 0000000000000000000000000000000000000000..87df2c03fae42ad66fc02f6eab9b919a3a9d4995
--- /dev/null
+++ b/src/bcc32.mak
@@ -0,0 +1,51 @@
+# $Header: /cvsroot/pgsql/src/bcc32.mak,v 1.1 2002/12/30 21:07:21 momjian Exp $
+
+# Makefile for Borland C++ 5.5 (or compat)
+# Top-file makefile for Win32 parts of postgresql.
+# Note that most parts are not ported to Win32!
+
+!IF "$(CFG)" != "Release" && "$(CFG)" != "Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running MAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE make  -DCFG=[Release | Debug] /f bcc32.mak
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Release" (Win32 Release )
+!MESSAGE "Debug" (Win32 Debug)
+!MESSAGE
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+ALL: 
+   cd include
+   if not exist pg_config.h copy pg_config.h.win32 pg_config.h
+   cd ..
+   cd interfaces\libpq
+   make -DCFG=$(CFG) /f bcc32.mak 
+   cd ..\..\bin\psql
+   make -DCFG=$(CFG) /f bcc32.mak
+   cd ..\..
+   echo All Win32 parts have been built!
+
+CLEAN:
+   cd interfaces\libpq
+   make -DCFG=Release /f bcc32.mak CLEAN
+   make -DCFG=Debug /f bcc32.mak CLEAN
+   cd ..\..\bin\psql
+   make -DCFG=Release /f bcc32.mak CLEAN
+   make -DCFG=Debug /f bcc32.mak CLEAN
+   cd ..\..
+   echo All Win32 parts have been cleaned!
+
+DISTCLEAN: CLEAN
+   cd include
+   del config.h
+   cd ..
diff --git a/src/bin/psql/bcc32.mak b/src/bin/psql/bcc32.mak
new file mode 100644
index 0000000000000000000000000000000000000000..1eeb59177def675e45b130da7cb14983c1941cea
--- /dev/null
+++ b/src/bin/psql/bcc32.mak
@@ -0,0 +1,136 @@
+# Makefile for Borland C++ 5.5
+# Borland C++ base install directory goes here
+BCB=d:\Borland\Bcc55
+
+!MESSAGE Building PSQL.EXE ...
+!MESSAGE
+!IF "$(CFG)" == ""
+CFG=Release
+!MESSAGE No configuration specified. Defaulting to Release with STATIC libraries.
+!MESSAGE To use dynamic link libraries add -DDLL_LIBS to make command line.
+!MESSAGE
+!ELSE
+!MESSAGE Configuration "$(CFG)"
+!MESSAGE
+!ENDIF
+
+!IF "$(CFG)" != "Release" && "$(CFG)" != "Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running MAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE make  -DCFG=[Release | Debug] /f bcc32.mak
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Release" (Win32 Release EXE)
+!MESSAGE "Debug" (Win32 Debug EXE)
+!MESSAGE
+!ERROR An invalid configuration was specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+CPP=bcc32.exe
+
+!IF "$(CFG)" == "Debug"
+DEBUG=1
+OUTDIR=.\Debug
+INTDIR=.\Debug
+!else
+OUTDIR=.\Release
+INTDIR=.\Release
+!endif
+
+.path.obj = $(INTDIR)
+
+.c.obj:
+	$(CPP) -o"$(INTDIR)\$&" $(CPP_PROJ) $<
+
+ALL : "$(OUTDIR)\psql.exe"
+
+CLEAN :
+	-@erase "$(INTDIR)\command.obj"
+	-@erase "$(INTDIR)\common.obj"
+	-@erase "$(INTDIR)\help.obj"
+	-@erase "$(INTDIR)\input.obj"
+	-@erase "$(INTDIR)\stringutils.obj"
+	-@erase "$(INTDIR)\mainloop.obj"
+	-@erase "$(INTDIR)\copy.obj"
+	-@erase "$(INTDIR)\startup.obj"
+	-@erase "$(INTDIR)\prompt.obj"
+	-@erase "$(INTDIR)\sprompt.obj"
+	-@erase "$(INTDIR)\variables.obj"
+	-@erase "$(INTDIR)\large_obj.obj"
+	-@erase "$(INTDIR)\print.obj"
+	-@erase "$(INTDIR)\describe.obj"
+	-@erase "$(INTDIR)\tab-complete.obj"
+	-@erase "$(INTDIR)\getopt.obj"
+	-@erase "$(INTDIR)\mbprint.obj"
+	-@erase "$(INTDIR)\psql.ilc"
+	-@erase "$(INTDIR)\psql.ild"
+	-@erase "$(INTDIR)\psql.tds"
+	-@erase "$(INTDIR)\psql.ils"
+	-@erase "$(INTDIR)\psql.ilf"
+	-@erase "$(OUTDIR)\psql.exe"
+
+"$(OUTDIR)" :
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+USERDEFINES = WIN32;_CONSOLE;_MBCS;HAVE_STRDUP
+
+# ---------------------------------------------------------------------------
+CPP_PROJ = -I$(BCB)\include;..\..\include;..\..\interfaces\libpq -c -D$(USERDEFINES) -tWM -tWC \
+		-q -5 -a8 -pc -X -w-use -w-par -w-pia -w-csu -w-aus -w-ccc
+
+!IFDEF DEBUG
+CPP_PROJ  	= $(CPP_PROJ) -Od -r- -k -v -y -vi- -D_DEBUG
+LIBPG_DIR 	= Debug
+!ELSE
+CPP_PROJ	= $(CPP_PROJ) -O -Oi -OS -DNDEBUG
+LIBPG_DIR 	= Release
+!ENDIF
+
+!IFDEF DLL_LIBS
+CPP_PROJ	= $(CPP_PROJ) -D_RTLDLL
+LIBRARIES	= cw32mti.lib ..\..\interfaces\libpq\$(LIBPG_DIR)\blibpqdll.lib
+!ELSE
+CPP_PROJ	= $(CPP_PROJ) -DBCC32_STATIC
+LIBRARIES	= cw32mt.lib ..\..\interfaces\libpq\$(LIBPG_DIR)\blibpq.lib
+!ENDIF
+
+LINK32=ilink32.exe
+LINK32_FLAGS=-L$(BCB)\lib;.\$(LIBPG_DIR) -x -v 
+LINK32_OBJS= \
+	command.obj \
+	common.obj \
+	help.obj \
+	input.obj \
+	stringutils.obj \
+	mainloop.obj \
+	copy.obj \
+	startup.obj \
+	prompt.obj \
+	sprompt.obj \
+	variables.obj \
+	large_obj.obj \
+	print.obj \
+	describe.obj \
+	tab-complete.obj \
+	getopt.obj \
+	mbprint.obj
+	
+
+"$(OUTDIR)\psql.exe" : "$(OUTDIR)" $(LINK32_OBJS)
+	$(LINK32) @&&!
+	$(LINK32_FLAGS) +
+	c0x32.obj $(LINK32_OBJS), +
+	$@,, +
+	import32.lib $(LIBRARIES),,
+!
+
+getopt.obj : "$(OUTDIR)" ..\..\port\getopt.c
diff --git a/src/interfaces/libpq/bcc32.mak b/src/interfaces/libpq/bcc32.mak
new file mode 100644
index 0000000000000000000000000000000000000000..985143ac875c2c8e96d4a693fb79a325ed421a5e
--- /dev/null
+++ b/src/interfaces/libpq/bcc32.mak
@@ -0,0 +1,141 @@
+# Makefile for Borland C++ 5.5
+
+# Will build a Win32 static library libpq.lib
+#        and a Win32 dynamic library libpq.dll with import library libpqdll.lib
+
+# Borland C++ base install directory goes here
+BCB=d:\Borland\Bcc55
+
+!MESSAGE Building the Win32 DLL and Static Library...
+!MESSAGE
+!IF "$(CFG)" == ""
+CFG=Release
+!MESSAGE No configuration specified. Defaulting to Release.
+!MESSAGE
+!ELSE
+!MESSAGE Configuration "$(CFG)"
+!MESSAGE
+!ENDIF
+
+!IF "$(CFG)" != "Release" && "$(CFG)" != "Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running MAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE make  -DCFG=[Release | Debug] /f bcc32.mak
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Release" (Win32 Release DLL and Static Library)
+!MESSAGE "Debug" (Win32 Debug DLL and Static Library)
+!MESSAGE
+!ERROR An invalid configuration was specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE 
+NULL=nul
+!ENDIF 
+
+!IF "$(CFG)" == "Debug"
+DEBUG=1
+OUTDIR=.\Debug
+INTDIR=.\Debug
+!else
+OUTDIR=.\Release
+INTDIR=.\Release
+!endif
+
+USERDEFINES=FRONTEND;NDEBUG;WIN32;_WINDOWS;HAVE_VSNPRINTF;HAVE_STRDUP;
+
+CPP=bcc32.exe
+CPP_PROJ = -I$(BCB)\include;..\..\include -WD -c -D$(USERDEFINES) -tWM \
+		-a8 -X -w-use -w-par -w-pia -w-csu -w-aus -w-ccc
+
+!IFDEF DEBUG
+CPP_PROJ	= $(CPP_PROJ) -Od -r- -k -v -y -vi- -D_DEBUG
+!else
+CPP_PROJ	= $(CPP_PROJ) -O -Oi -OS -DNDEBUG
+!endif
+
+LIB32=tlib.exe
+LIB32_FLAGS= 
+LIB32_OBJS= \
+	"$(OUTDIR)\win32.obj" \
+	"$(INTDIR)\dllist.obj" \
+	"$(INTDIR)\md5.obj" \
+	"$(INTDIR)\fe-auth.obj" \
+	"$(INTDIR)\fe-connect.obj" \
+	"$(INTDIR)\fe-exec.obj" \
+	"$(INTDIR)\fe-lobj.obj" \
+	"$(INTDIR)\fe-misc.obj" \
+	"$(INTDIR)\fe-print.obj" \
+	"$(INTDIR)\fe-secure.obj" \
+	"$(INTDIR)\pqexpbuffer.obj" \
+	"$(INTDIR)\wchar.obj" \
+	"$(INTDIR)\encnames.obj"
+
+RSC=brcc32.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq.res"
+
+LINK32=ilink32.exe
+LINK32_FLAGS = -Gn -L$(BCB)\lib;$(INTDIR); -x -Tpd -v
+LINK32_OBJS= "$(INTDIR)\libpqdll.obj"
+	
+# ---------------------------------------------------------------------------
+
+.path.obj = $(INTDIR)
+.path.c = .;..\..\backend\libpq;..\..\backend\lib;..\..\backend\utils\mb
+
+# ---------------------------------------------------------------------------
+
+ALL: "$(OUTDIR)" "$(OUTDIR)\blibpq.dll" "$(OUTDIR)\blibpq.lib"
+
+CLEAN :
+	-@erase "$(INTDIR)\dllist.obj"
+	-@erase "$(INTDIR)\md5.obj"
+	-@erase "$(INTDIR)\fe-auth.obj"
+	-@erase "$(INTDIR)\fe-connect.obj"
+	-@erase "$(INTDIR)\fe-exec.obj"
+	-@erase "$(INTDIR)\fe-lobj.obj"
+	-@erase "$(INTDIR)\fe-misc.obj"
+	-@erase "$(INTDIR)\fe-print.obj"
+	-@erase "$(INTDIR)\fe-secure.obj"
+	-@erase "$(INTDIR)\pqexpbuffer.obj"
+	-@erase "$(OUTDIR)\libpqdll.obj"
+	-@erase "$(OUTDIR)\win32.obj"
+	-@erase "$(INTDIR)\wchar.obj"
+	-@erase "$(INTDIR)\encnames.obj"
+	-@erase "$(OUTDIR)\libpq.res"
+	-@erase "$(OUTDIR)\blibpq.lib"
+	-@erase "$(OUTDIR)\blibpqdll.lib"
+	-@erase "$(OUTDIR)\blibpq.dll"
+	-@erase "$(OUTDIR)\blibpq.tds"
+
+
+"$(OUTDIR)" :
+	@if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(OUTDIR)\blibpq.dll": "$(OUTDIR)\blibpq.lib" $(LINK32_OBJS) "$(INTDIR)\libpq.res" blibpqdll.def 
+	$(LINK32) @&&!
+	$(LINK32_FLAGS) +
+	c0d32.obj $(LINK32_OBJS), +
+	$@,, +
+	"$(OUTDIR)\blibpq.lib" import32.lib cw32mti.lib, +
+	blibpqdll.def,"$(INTDIR)\libpq.res"
+!
+	implib -a "$(OUTDIR)\blibpqdll.lib" blibpqdll.def $@
+
+"$(INTDIR)\libpq.res" : "$(INTDIR)" libpq.rc
+    $(RSC) $(RSC_PROJ) libpq.rc
+
+"$(OUTDIR)\blibpq.lib": $(LIB32_OBJS)
+	$(LIB32) $@ @&&!
++-"$(**: =" &^
++-")"
+!
+
+.c.obj:
+	$(CPP) -o"$(INTDIR)\$&" $(CPP_PROJ) $<
+
diff --git a/src/interfaces/libpq/blibpqdll.def b/src/interfaces/libpq/blibpqdll.def
new file mode 100644
index 0000000000000000000000000000000000000000..fa2eb7c571a8cfc034a2995775366dd65edb0b4a
--- /dev/null
+++ b/src/interfaces/libpq/blibpqdll.def
@@ -0,0 +1,95 @@
+LIBRARY BLIBPQ
+EXPORTS
+	_PQconnectdb            @ 1
+	_PQsetdbLogin           @ 2
+	_PQconndefaults         @ 3
+	_PQfinish               @ 4
+	_PQreset                @ 5
+	_PQrequestCancel        @ 6
+	_PQdb                   @ 7
+	_PQuser                 @ 8
+	_PQpass                 @ 9
+	_PQhost                 @ 10
+	_PQport                 @ 11
+	_PQtty                  @ 12
+	_PQoptions              @ 13
+	_PQstatus               @ 14
+	_PQerrorMessage         @ 15
+	_PQsocket               @ 16
+	_PQbackendPID           @ 17
+	_PQtrace                @ 18
+	_PQuntrace              @ 19
+	_PQsetNoticeProcessor   @ 20
+	_PQexec                 @ 21
+	_PQnotifies             @ 22
+	_PQsendQuery            @ 23
+	_PQgetResult            @ 24
+	_PQisBusy               @ 25
+	_PQconsumeInput         @ 26
+	_PQgetline              @ 27
+	_PQputline              @ 28
+	_PQgetlineAsync         @ 29
+	_PQputnbytes            @ 30
+	_PQendcopy              @ 31
+	_PQfn                   @ 32
+	_PQresultStatus         @ 33
+	_PQntuples              @ 34
+	_PQnfields              @ 35
+	_PQbinaryTuples         @ 36
+	_PQfname                @ 37
+	_PQfnumber              @ 38
+	_PQftype                @ 39
+	_PQfsize                @ 40
+	_PQfmod                 @ 41
+	_PQcmdStatus            @ 42
+	_PQoidStatus            @ 43
+	_PQcmdTuples            @ 44
+	_PQgetvalue             @ 45
+	_PQgetlength            @ 46
+	_PQgetisnull            @ 47
+	_PQclear                @ 48
+	_PQmakeEmptyPGresult    @ 49
+	_PQprint                @ 50
+	_PQdisplayTuples        @ 51
+	_PQprintTuples          @ 52
+	_lo_open                @ 53
+	_lo_close               @ 54
+	_lo_read                @ 55
+	_lo_write               @ 56
+	_lo_lseek               @ 57
+	_lo_creat               @ 58
+	_lo_tell                @ 59
+	_lo_unlink              @ 60
+	_lo_import              @ 61
+	_lo_export              @ 62
+	_pgresStatus            @ 63
+	_PQmblen                @ 64
+	_PQresultErrorMessage   @ 65
+	_PQresStatus            @ 66
+	_termPQExpBuffer        @ 67
+	_appendPQExpBufferChar  @ 68
+	_initPQExpBuffer        @ 69
+	_resetPQExpBuffer       @ 70
+	_PQoidValue             @ 71
+	_PQclientEncoding       @ 72
+	_PQenv2encoding         @ 73
+	_appendBinaryPQExpBuffer    @ 74
+	_appendPQExpBufferStr   @ 75
+	_destroyPQExpBuffer     @ 76
+	_createPQExpBuffer      @ 77
+	_PQconninfoFree         @ 78
+	_PQconnectPoll          @ 79
+	_PQconnectStart         @ 80
+	_PQflush                @ 81
+	_PQisnonblocking        @ 82
+	_PQresetPoll            @ 83
+	_PQresetStart           @ 84
+	_PQsetClientEncoding    @ 85
+	_PQsetnonblocking       @ 86
+	_PQfreeNotify           @ 87
+	_PQescapeString         @ 88
+	_PQescapeBytea          @ 89
+	_printfPQExpBuffer      @ 90
+	_appendPQExpBuffer      @ 91
+	_pg_encoding_to_char    @ 92
+	_pg_utf_mblen           @ 93
diff --git a/src/interfaces/libpq/win32.h b/src/interfaces/libpq/win32.h
index 4e8a2141d5324a13c99b67c5de769f0644af45cd..e0abd87678d06c45b0ea12595aa68f477f79f692 100644
--- a/src/interfaces/libpq/win32.h
+++ b/src/interfaces/libpq/win32.h
@@ -10,10 +10,18 @@
 /*
  * Some other compat functions
  */
+#ifdef __BORLANDC__
+#define _timeb timeb
+#define _ftime(a) ftime(a)
+#define _strnicmp(a,b,c) strnicmp(a,b,c)
+#define _errno errno
+#else
 #define open(a,b,c) _open(a,b,c)
 #define close(a) _close(a)
 #define read(a,b,c) _read(a,b,c)
 #define write(a,b,c) _write(a,b,c)
+#endif
+
 #define popen(a,b) _popen(a,b)
 #define pclose(a) _pclose(a)
 #define vsnprintf(a,b,c,d) _vsnprintf(a,b,c,d)