view src/Make_bc5.mak @ 11416:32aed0993813 v8.0.0592

patch 8.0.0592: if a job writes to a buffer screen is not updated commit https://github.com/vim/vim/commit/29ae377ea7039874337bc79ace9ab2b37b9056e5 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Apr 30 19:39:39 2017 +0200 patch 8.0.0592: if a job writes to a buffer screen is not updated Problem: If a job writes to a buffer and the user is typing a command, the screen isn't updated. When a message is displayed the changed buffer may cause it to be cleared. (Ramel Eshed) Solution: Update the screen and then the command line if the screen didn't scroll. Avoid inserting screen lines, as it clears any message. Update the status line when the buffer changed.
author Christian Brabandt <cb@256bit.org>
date Sun, 30 Apr 2017 19:45:03 +0200
parents b0c7061d6439
children 8b1b3228c410
line wrap: on
line source

#
# 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)
# MBYTE		no or yes: set to yes for multi-byte support (yes)
#		NOTE: multi-byte support is broken in the Borland libraries,
#		not everything will work properly!  Esp. handling multi-byte
#		file names.
# 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.
# VIMDLL	no or yes: create vim32.dll, and stub (g)vim.exe (no)
# 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

### MBYTE: yes for multibyte support, no to disable it.
!if ("$(MBYTE)"=="")
MBYTE = 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

### VIMDLL: yes for a DLL version of VIM (NOT RECOMMENDED), no otherwise
#VIMDLL = yes

### 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") && \
	("$(MBYTE)"!="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 ("$(MBYTE)"=="yes")
MBDEFINES = $(MBDEFINES) -DFEAT_MBYTE
!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_W32 -DFEAT_CLIPBOARD
!if ("$(DEBUG)"=="yes")
TARGET = gvimd.exe
!else
TARGET = gvim.exe
!endif
!if ("$(VIMDLL)"=="yes")
EXETYPE=-WD
DEFINES = $(DEFINES) -DVIMDLL
!else
EXETYPE=-W
!endif
STARTUPOBJ = c0w32.obj
LINK2 = -aa
RESFILE = vim.res
!else
!undef NETBEANS
!undef CHANNEL
!undef XPM
!undef VIMDLL
!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
!if ("$(VIMDLL)"=="yes")
vimwinmain = \
	$(OBJDIR)\os_w32dll.obj
!else
vimwinmain = \
	$(OBJDIR)\os_w32exe.obj
!endif

vimobj =  \
	$(OBJDIR)\arabic.obj \
	$(OBJDIR)\blowfish.obj \
	$(OBJDIR)\buffer.obj \
	$(OBJDIR)\charset.obj \
	$(OBJDIR)\crypt.obj \
	$(OBJDIR)\crypt_zip.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)\farsi.obj \
	$(OBJDIR)\fileio.obj \
	$(OBJDIR)\fold.obj \
	$(OBJDIR)\getchar.obj \
	$(OBJDIR)\hardcopy.obj \
	$(OBJDIR)\hashtab.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)\spell.obj \
	$(OBJDIR)\spellfile.obj \
	$(OBJDIR)\syntax.obj \
	$(OBJDIR)\tag.obj \
	$(OBJDIR)\term.obj \
	$(OBJDIR)\ui.obj \
	$(OBJDIR)\undo.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 ("$(VIMDLL)"=="yes")
vimdllobj = $(vimobj)
!if ("$(DEBUG)"=="yes")
DLLTARGET = vim32d.dll
!else
DLLTARGET = vim32.dll
!endif
!else
DLLTARGET = joebob
!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 ("$(VIMDLL)"=="yes")
MSG = $(MSG) VIMDLL
!endif
!if ("$(FASTCALL)"=="yes")
MSG = $(MSG) FASTCALL
!endif
!if ("$(MBYTE)"=="yes")
MSG = $(MSG) MBYTE
!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)

!if ("$(VIMDLL)"=="yes")
TARGETS = $(DLLTARGET)
!endif
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
!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 ..

$(DLLTARGET): $(OBJDIR) $(vimdllobj)
  $(LINK) @&&|
	$(LFLAGSDLL) +
	c0d32.obj +
	$(vimdllobj)
	$<,$*
!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
	vim.def
|

!if ("$(VIMDLL)"=="yes")
$(TARGET): $(OBJDIR) $(DLLTARGET) $(vimmain) $(OBJDIR)\$(RESFILE)
!else
$(TARGET): $(OBJDIR) $(vimobj) $(OBJDIR)\$(RESFILE)
!endif
  $(LINK) @&&|
	$(LFLAGS) +
	$(STARTUPOBJ) +
!if ("$(VIMDLL)"=="yes")
	$(vimmain)
!else
	$(vimobj)
!endif
	$<,$*
!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: if_perl.c perl.lib
	$(CC) $(CCARG) $(CC1) $(CC2)$@ -pc if_perl.c

if_perl.c: if_perl.xs typemap
	$(PERL)\bin\perl.exe $(PERL)\lib\ExtUtils\xsubpp -prototypes -typemap \
	    $(PERL)\lib\ExtUtils\typemap if_perl.xs > $@

$(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: