|
|
1.1 root 1: # combined Makefile for ELVIS - a clone of `vi`
2: #
3: # After editing this Makefile as described below, you should...
4: #
5: # Use `make` to compile all programs
6: # Use `make install` to copy the programs to the BIN directory
7: # Use `make clean` to remove all object files
8: # Use `make clobber` to remove everything except source & documentation
9: # Use `make tags` to build new "tags" and "refs" files
10: # Use `make uue` to produce uuencoded compressed tar archives of the source
11: # Use `make sh` to produce shar archives of the source
12: # Use `make print` to print the Elvis documentation
13: #
14: # Several groups of Makefile settings are included below. Choose *ONE* group
15: # of settings for your particular system, and leave the others commented out.
16: # The meanings of these settings are:
17: # O the filename extension for unlinked object files -- usually .o
18: # E the filename extension for executable files -- usually null
19: # EXTRA version-specific object files used in elvis
20: # EXTRA2 version-specific object files used in elvis, virec, & refont
21: # LIBS any special libraries, such as "-ltermcap"
22: # BIN directory where executables should be installed
23: # CC the C compiler command, possibly with "memory model" flags
24: # CFLAGS compiler flags used to select compile-time options
25: # OF link flag to control the output file's name -- usually -o<space>
26: # RF flag used to denote "compile but don't link" -- usually -c
27: # DATE a "cc" flag that defines "DATE". e.g. DATE=-DDATE=\"7/4/76\"
28: # EVAL the word "eval", if DATE requires it
29: # PROGS the list of all programs
30: # CHMEM any extra commands to be run after ELVIS is linked
31: # SORT if the "tags" file must be sorted, then SORT=-DSORT
32: # INST installation method: inst.dos, inst.os9, or inst.unix
33: # RM the name of a program that deletes files
34: # PR1 used to print documentation -- typically "refont -c"
35: # PR2 used to send text to printer -- typically "| lpr"
36: # DUMMY usually nothing, but OS9 needs "dummy"
37: # DOC name of "doc" directory, with a trailing slash
38:
39: #---- These settings are recommended for System-V UNIX and SCO XENIX-386 ----
40: #O= .o
41: #E=
42: #EXTRA=
43: #EXTRA2=
44: #LIBS= -ltermcap
45: #BIN= /usr/local/bin
46: #CFLAGS= -DM_SYSV -O
47: #OF= -o
48: #RF= -c
49: #DATE= -DDATE=\'\"`date`\"\'
50: #EVAL= eval
51: #PROGS= elvis$E ctags$E ref$E virec$E refont$E
52: #CHMEM=
53: #SORT= -DSORT
54: #INST= inst.unix
55: #RM= rm -f
56: #PR1= refont -c
57: #PR2= | lp
58: #DUMMY=
59: #DOC= doc/
60:
61: #---- These settings are recommended for SCO XENIX-286 ----
62: #O= .o
63: #E=
64: #EXTRA=
65: #EXTRA2=
66: #LIBS= -ltermcap
67: #BIN= /usr/local/bin
68: #CC= cc -M2s -i
69: #CFLAGS= -DM_SYSV -Ox -DCS_IBMPC
70: #OF= -o
71: #RF= -c
72: #DATE= -DDATE=\'\"`date`\"\'
73: #EVAL= eval
74: #PROGS= elvis$E ctags$E ref$E virec$E refont$E
75: #CHMEM=
76: #SORT= -DSORT
77: #INST= inst.unix
78: #RM= rm -f
79: #PR1= refont -c
80: #PR2= | lp
81: #DUMMY=
82: #DOC= doc/
83:
84: #---- These settings are recommended for BSD 4.3 UNIX ----
85: #O= .o
86: #E=
87: #EXTRA=
88: #EXTRA2=
89: #LIBS= -ltermcap
90: #BIN= /usr/local/bin
91: #CFLAGS= -Dbsd -O
92: #OF= -o
93: #RF= -c
94: #DATE= -DDATE=\'\"`date`\"\'
95: #EVAL= eval
96: #PROGS= elvis$E ctags$E ref$E virec$E refont$E
97: #CHMEM=
98: #SORT= -DSORT
99: #INST= inst.unix
100: #RM= rm -f
101: #PR1= refont -c
102: #PR2= | lpr
103: #DUMMY=
104: #DOC= doc/
105:
106: #---- These settings are recommended for Coherent ----
107: #O= .o
108: #E=
109: #EXTRA=
110: #EXTRA2=
111: #LIBS= -lterm
112: #BIN= /usr/local/bin
113: #CC= cc
114: #CFLAGS= -O -DCOHERENT -DCRUNCH -DNO_CHARATTR -DNO_CURSORSHAPE \
115: # -DNO_DIGRAPH -DNO_MKEXRC
116: #OF= -o
117: #RF= -c
118: #DATE= -DDATE=\'\"`date`\"\'
119: #EVAL= eval
120: #PROGS= elvis$E ctags$E ref$E virec$E refont$E
121: #CHMEM= fixstack 2000 elvis$E
122: #SORT=
123: #INST= inst.unix
124: #RM= rm -f
125: #PR1= refont -c
126: #PR2= | lpr
127: #DUMMY=
128: #DOC= doc/
129:
130: #---- These settings are recommended for Minix-ST ----
131: #O= .o
132: #E=
133: #EXTRA=
134: #EXTRA2=
135: #LIBS=
136: #BIN= /usr/bin
137: #CC= cc
138: #CFLAGS=
139: #OF= -o
140: #RF= -c
141: #DATE= -DDATE=\'\"`date`\"\'
142: #EVAL= eval
143: #PROGS= elvis$E ctags$E ref$E virec$E refont$E
144: #CHMEM= chmem =18000 elvis
145: #SORT=
146: #INST= inst.unix
147: #RM= rm -f
148: #PR1= lpr
149: #PR2=
150: #DUMMY=
151: #DOC= doc/
152:
153: #---- These settings are recommended for Minix-PC ----
154: #O= .s
155: #E=
156: #EXTRA= tinytcap$O
157: #EXTRA2=
158: #LIBS=
159: #BIN= /usr/bin
160: #CC= cc -i
161: #CFLAGS= -O -DCRUNCH -DNO_MKEXRC -DNO_CURSORSHAPE -DNO_CHARATTR \
162: # -DNO_SHOWMODE -DNO_MODELINE -DNO_OPTCOLS -DNO_DIGRAPH -DNO_ABBR \
163: # -DNO_AT -DNO_SENTENCE -DNO_ERRLIST
164: #### (all but -DNO_EXTENSIONS, -DNO_RECYCLE, -DNO_MAGIC, and -DNO_CHARSEARCH)
165: #OF= -o
166: #RF= -c
167: #DATE= -DDATE=\'\"`date`\"\'
168: #EVAL= eval
169: #PROGS= elvis$E ctags$E ref$E virec$E refont$E
170: #CHMEM=
171: #SORT=
172: #INST= inst.unix
173: #RM= rm -f
174: #PR1= lpr
175: #PR2=
176: #DUMMY=
177: #DOC= doc/
178:
179: #---- These settings are recommended for MS-DOS + MS-C + NDMAKE ----
180: #O= .obj
181: #E= .exe
182: #EXTRA= pc$O sysdos$O tinytcap$O
183: #EXTRA2=
184: #LIBS=
185: #BIN= c:\dos
186: #CC= cl /M2m
187: #CFLAGS= -O -DCS_IBMPC
188: #OF= -o
189: #RF= -c
190: #DATE=
191: #EVAL=
192: #PROGS= elvis$E ex$E ctags$E ref$E virec$E wildcard$E refont$E
193: #CHMEM=
194: #SORT=
195: #INST= inst.dos
196: #RM= del
197: #PR1= refont -c
198: #PR2= >PRN
199: #DUMMY=
200: #DOC= doc\
201:
202: #---- These settings are recommended for Atari TOS + Mark Williams C ----
203: #O= .o
204: #E= .ttp
205: #EXTRA= sysdos$O tinytcap$O
206: #EXTRA2= atari$O
207: #LIBS=
208: #BIN= c:\
209: #CC= cc -VPEEP
210: #CFLAGS= -O
211: #OF= -o
212: #RF= -c
213: #DATE=
214: #EVAL=
215: #PROGS= elvis$E ex$E ctags$E ref$E virec$E wildcard$E shell$E refont$E
216: #CHMEM=
217: #SORT=
218: #INST= inst.dos
219: #RM= rm -f
220: #PR1= refont -e
221: #PR2= >PRT:
222: #DUMMY=
223: #DOC= doc\
224:
225: #---- These settings are recommended for OS-9/68K V2.3 ----
226: #O= .r
227: #E=
228: #EXTRA= date$O
229: #EXTRA2= osk$O
230: #LIBS= -l=/dd/lib/termlib.l
231: #BIN= /dd/usr/cmds
232: #CC= cc
233: #ODIR= /dd/usr/src/elvis
234: #CFLAGS= -gq -m=2
235: #OF= -f=$(ODIR)/
236: #RF= -r
237: #DATE=
238: #EVAL=
239: #PROGS= elvis$E vi$E view$E input$E ctags$E ref$E virec$E refont$E
240: #CHMEM= touch date.r
241: #SORT=
242: #INST= inst.os9
243: #RM= del *.stb *.dbg
244: #PR1= refont -b
245: #PR2= >/p
246: #DUMMY= dummy
247: #DOC= doc/
248:
249: ###########################################################################
250: ###########################################################################
251: ### ###
252: ### The rest of this Makefile contains no user-servicable parts ###
253: ### ###
254: ###########################################################################
255: ###########################################################################
256:
257: OBJS= blk$O cmd1$O cmd2$O curses$O cut$O ex$O input$O main$O misc$O \
258: modify$O move1$O move2$O move3$O move4$O move5$O opts$O recycle$O \
259: redraw$O regexp$O regsub$O system$O tio$O tmp$O vars$O vcmd$O vi$O
260:
261: ALIAS= alias$O
262:
263: DOCS= $(DOC)index.doc $(DOC)intro.doc $(DOC)visual.doc $(DOC)ex.doc \
264: $(DOC)regexp.doc $(DOC)options.doc $(DOC)cutbufs.doc $(DOC)differ.doc \
265: $(DOC)internal.doc $(DOC)cflags.doc $(DOC)termcap.doc \
266: $(DOC)environ.doc $(DOC)versions.doc
267:
268: SRC1= README $(DOC)intro.doc $(DOC)visual.doc $(DOC)ex.doc \
269: $(DOC)versions.doc $(DOC)cflags.doc $(DOC)differ.doc
270: SRC2= $(DOC)cutbufs.doc $(DOC)options.doc $(DOC)environ.doc $(DOC)regexp.doc \
271: $(DOC)internal.doc $(DOC)termcap.doc $(DOC)index.doc $(DOC)ctags.man \
272: $(DOC)elvis.man $(DOC)ref.man $(DOC)refont.man $(DOC)virec.man
273: SRC3= Elvis.lnk Elvis.mak Elvis.prj Makefile.mix alias.c atari.c \
274: ctags.c pc.c ref.c shell.c sysdos.c virec.c wildcard.c \
275: profile.sh osk.c osk.h date.c
276: SRC4= blk.c cmd1.c cmd2.c config.h curses.c
277: SRC5= curses.h cut.c ex.c input.c main.c misc.c
278: SRC6= modify.c move1.c move2.c move3.c move4.c move5.c opts.c recycle.c \
279: redraw.c
280: SRC7= regexp.c regexp.h regsub.c system.c tinytcap.c tio.c tmp.c
281: SRC8= vars.c vcmd.c vi.c vi.h refont.c
282:
283: ###########################################################################
284:
285: all: $(PROGS)
286: @echo done.
287:
288: elvis$E: $(OBJS) $(EXTRA) $(EXTRA2)
289: $(CC) $(CFLAGS) $(OF)elvis$E $(OBJS) $(EXTRA) $(EXTRA2) $(LIBS)
290: -$(CHMEM)
291:
292: ctags$E: ctags.c
293: $(CC) $(CFLAGS) $(SORT) $(OF)ctags$E ctags.c
294:
295: ref$E: ref.c
296: $(CC) $(CFLAGS) $(OF)ref$E ref.c
297:
298: virec$E: virec.c
299: $(CC) $(CFLAGS) $(OF)virec$E virec.c $(EXTRA2)
300:
301: view$E: $(ALIAS)
302: $(CC) $(CFLAGS) $(OF)view$E $(ALIAS)
303:
304: ex$E: $(ALIAS)
305: $(CC) $(CFLAGS) $(OF)ex$E $(ALIAS)
306:
307: vi$E: $(ALIAS)
308: $(CC) $(CFLAGS) $(OF)vi$E $(ALIAS)
309:
310: input$E: $(ALIAS)
311: $(CC) $(CFLAGS) $(OF)input$E $(ALIAS)
312:
313: wildcard$E: wildcard.c
314: $(CC) $(CFLAGS) $(OF)wildcard$E wildcard.c
315:
316: refont$E: refont.c
317: $(CC) $(CFLAGS) $(OF)refont$E refont.c $(EXTRA2)
318:
319: ##############################################################################
320:
321: # The file cmd1.c is compiled with the extra flag -DDATE="today's date".
322: cmd1$O: cmd1.c vi.h config.h
323: $(EVAL) $(CC) $(CFLAGS) $(RF) $(DATE) cmd1.c
324:
325: # "It all depends..."
326: $(OBJS): vi.h curses.h config.h
327:
328: # OS9 must create a custom date.c file, and compile it.
329: date$O: $(OBJS)
330: @echo '/* compilation date of elvis */' >-date.c
331: @echo -r 'char date[] = "' >+date.c
332: @echo -r 'echo -r ' >-/dd/tmp/date.c
333: @date >+/dd/tmp/date.c
334: @shell /dd/tmp/date.c >+date.c
335: @echo '";' >+date.c
336: @del /dd/tmp/date.c
337: $(CC) $(CFLAGS) $(RF) date.c
338:
339: ##############################################################################
340: install: $(INST)
341: @echo Installation complete.
342:
343: inst.unix: $(DUMMY)
344: cp $(PROGS) $(BIN)
345: (cd $(BIN); chmod 755 $(PROGS))
346: (cd $(BIN); chown bin $(PROGS))
347: -ln $(BIN)/elvis $(BIN)/vi
348: -ln $(BIN)/elvis $(BIN)/ex
349: -ln $(BIN)/elvis $(BIN)/view
350: -ln $(BIN)/elvis $(BIN)/input
351:
352: inst.dos: $(DUMMY)
353: copy $(PROGS) $(BIN)
354: copy $(BIN)/ex$E $(BIN)/vi$E
355: copy $(BIN)/ex$E $(BIN)/view$E
356: copy $(BIN)/ex$E $(BIN)/input$E
357:
358: inst.os9: $(DUMMY)
359: copy $(PROGS) -rw=$(BIN)
360: chd $(BIN); attr -epenprnpw $(PROGS)
361:
362: ##############################################################################
363: clean: $(DUMMY)
364: $(RM) *$O $(DOC)*.1 elvis?.uue elvis?.sh core
365:
366: clobber: clean
367: $(RM) tags refs $(PROGS)
368:
369: ##############################################################################
370: print: refont$E
371: $(PR1) $(DOCS) $(PR2)
372:
373: tags refs: ctags$E
374: ./ctags -r *.c *.h
375:
376: ##############################################################################
377: uue: elvis1.uue elvis2.uue elvis3.uue elvis4.uue elvis5.uue \
378: elvis6.uue elvis7.uue elvis8.uue
379:
380: elvis1.uue: $(SRC1)
381: tar cf elvis1.tar $(SRC1)
382: compress -b13 elvis1.tar
383: cp README elvis1.uue
384: uue elvis1.tar.Z - >>elvis1.uue
385: $(RM) elvis1.tar*
386:
387: elvis2.uue: $(SRC2)
388: tar cf elvis2.tar $(SRC2)
389: compress -b13 elvis2.tar
390: uue elvis2.tar.Z
391: $(RM) elvis2.tar*
392:
393: elvis3.uue: $(SRC3)
394: tar cf elvis3.tar $(SRC3)
395: compress -b13 elvis3.tar
396: uuencode elvis3.tar.Z <elvis3.tar.Z >elvis3.uue
397: $(RM) elvis3.tar*
398:
399: elvis4.uue: $(SRC4)
400: tar cf elvis4.tar $(SRC4)
401: compress -b13 elvis4.tar
402: uuencode elvis4.tar.Z <elvis4.tar.Z >elvis4.uue
403: $(RM) elvis4.tar*
404:
405: elvis5.uue: $(SRC5)
406: tar cf elvis5.tar $(SRC5)
407: compress -b13 elvis5.tar
408: uuencode elvis5.tar.Z <elvis5.tar.Z >elvis5.uue
409: $(RM) elvis5.tar*
410:
411: elvis6.uue: $(SRC6)
412: tar cf elvis6.tar $(SRC6)
413: compress -b13 elvis6.tar
414: uuencode elvis6.tar.Z <elvis6.tar.Z >elvis6.uue
415: $(RM) elvis6.tar*
416:
417: elvis7.uue: $(SRC7)
418: tar cf elvis7.tar $(SRC7)
419: compress -b13 elvis7.tar
420: uuencode elvis7.tar.Z <elvis7.tar.Z >elvis7.uue
421: $(RM) elvis7.tar*
422:
423: elvis8.uue: $(SRC8)
424: tar cf elvis8.tar $(SRC8)
425: compress -b13 elvis8.tar
426: uuencode elvis8.tar.Z <elvis8.tar.Z >elvis8.uue
427: $(RM) elvis8.tar*
428:
429: ##############################################################################
430: sh: elvis1.sh elvis2.sh elvis3.sh elvis4.sh elvis5.sh elvis6.sh \
431: elvis7.sh elvis8.sh
432:
433: elvis1.sh: $(SRC1)
434: cat >elvis1.sh README
435: echo >>elvis1.sh ': ------------------------ CUT HERE --------------------'
436: echo >>elvis1.sh 'test -d doc || mkdir doc || exit 2'
437: shar >>elvis1.sh -h $(SRC1)
438:
439: elvis2.sh: $(SRC2)
440: echo >elvis2.sh ': ------------------------ CUT HERE --------------------'
441: echo >>elvis2.sh 'test -d doc || mkdir doc || exit 2'
442: shar >>elvis2.sh -h $(SRC2)
443:
444: elvis3.sh: $(SRC3)
445: shar $(SRC3) >elvis3.sh
446:
447: elvis4.sh: $(SRC4)
448: shar $(SRC4) >elvis4.sh
449:
450: elvis5.sh: $(SRC5)
451: shar $(SRC5) >elvis5.sh
452:
453: elvis6.sh: $(SRC6)
454: shar $(SRC6) >elvis6.sh
455:
456: elvis7.sh: $(SRC7)
457: shar $(SRC7) >elvis7.sh
458:
459: elvis8.sh: $(SRC8)
460: shar $(SRC8) >elvis8.sh
461:
462: ##############################################################################
463:
464: # Under XENIX only! This stores all sources on a 3.5" 720k floppy disk.
465: floppy: $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8)
466: tar c5v $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.