1#
2# Borland C++ 5.0[12] makefile for vim, 16-bit windows gui version
3# By Vince Negri
4# *************************************************************
5# * WARNING!
6# * This was originally produced by the IDE, but has since been
7# * modifed to make it work properly. Adjust with care!
8# * In particular, leave LinkerLocalOptsAtW16_gvim16dexe alone
9# * unless you are a guru.
10# *************************************************************
11#
12# Look for BOR below and either pass a different value or
13# adjust the path as required. For example
14#   make -fMake_w16.mak -DBOR=C:\PF\Borland\BC5.01 -B BccW16.cfg
15#   make -fMake_w16.mak
16# Note: $(BOR) is effectively ignored unless BccW16.cfg is rebuilt.
17#
18# Does not compile with Borland C++ 4.51 Walter Briscoe 2003-02-24
19# "out of memory" from compiler if gvim16 wildly wrong. WFB 2003-03-04
20#
21# vim16.def must be a DOS-formatted file. (\r\n line endings.)
22# It is a UNIX-formatted file (\n line endings) in vim-*-extra.tar.gz
23
24.AUTODEPEND
25
26#
27# Borland C++ tools
28#
29IMPLIB  = Implib
30BCC     = Bcc +BccW16.cfg
31TLINK   = TLink
32TLIB    = TLib
33BRC     = Brc
34TASM    = Tasm
35#
36# IDE macros
37#
38
39#
40# Options
41#
42!ifndef BOR
43BOR = D:\BC5
44!endif
45
46# !ifndef INTDIR is lethal considering CLEAN below. WFB 2003-03-13
47INTDIR=w16
48
49#  /Twe Make the target a Windows .EXE with explicit functions exportable +
50#  /x   Map file off
51#  /l   Include source line numbers in object map files`
52#  /c   case sensitive link
53#  /C   Case-sensitive exports and imports (16-bit only)
54#  /k   Produce "No Stack" warning.
55#  /Oa  Minimise segment alignment
56#  /Oc  Minimise Chain fixes
57#  /Oi  Minimise Iterated data
58#  /Or  Minimise resource alignment
59#  /P   -P=x  Code pack size
60#  /V   Windows version for application
61#  /L   Folder to search for library files
62LinkerLocalOptsAtW16_gvim16dexe =/Twe/x/l/c/C/k/Or/Oc/Oa/Oi/P=65535/V3.10
63
64CompInheritOptsAt_gvim16dexe = \
65   -I$(BOR)\INCLUDE;PROTO;. \
66   -DFEAT_GUI;FEAT_GUI_MSWIN;FEAT_GUI_W16;MSWIN;WIN16;MSWIN16_FASTTEXT \
67   -DFEAT_TOOLBAR;WIN16_3DLOOK
68
69#
70# Dependency List
71#
72Dep_Gvim16 = \
73   gvim16.exe
74
75ObjFiles = \
76   $(INTDIR)\buffer.obj\
77   $(INTDIR)\charset.obj\
78   $(INTDIR)\diff.obj\
79   $(INTDIR)\digraph.obj\
80   $(INTDIR)\edit.obj\
81   $(INTDIR)\eval.obj\
82   $(INTDIR)\ex_cmds.obj\
83   $(INTDIR)\ex_cmds2.obj\
84   $(INTDIR)\ex_docmd.obj\
85   $(INTDIR)\ex_eval.obj\
86   $(INTDIR)\ex_getln.obj\
87   $(INTDIR)\fileio.obj\
88   $(INTDIR)\fold.obj\
89   $(INTDIR)\getchar.obj\
90   $(INTDIR)\hardcopy.obj\
91   $(INTDIR)\hashtab.obj\
92   $(INTDIR)\gui.obj\
93   $(INTDIR)\gui_w16.obj\
94   $(INTDIR)\main.obj\
95   $(INTDIR)\mark.obj\
96   $(INTDIR)\mbyte.obj\
97   $(INTDIR)\memfile.obj\
98   $(INTDIR)\memline.obj\
99   $(INTDIR)\menu.obj\
100   $(INTDIR)\message.obj\
101   $(INTDIR)\misc1.obj\
102   $(INTDIR)\misc2.obj\
103   $(INTDIR)\move.obj\
104   $(INTDIR)\normal.obj\
105   $(INTDIR)\ops.obj\
106   $(INTDIR)\option.obj\
107   $(INTDIR)\os_win16.obj\
108   $(INTDIR)\os_msdos.obj\
109   $(INTDIR)\os_mswin.obj\
110   $(INTDIR)\popupmnu.obj\
111   $(INTDIR)\quickfix.obj\
112   $(INTDIR)\regexp.obj\
113   $(INTDIR)\screen.obj\
114   $(INTDIR)\search.obj\
115   $(INTDIR)\spell.obj\
116   $(INTDIR)\syntax.obj\
117   $(INTDIR)\tag.obj\
118   $(INTDIR)\term.obj\
119   $(INTDIR)\ui.obj\
120   $(INTDIR)\undo.obj\
121   $(INTDIR)\version.obj\
122   $(INTDIR)\window.obj
123
124Dep_gvim16dexe = \
125   vimtbar.lib\
126   vim16.def\
127   $(INTDIR)\vim16.res\
128   $(ObjFiles)
129
130# Without the following, the implicit rule in BUILTINS.MAK is picked up
131# for a rule for .c.obj rather than the local implicit rule
132.SUFFIXES
133.SUFFIXES .c .obj
134.path.c = .
135
136# -P-	Force C++ compilation off
137# -c	Compilation only
138# -n    Place .OBJ files
139{.}.c{$(INTDIR)}.obj:
140  $(BCC) -P- -c -n$(INTDIR)\ {$< }
141
142Gvim16 : BccW16.cfg $(Dep_Gvim16)
143  echo MakeNode
144
145gvim16.exe : $(Dep_gvim16dexe)
146  $(TLINK)   $(LinkerLocalOptsAtW16_gvim16dexe) @&&|
147c0wl.obj $(ObjFiles)
148|,$*,,vimtbar ctl3dv2 import cwl, vim16.def,$(INTDIR)\vim16.res
149
150# Force objects to be built if $(BOR) changes
151$(ObjFiles) : Make_w16.mak BccW16.cfg
152
153$(INTDIR)\vim16.res : vim16.rc
154  $(BRC) -R @&&|
155  $(CompInheritOptsAt_gvim16dexe) -fo$*.res $?
156|
157
158
159# Compiler configuration file
160# There is no rule for $(INTDIR) as make always says it does not exist
161BccW16.cfg :
162	-@if not exist $(INTDIR)\$(NULL) mkdir $(INTDIR)
163	Copy &&|
164-3		; Generate 80386 protected-mode compatible instructions
165-a		; Byte alignment
166-dc		; Move string literals from data segment to code segment
167-ff		; Fast floating point
168-H		; Generate and use precompiled headers
169-H=$(INTDIR)\gvim16.csm	; gvim16.csm is the precompiled header filename
170-k-		; No standard stack frame
171-ml		; Large memory model
172-OW		; Suppress the inc bp/dec bp on windows far functions
173-O1		; Generate smallest possible code
174-O2		; Generate fastest possible code (overrides prior -O1 control)
175-pr		; Fastcall calling convention passing parameters in registers
176-R-		; Exclude browser information in generated .OBJ files
177-v-		; Turn off source debugging
178-vi		; Turn inline function expansion on
179-WE		; Only __far _export functions are exported
180-w		; Display warnings
181-w-par		; Suppress: Parameter 'parameter' is never used
182-w-pch		; Cannot create pre-compiled header: initialized data in header
183-w-sig		; identifier' declared but never used
184-w-ucp		; Mixing pointers to different 'char' types
185-wuse		; 'identifier' declared but never used
186 $(CompInheritOptsAt_gvim16dexe)
187| $@
188
189!IF "$(OS)" == "Windows_NT"
190NULL=
191DEL_TREE = rmdir /s /q
192!ELSE
193NULL=nul
194DEL_TREE = deltree /y
195!ENDIF
196
197CLEAN:
198	-@if exist $(INTDIR)\$(NULL) $(DEL_TREE) $(INTDIR)
199	-@if exist BccW16.cfg erase BccW16.cfg
200	-@if exist gvim16.exe erase gvim16.exe
201