|
|
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:
40: #---- These settings are recommended for Coherent ----
41: O=.o
42: E=
43: EXTRA=
44: EXTRA2=
45: LIBS= -lterm
46: BIN= /usr/bin
47: CC= cc
48: CFLAGS= -O -DCOHERENT -DCRUNCH -DNO_CHARATTR -DNO_CURSORSHAPE \
49: -DNO_DIGRAPH -DNO_MKEXRC
50: OF= -o
51: RF= -c
52: DATE= -DDATE=\'\"`date`\"\'
53: EVAL= eval
54: PROGS= elvis$E ctags$E ref$E virec$E refont$E
55: CHMEM= fixstack 2000 $(DESTDIR)elvis$E
56: SORT=
57: INST= inst.unix
58: RM= rm -f
59: PR1= refont -b
60: PR2= >Elvis.doc
61: DUMMY=
62: DOC= doc/
63: DESTDIR= /interim/usr/bin/
64:
65:
66: ###########################################################################
67: ###########################################################################
68: ### ###
69: ### The rest of this Makefile contains no user-servicable parts ###
70: ### ###
71: ###########################################################################
72: ###########################################################################
73:
74: OBJS= blk$O cmd1$O cmd2$O curses$O cut$O ex$O input$O main$O misc$O \
75: modify$O move1$O move2$O move3$O move4$O move5$O opts$O recycle$O \
76: redraw$O regexp$O regsub$O system$O tio$O tmp$O vars$O vcmd$O \
77: vi$O
78:
79: ALIAS= alias$O
80:
81: DOCS= $(DOC)index.doc $(DOC)intro.doc $(DOC)visual.doc $(DOC)ex.doc \
82: $(DOC)regexp.doc $(DOC)options.doc $(DOC)cutbufs.doc $(DOC)differ.doc \
83: $(DOC)internal.doc $(DOC)cflags.doc $(DOC)termcap.doc \
84: $(DOC)environ.doc $(DOC)versions.doc
85:
86: SRC1= README $(DOC)intro.doc $(DOC)visual.doc $(DOC)ex.doc \
87: $(DOC)versions.doc $(DOC)cflags.doc $(DOC)differ.doc
88: SRC2= $(DOC)cutbufs.doc $(DOC)options.doc $(DOC)environ.doc $(DOC)regexp.doc \
89: $(DOC)internal.doc $(DOC)termcap.doc $(DOC)index.doc $(DOC)ctags.man \
90: $(DOC)elvis.man $(DOC)ref.man $(DOC)refont.man $(DOC)virec.man
91: SRC3= Elvis.lnk Elvis.mak Elvis.prj Makefile.mix alias.c atari.c \
92: ctags.c pc.c ref.c shell.c sysdos.c virec.c wildcard.c \
93: profile.sh osk.c osk.h date.c
94: SRC4= blk.c cmd1.c cmd2.c config.h curses.c
95: SRC5= curses.h cut.c ex.c input.c main.c misc.c
96: SRC6= modify.c move1.c move2.c move3.c move4.c move5.c opts.c recycle.c \
97: redraw.c
98: SRC7= regexp.c regexp.h regsub.c system.c tinytcap.c tio.c tmp.c
99: SRC8= vars.c vcmd.c vi.c vi.h refont.c
100:
101: ###########################################################################
102:
103: all: $(PROGS)
104: @echo done.
105:
106: elvis$E: $(OBJS) $(EXTRA) $(EXTRA2)
107: $(CC) $(CFLAGS) $(OF) $(DESTDIR)elvis$E $(OBJS) $(EXTRA) $(EXTRA2) $(LIBS)
108: -$(CHMEM)
109: su root chown bin $(DESTDIR)elvis
110: su root chgrp bin $(DESTDIR)elvis
111: su root chmod 755 $(DESTDIR)elvis
112: su root ln -f $(DESTDIR)elvis $(DESTDIR)vi
113: su root ln -f $(DESTDIR)elvis $(DESTDIR)ex
114: su root ln -f $(DESTDIR)elvis $(DESTDIR)view
115: su root ln -f $(DESTDIR)elvis $(DESTDIR)input
116:
117: ctags$E: ctags.c
118: $(CC) $(CFLAGS) $(SORT) $(OF) $(DESTDIR)ctags$E ctags.c
119: su root chown bin $(DESTDIR)ctags
120: su root chgrp bin $(DESTDIR)ctags
121: su root chmod 511 $(DESTDIR)ctags
122:
123: ref$E: ref.c
124: $(CC) $(CFLAGS) $(OF) $(DESTDIR)ref$E ref.c
125: su root chown bin $(DESTDIR)ref
126: su root chgrp bin $(DESTDIR)ref
127: su root chmod 511 $(DESTDIR)ref
128:
129: virec$E: virec.c
130: $(CC) $(CFLAGS) $(OF) $(DESTDIR)virec$E virec.c $(EXTRA2)
131: su root chown bin $(DESTDIR)virec
132: su root chgrp bin $(DESTDIR)virec
133: su root chmod 511 $(DESTDIR)virec
134:
135: view$E: $(ALIAS)
136: $(CC) $(CFLAGS) $(OF) view$E $(ALIAS)
137:
138: ex$E: $(ALIAS)
139: $(CC) $(CFLAGS) $(OF) ex$E $(ALIAS)
140:
141: vi$E: $(ALIAS)
142: $(CC) $(CFLAGS) $(OF) vi$E $(ALIAS)
143:
144: input$E: $(ALIAS)
145: $(CC) $(CFLAGS) $(OF) input$E $(ALIAS)
146:
147: wildcard$E: wildcard.c
148: $(CC) $(CFLAGS) $(OF) wildcard$E wildcard.c
149:
150: refont$E: refont.c
151: $(CC) $(CFLAGS) $(OF) refont$E refont.c $(EXTRA2)
152:
153: ##############################################################################
154:
155: # The file cmd1.c is compiled with the extra flag -DDATE="today's date".
156: cmd1$O: cmd1.c vi.h config.h
157: $(EVAL) $(CC) $(CFLAGS) $(RF) $(DATE) cmd1.c
158:
159: # "It all depends..."
160: $(OBJS): vi.h curses.h config.h
161:
162: # OS9 must create a custom date.c file, and compile it.
163: date$O: $(OBJS)
164: @echo '/* compilation date of elvis */' >-date.c
165: @echo -r 'char date[] = "' >+date.c
166: @echo -r 'echo -r ' >-/dd/tmp/date.c
167: @date >+/dd/tmp/date.c
168: @shell /dd/tmp/date.c >+date.c
169: @echo '";' >+date.c
170: @del /dd/tmp/date.c
171: $(CC) $(CFLAGS) $(RF) date.c
172:
173: ##############################################################################
174: install: $(INST)
175: @echo Installation complete.
176:
177: inst.unix: $(DUMMY)
178: su root chown bin $(DESTDIR)elvis
179: su root chgrp bin $(DESTDIR)elvis
180: su root chmod 755 $(DESTDIR)elvis
181: su root ln $(DESTDIR)elvis $(DESTDIR)vi
182: su root ln $(DESTDIR)elvis $(DESTDIR)ex
183: su root ln $(DESTDIR)elvis $(DESTDIR)view
184: su root ln $(DESTDIR)elvis $(DESTDIR)input
185:
186: inst.dos: $(DUMMY)
187: copy $(PROGS) $(BIN)
188: copy $(BIN)/ex$E $(BIN)/vi$E
189: copy $(BIN)/ex$E $(BIN)/view$E
190: copy $(BIN)/ex$E $(BIN)/input$E
191:
192: inst.os9: $(DUMMY)
193: copy $(PROGS) -rw=$(BIN)
194: chd $(BIN); attr -epenprnpw $(PROGS)
195:
196: ##############################################################################
197: clean: $(DUMMY)
198: $(RM) *$O $(DOC)*.1 elvis?.uue elvis?.sh core
199:
200: clobber: clean
201: $(RM) tags refs $(PROGS)
202:
203: ##############################################################################
204: print: refont$E
205: $(PR1) $(DOCS) $(PR2)
206:
207: tags refs: ctags$E
208: ./ctags -r *.c *.h
209:
210: ##############################################################################
211: uue: elvis1.uue elvis2.uue elvis3.uue elvis4.uue elvis5.uue \
212: elvis6.uue elvis7.uue elvis8.uue
213:
214: elvis1.uue: $(SRC1)
215: tar cf elvis1.tar $(SRC1)
216: compress -b13 elvis1.tar
217: cp README elvis1.uue
218: uue elvis1.tar.Z - >>elvis1.uue
219: $(RM) elvis1.tar*
220:
221: elvis2.uue: $(SRC2)
222: tar cf elvis2.tar $(SRC2)
223: compress -b13 elvis2.tar
224: uue elvis2.tar.Z
225: $(RM) elvis2.tar*
226:
227: elvis3.uue: $(SRC3)
228: tar cf elvis3.tar $(SRC3)
229: compress -b13 elvis3.tar
230: uuencode elvis3.tar.Z <elvis3.tar.Z >elvis3.uue
231: $(RM) elvis3.tar*
232:
233: elvis4.uue: $(SRC4)
234: tar cf elvis4.tar $(SRC4)
235: compress -b13 elvis4.tar
236: uuencode elvis4.tar.Z <elvis4.tar.Z >elvis4.uue
237: $(RM) elvis4.tar*
238:
239: elvis5.uue: $(SRC5)
240: tar cf elvis5.tar $(SRC5)
241: compress -b13 elvis5.tar
242: uuencode elvis5.tar.Z <elvis5.tar.Z >elvis5.uue
243: $(RM) elvis5.tar*
244:
245: elvis6.uue: $(SRC6)
246: tar cf elvis6.tar $(SRC6)
247: compress -b13 elvis6.tar
248: uuencode elvis6.tar.Z <elvis6.tar.Z >elvis6.uue
249: $(RM) elvis6.tar*
250:
251: elvis7.uue: $(SRC7)
252: tar cf elvis7.tar $(SRC7)
253: compress -b13 elvis7.tar
254: uuencode elvis7.tar.Z <elvis7.tar.Z >elvis7.uue
255: $(RM) elvis7.tar*
256:
257: elvis8.uue: $(SRC8)
258: tar cf elvis8.tar $(SRC8)
259: compress -b13 elvis8.tar
260: uuencode elvis8.tar.Z <elvis8.tar.Z >elvis8.uue
261: $(RM) elvis8.tar*
262:
263: ##############################################################################
264: sh: elvis1.sh elvis2.sh elvis3.sh elvis4.sh elvis5.sh elvis6.sh \
265: elvis7.sh elvis8.sh
266:
267: elvis1.sh: $(SRC1)
268: cat >elvis1.sh README
269: echo >>elvis1.sh ': ------------------------ CUT HERE --------------------'
270: echo >>elvis1.sh 'test -d doc || mkdir doc || exit 2'
271: shar >>elvis1.sh -h $(SRC1)
272:
273: elvis2.sh: $(SRC2)
274: echo >elvis2.sh ': ------------------------ CUT HERE --------------------'
275: echo >>elvis2.sh 'test -d doc || mkdir doc || exit 2'
276: shar >>elvis2.sh -h $(SRC2)
277:
278: elvis3.sh: $(SRC3)
279: shar $(SRC3) >elvis3.sh
280:
281: elvis4.sh: $(SRC4)
282: shar $(SRC4) >elvis4.sh
283:
284: elvis5.sh: $(SRC5)
285: shar $(SRC5) >elvis5.sh
286:
287: elvis6.sh: $(SRC6)
288: shar $(SRC6) >elvis6.sh
289:
290: elvis7.sh: $(SRC7)
291: shar $(SRC7) >elvis7.sh
292:
293: elvis8.sh: $(SRC8)
294: shar $(SRC8) >elvis8.sh
295:
296: ##############################################################################
297:
298: # Under XENIX only! This stores all sources on a 3.5" 720k floppy disk.
299: floppy: $(SRC1) $(SRC2) $(SRC3) $(SRC4) $(SRC5) $(SRC6) $(SRC7) $(SRC8)
300: 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.