blob: 7b30a197603868e45228f0fcece5df3c3efcf515 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001#
2# Makefile for VIM on the Amiga, using SAS/Lattice C 6.0 to 6.56
3#
4# Do NOT use the peephole optimizer with a version before 6.55!
5# It messes up all kinds of things:
6# For 6.0 and 6.1, expand_env() will not work correctly.
7# For 6.2 and 6.3 the call to free_line in u_freeentry is wrong.
8# Don't know about 6.50, might work...
9# Version 6.56 seems to be working fine.
10# You should use Manx Aztec C whenever possible.
11#
12# The prototypes from Manx and SAS are incompatible. If the prototypes
13# were generated by Manx, first do "touch *.c; make proto" before "make".
14# The prototypes generated on Unix work for both.
15#
16# Note: Not all dependencies are included. This was done to avoid having
17# to compile everything when a global variable or function is added.
18
19#>>>>> choose options:
20
21#ANSI CODES
22ANSIOFF = *e[0m
23BBOLD = *e[1m
24WBOLD = *e[2m
25ITALIC = *e[3m
26UNDERLI = *e[4m
27ANSIOFF = *e[0m
28FCOL1 = *e[31m
29FCOL2 = *e[32m
30FCOL3 = *e[33m
31FCOL4 = *e[34m
32BCOL1 = *e[41m
33BCOL2 = *e[42m
34BCOL3 = *e[43m
35BCOL4 = *e[44m
36
37
38### See feature.h for a list of optionals.
39### Any other defines can be included here.
40
41DEFINES = DEF=NO_ARP DEF=AMIGA DEF=NEWSASC DEF=FEAT_GUI_AMIGA \
42 DEF="SASC=658" #" this fixes a bug in the syntax highlighting
43
44#>>>>> if HAVE_TGETENT is defined termlib.o has to be used
45#TERMLIB = termlib.o
46TERMLIB =
47
48#>>>>> choose NODEBUG for normal compiling, the other for debugging and
49# profiling
50# don't switch on debugging when generating proto files, it crashes the
51# compiler.
52DBG = NODEBUG
53#DBG = DBG=FULLFLUSH
54#DBG = DBG=LINE
55
56#>>>>> choose NOOPTPEEP for 6.0 to 6.3, NOOPT for debugging
57#OPTIMIZE=NOOPTPEEP OPT
58
59# for 6.58 you can use the line below, but be warned it takes a loooonnnggg time
60#OPTIMIZE=OPT OPTIMIZERSCHEDULER OPTIMIZERTIME NoOPTIMIZERALIAS \
61# OptimizerComplexity=10 OptimizerDepth=10 OptimizerRecurDepth=10 \
62# OptimizerInLocal OPTPEEP
63OPTIMIZE=OPT OPTIMIZERTIME NoOPTIMIZERALIAS \
64 OptimizerComplexity=10 OptimizerDepth=10 OptimizerRecurDepth=10 \
65 OptimizerInLocal OPTPEEP
66#OPTIMIZE = NOOPT
67
68# no optimization, (works on all platforms)
69#OPTIMIZE=NOOPT
70
71#generate code for your processor - note however, that the 060 selection will work for 040's
72# as well.
73#CPU=68000
74#CPU=68020
75#CPU=68030
76#CPU=68040
77CPU=68060
78
79
80#Error reporting - I use rexx for reporting, but console reporting may be more
81#useful for some people.
82#ERROR = ERRORCONSOLE ERRORSOURCE ERRORHIGHLIGHT
83ERROR = ERRORREXX ERRORCONSOLE ERRORSOURCE ERRORHIGHLIGHT
84
85
86#memory types, if you have fast use it :->,
87# ANY = will work on all machines
88# FAST = this is the best option, for speed
89# CHIP = not necessary for this application.
90#MEMORYTYPE=FAST
91MEMORYTYPE=ANY
92
93#MEMSIZE - this is for compile time only for speed of compilation
94#default is LARGE
95MEMSIZE=HUGE
96#MEMSIZE=LARGE
97#MEMSIZE=SMALL
98
99#>>>>> end of choices
100###########################################################################
101
102CC = sc
103
104GST=vim.gst
105DEP = $(GST)
106
107
108CFLAGS = NOLINK $(DBG) CPU=$(CPU) NOSTACKCHECK
109CFLAGS2 = $(OPTIMIZE) $(ERROR) GSTIMMEDIATE GST=$(GST)
110CFLAGS3 =NOSINT SCODE SDATA STRINGMERGE MEMSIZE=$(MEMSIZE)
111CFLAGS4 = $(DEFINES) DATAMEMORY=$(MEMORYTYPE)
112
113PROPT = DEF=PROTO GPROTO GPPARM MAXIMUMERRORS=999 GENPROTOSTATICS GENPROTOPARAMETERS
114
115SRC = \
116 buffer.c \
117 charset.c \
118 diff.c \
119 digraph.c \
120 edit.c \
121 eval.c \
122 ex_cmds.c \
123 ex_cmds2.c \
124 ex_docmd.c \
125 ex_eval.c \
126 ex_getln.c \
127 fileio.c \
128 fold.c \
129 getchar.c \
130 main.c \
131 mark.c \
132 memfile.c \
133 memline.c \
134 menu.c \
135 message.c \
136 misc1.c \
137 misc2.c \
138 move.c \
139 normal.c \
140 ops.c \
141 option.c \
142 os_amiga.c \
143 quickfix.c \
144 regexp.c \
145 screen.c \
146 search.c \
147 syntax.c \
148 tag.c \
149 term.c \
150 ui.c \
151 undo.c \
152 window.c \
153 version.c \
154 gui_amiga.c \
155 gui.c
156
157OBJ = buffer.o charset.o diff.o digraph.o edit.o eval.o ex_cmds.o ex_cmds2.o ex_docmd.o ex_eval.o ex_getln.o \
158 fileio.o fold.o getchar.o main.o mark.o memfile.o memline.o menu.o message.o misc1.o misc2.o move.o \
159 normal.o ops.o option.o os_amiga.o quickfix.o regexp.o screen.o search.o syntax.o \
160 tag.o term.o ui.o undo.o window.o gui_amiga.o gui.o $(TERMLIB)
161
162PRO = \
163 buffer.pro \
164 charset.pro \
165 diff.pro \
166 digraph.pro \
167 edit.pro \
168 eval.pro \
169 ex_cmds.pro \
170 ex_cmds2.pro \
171 ex_docmd.pro \
172 ex_eval.pro \
173 ex_getln.pro \
174 fileio.pro \
175 fold.pro \
176 getchar.pro \
177 main.pro \
178 mark.pro \
179 memfile.pro \
180 memline.pro \
181 menu.pro \
182 message.pro \
183 misc1.pro \
184 misc2.pro \
185 move.pro \
186 normal.pro \
187 ops.pro \
188 option.pro \
189 os_amiga.pro \
190 quickfix.pro \
191 regexp.pro \
192 screen.pro \
193 search.pro \
194 syntax.pro \
195 tag.pro \
196 term.pro \
197 termlib.pro \
198 ui.pro \
199 undo.pro \
200 window.pro \
201 version.pro \
202 gui_amiga.pro \
203 gui.pro
204
205all:
206 @echo "$(BCOL2)building prototypes, this may take some time$(ANSIOFF)"
207 @smake proto
208 @echo "$(BCOL2)building vim production version$(ANSIOFF)"
209 @smake vim
210
211Vim: scoptions proto $(OBJ) version.c version.h
212 $(CC) $(CFLAGS) version.c
213 $(CC) LINK $(OPT) $(COPTS) $(OBJ) version.o $(DBG) PNAME=Vim
214
215debug: scoption protos $(OBJ) version.c version.h
216 $(CC) $(CFLAGS) version.c
217 $(CC) LINK $(COPTS) $(OBJ) version.o $(DBG) PNAME=Vim
218
219proto: $(PRO)
220
221tags: $(SRC)
222 spat ctags $(SRC) *.h
223 #csh -c ctags $(SRC) *.h
224
225# can't use delete here, too many file names
226clean:
227 @echo removing all object files
228 -delete $(OBJ) >nil:
229
230clobber: clean
231 @echo removing all prototype files
232 -delete $(PRO) SCOPTIONS vim $(GST) > NIL:
233
234
235# generate an options file, as there is no way the amiga command line can handle the
236# lengths that this makefile will impose on the shell.
237scoptions: smakefile
238 @echo "$(BCOL2)Generating $(ANSIOFF)$(FCOL4)- $@$(ANSIOFF)"
239 @echo $(CFLAGS) > scoptions
240 @echo $(CFLAGS1) >> scoptions
241 @echo $(CFLAGS2) >> scoptions
242 @echo $(CFLAGS3) >> scoptions
243 @echo $(CFLAGS4) >> scoptions
244 @echo $(COPTS) >>scoptions
245 @echo scoptions has been built
246
247
248#generate GlobalSymbolTable, which both speeds up the compile time, but also
249#solves some problems with prototypes, and types that are defined in a unixy
250#manner.
251#
252#I use a preprocessing stage here to work arounda bug in the GST generator, in
253#that it does not handle nested makefiles properly in this stage.
254$(GST): scoptions vim.h keymap.h macros.h ascii.h term.h structs.h gui.h gui_amiga.h
255 @echo "$(BCOL2)Generating Global Symbol Table $(ANSIOFF)$(FCOL4) $(GST) $(ANSIOFF)"
256 $(CC) PREPROCESSORONLY gui_amiga.h objectname pre.h
257 $(CC) MGST=$(GST) pre.h ignore=105,316
258 del pre.h
259
260
261###########################################################################
262
263.c.o:
264 @echo "$(BCOL2)Generating object for $(ANSIOFF)$(FCOL4) $*.c -> $@$(ANSIOFF)"
265 $(CC) $*.c
266
267.c.pro:
268 @echo "$(BCOL2)Generating prototypes for $(ANSIOFF)$(FCOL4) $*.c -> $@$(ANSIOFF)"
269 @$(CC) NOERRORREXX GPFILE=$*.pro $(PROPT) $*.c ignore=306,316,317,304
270
271$(PRO): $(GST)
272$(OBJ): $(GST)
273
274# dependancies
275buffer.o: buffer.c $(DEP)
276buffer.pro: buffer.c $(DEP)
277charset.o: charset.c $(DEP)
278charset.pro: charset.c $(DEP)
279diff.o: diff.c $(DEP)
280diff.pro: diff.c $(DEP)
281digraph.o: digraph.c $(DEP)
282digraph.pro: digraph.c $(DEP)
283edit.o: edit.c $(DEP)
284edit.pro: edit.c $(DEP)
285eval.o: eval.c $(DEP)
286eval.pro: eval.c $(DEP)
287ex_cmds.o: ex_cmds.c $(DEP)
288ex_cmds.pro: ex_cmds.c $(DEP)
289ex_cmds2.o: ex_cmds2.c $(DEP)
290ex_cmds2.pro: ex_cmds2.c $(DEP)
291ex_docmd.o: ex_docmd.c ex_cmds.h $(DEP)
292ex_docmd.pro: ex_docmd.c ex_cmds.h $(DEP)
293ex_eval.o: ex_eval.c ex_cmds.h $(DEP)
294ex_eval.pro: ex_eval.c ex_cmds.h $(DEP)
295ex_getln.o: ex_getln.c $(DEP)
296ex_getln.pro: ex_getln.c $(DEP)
297fileio.o: fileio.c $(DEP)
298fileio.pro: fileio.c $(DEP)
299fold.o: fold.c $(DEP)
300fold.pro: fold.c $(DEP)
301getchar.o: getchar.c $(DEP)
302getchar.pro: getchar.c $(DEP)
303main.o: main.c globals.h $(DEP)
304main.pro: main.c globals.h $(DEP)
305mark.o: mark.c $(DEP)
306mark.pro: mark.c $(DEP)
307memfile.o: memfile.c $(DEP)
308memfile.pro: memfile.c $(DEP)
309memline.o: memline.c $(DEP)
310memline.pro: memline.c $(DEP)
311menu.o: menu.c $(DEP)
312menu.pro: menu.c $(DEP)
313message.o: message.c $(DEP)
314message.pro: message.c $(DEP)
315misc1.o: misc1.c $(DEP)
316misc1.pro: misc1.c $(DEP)
317misc2.o: misc2.c $(DEP)
318misc2.pro: misc2.c $(DEP)
319move.o: move.c $(DEP)
320move.pro: move.c $(DEP)
321normal.o: normal.c $(DEP)
322normal.pro: normal.c $(DEP)
323ops.o: ops.c $(DEP)
324ops.pro: ops.c $(DEP)
325option.o: option.c $(DEP)
326option.pro: option.c $(DEP)
327os_amiga.o: os_amiga.c $(DEP)
328os_amiga.pro: os_amiga.c $(DEP)
329quickfix.o: quickfix.c $(DEP)
330quickfix.pro: quickfix.c $(DEP)
331regexp.o: regexp.c $(DEP)
332regexp.pro: regexp.c $(DEP)
333screen.o: screen.c $(DEP)
334screen.pro: screen.c $(DEP)
335search.o: search.c $(DEP)
336search.pro: search.c $(DEP)
337syntax.o: syntax.c $(DEP)
338syntax.pro: syntax.c $(DEP)
339tag.o: tag.c $(DEP)
340tag.pro: tag.c $(DEP)
341term.o: term.c $(DEP)
342term.pro: term.c $(DEP)
343termlib.o: termlib.c $(DEP)
344termlib.pro: termlib.c $(DEP)
345ui.o: ui.c $(DEP)
346ui.pro: ui.c $(DEP)
347undo.o: undo.c $(DEP)
348undo.pro: undo.c $(DEP)
349window.o: window.c $(DEP)
350window.pro: window.c $(DEP)
351gui_amiga.o: gui_amiga.c $(DEP) amiga.h
352#gui_amiga.pro: gui_amiga.c $(DEP) amiga.h
353amiga.o: amiga.c $(DEP) amiga.h
354amiga.pro: amiga.c $(DEP) amiga.h
355gui.o: gui.c $(DEP)
356gui.pro: gui.c $(DEP)