1# Makefile for creating dungeon
2# Edit BIN DDIR and FFLAGS suitable for your system
3# Also, if you are running System V change the .F.o production
4#  and production for dinit.F as indicated.
5#
6# need SUFFIXES for System V (doesn't grok .F)
7.SUFFIXES: .F
8.c.o:
9	cc -c $(CFLAGS) $*.c
10.F.o:
11#	f77 -c $(FFLAGS) $*.F
12# For System V use the following production instead:
13	@/lib/cpp $(CPPFLAGS) $*.F > $*.f
14	f77 -c $(FFLAGS) $*.f
15	rm $*.f
16
17# define SYSV if running System V or V7
18# define SYSV *and* XELOS if running the XELOS OS
19CFLAGS = -O -DSYSV # -DXELOS -g -i
20# use -DNOCC if system does not react on carriage control (e.g. Unix)
21CPPFLAGS = -P -DNOCC -DSYSV # -DXELOS -Ddebug
22#
23# f77 compiler flags for BSD Vax (and other similar machines)
24#FOPTS = -q # -g -Ddebug
25# use -Nn650 for System V to increase default symbol table size
26# also, no -g flag (causes runtime errors)
27FOPTS = -q -Nn650
28# f77 compiler flags for pdp (64K split I/D)
29#FOPTS = -q -I2 -L1 -i -DPDP # -Ddebug
30FFLAGS = -O $(FOPTS)
31
32# flags for the loader
33LDFLAGS = # -s -g -v
34
35# Directory path for main program - default /usr/games
36BIN = /usr/games
37# Directory path for data files - default is /usr/games/lib/dunlib
38LIB = /usr/games/lib/dunlib
39DDIR = \'/usr/games/lib/dunlib
40DCDIR =\"/usr/games/lib/dunlib
41# Directory path for man page - default /usr/manl/man6
42MDIR = /usr/manl/man6
43# userid for wizard - allows invoking game debugging tool - default 0
44WIZDEF = -DWIZARDID=320
45
46HDRS =	advers.h clock.h curxt.h debug.h exits.h files.h flags.h\
47	gamestate.h io.h mindex.h objects.h oflags.h oindex.h\
48	parser.h puzzle.h rflag.h rindex.h rooms.h screen.h state.h\
49	verbs.h villians.h vocab.h xpars.h xsrch.h
50
51FSRC =  actors.F ballop.F clockr.F demons.F\
52	dgame.F dinit.F dmain.F dso1.F dso2.F\
53	dso3.F dso4.F dso5.F dso6.F dso7.F\
54	dsub.F dverb1.F dverb2.F exit.F gdt.F lightp.F\
55	nobjs.F np.F np1.F np2.F np3.F nrooms.F objcts.F\
56	rooms.F sobjs.F sverbs.F verbs.F villns.F
57
58CSRC =	cinit.c cio.c cspeak.c decode.c lex.c listen.c rtim.c
59
60OBJS =  actors.o ballop.o clockr.o demons.o\
61	dgame.o dinit.o dmain.o dso1.o dso2.o\
62	dso3.o dso4.o dso5.o dso6.o dso7.o\
63	dsub.o dverb1.o dverb2.o exit.o gdt.o lightp.o\
64	nobjs.o np.o np1.o np2.o np3.o nrooms.o objcts.o\
65	rooms.o rtim.o sobjs.o sverbs.o verbs.o villns.o
66
67PDPOBJS = cinit.o cio.o lex.o
68LISTEN = listen.o
69SPEAK = cspeak.o speak.o
70
71vax:	dungeon dtext.dat
72pdp:	dungpdp speak listen dtext.dat
73
74dungeon: $(OBJS)
75	f77 -o dungeon $(OBJS) $(LDFLAGS)
76	@echo done
77
78dungpdp: $(OBJS) $(PDPOBJS)
79	f77 -i -s -o dungpdp $(OBJS) $(PDPOBJS)
80	@echo done
81
82speak:	$(SPEAK)
83	f77 -i -s -o speak $(SPEAK)
84
85speak.o: speak.F
86#	f77 $(FFLAGS) -DDDIR=$(DDIR) -c speak.F
87# For System V use the following instead:
88	@/lib/cpp $(CPPFLAGS) speak.F > speak.f
89	f77 $(FFLAGS) -DDDIR=$(DDIR) -c speak.f
90	rm $*.f
91
92listen:	$(LISTEN)
93	cc $(CFLAGS) -o listen $(LISTEN)
94
95listen.o: listen.c
96	cc $(CFLAGS) -DCINDEXFILE=$(DCDIR)/dindx.dat\" -c listen.c
97
98dinit.o: dinit.F
99#	f77 $(FFLAGS) -DDDIR=$(DDIR) $(WIZDEF) -c dinit.F
100# For System V use the following instead:
101	@/lib/cpp $(CPPFLAGS) dinit.F > dinit.f
102	f77 $(FFLAGS) -DDDIR=$(DDIR) $(WIZDEF) -c dinit.f
103	rm $*.f
104
105# uncomment the following for Suns to get around an optimizer bug
106# -P means partial optimization.
107#objcts.o: objcts.F
108#	f77 $(FOPTS) -P -c objcts.F
109
110install-vax: vax
111	cp dungeon $(BIN)
112	-mkdir $(LIB)
113	cp dindx.dat dtext.dat $(LIB)
114	cp dungeon.6 $(MDIR)/dungeon.6
115
116install-pdp: pdp
117	cp dungeon.sh $(BIN)
118	-mkdir $(LIB)
119	cp dindx.dat dtext.dat rtext.dat dungpdp $(LIB)
120	cp dungeon.6 $(MDIR)/dungeon.6
121
122dtext.dat:
123	./maketxt.sh
124
125
126clean:
127	-rm $(OBJS) Mk* core makedep eddep
128
129depend:
130	grep '^#include' $(FSRC) $(CSRC) $(HDRS) | grep -v '<' | \
131	sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' \
132	    -e 's/\.c/.o/' \
133	    -e 's/\.F/.o/' \
134	    -e 's,../[a-zA-Z]*/,,' | \
135	awk ' { if ($$1 != prev) { print rec; rec = $$0; prev = $$1; } \
136		else { if (length(rec $$2) > 78) { print rec; rec = $$0; } \
137		       else rec = rec " " $$2 } } \
138	      END { print rec } ' > makedep
139	echo '$$r makedep' >>eddep
140	echo '/^# DO NOT DELETE THIS LINE/+1,$$d' >eddep
141	echo '$$r makedep' >>eddep
142	echo 'w' >>eddep
143	cp Makefile Makefile.bak
144	ed - Makefile < eddep
145	rm eddep makedep
146
147# DO NOT DELETE THIS LINE -- make depend uses it
148
149actors.o: parser.h gamestate.h rooms.h rflag.h rindex.h xsrch.h objects.h
150actors.o: oflags.h oindex.h clock.h advers.h verbs.h flags.h gamestate.h
151actors.o: debug.h rooms.h rflag.h rindex.h objects.h oflags.h oindex.h
152actors.o: villians.h flags.h
153ballop.o: parser.h gamestate.h state.h rooms.h rflag.h curxt.h xpars.h
154ballop.o: objects.h oflags.h oindex.h clock.h verbs.h flags.h
155clockr.o: gamestate.h state.h rooms.h rflag.h rindex.h objects.h oflags.h
156clockr.o: oindex.h clock.h curxt.h xsrch.h villians.h advers.h flags.h
157clockr.o: gamestate.h objects.h oflags.h clock.h
158demons.o: parser.h gamestate.h objects.h oflags.h oindex.h villians.h advers.h
159demons.o: verbs.h flags.h gamestate.h parser.h objects.h oflags.h clock.h
160demons.o: advers.h verbs.h gamestate.h curxt.h xsrch.h objects.h oindex.h
161demons.o: villians.h advers.h rindex.h objects.h oindex.h villians.h flags.h
162dgame.o: parser.h gamestate.h state.h io.h rooms.h rindex.h objects.h oflags.h
163dgame.o: oindex.h advers.h verbs.h flags.h parser.h villians.h gamestate.h
164dgame.o: objects.h advers.h
165dinit.o: files.h parser.h gamestate.h state.h screen.h mindex.h io.h debug.h
166dinit.o: rooms.h rflag.h rindex.h exits.h curxt.h xpars.h objects.h oindex.h
167dinit.o: clock.h villians.h advers.h flags.h
168dmain.o: parser.h gamestate.h state.h screen.h puzzle.h io.h debug.h rooms.h
169dmain.o: rflag.h rindex.h exits.h curxt.h xpars.h xsrch.h objects.h oflags.h
170dmain.o: oindex.h clock.h villians.h advers.h verbs.h flags.h
171dso1.o: gamestate.h rooms.h rflag.h objects.h oflags.h oindex.h advers.h
172dso1.o: flags.h gamestate.h objects.h oflags.h advers.h objects.h
173dso2.o: gamestate.h rooms.h rflag.h objects.h oindex.h advers.h gamestate.h
174dso2.o: state.h advers.h flags.h gamestate.h state.h clock.h advers.h flags.h
175dso3.o: rooms.h exits.h curxt.h xpars.h objects.h oflags.h
176dso4.o: objects.h oflags.h objects.h oflags.h objects.h state.h advers.h
177dso4.o: parser.h objects.h oflags.h oindex.h villians.h flags.h
178dso5.o: parser.h objects.h oflags.h verbs.h rooms.h rflag.h objects.h oflags.h
179dso5.o: advers.h objects.h
180dso6.o: rooms.h rflag.h rindex.h rindex.h flags.h
181dso7.o: rooms.h rflag.h rindex.h objects.h oflags.h flags.h flags.h
182dsub.o: gamestate.h mindex.h io.h parser.h objects.h debug.h objects.h
183dsub.o: objects.h objects.h parser.h gamestate.h state.h io.h debug.h rooms.h
184dsub.o: rflag.h rindex.h objects.h oflags.h oindex.h advers.h flags.h advers.h
185dsub.o: flags.h parser.h gamestate.h screen.h rooms.h rflag.h xsrch.h objects.h
186dsub.o: advers.h verbs.h flags.h
187dverb1.o: parser.h gamestate.h state.h objects.h oflags.h advers.h parser.h
188dverb1.o: gamestate.h rindex.h objects.h oflags.h advers.h verbs.h parser.h
189dverb1.o: gamestate.h objects.h oflags.h advers.h verbs.h parser.h gamestate.h
190dverb1.o: objects.h oflags.h verbs.h
191dverb2.o: parser.h gamestate.h state.h screen.h puzzle.h rooms.h exits.h
192dverb2.o: objects.h clock.h villians.h advers.h flags.h parser.h gamestate.h
193dverb2.o: state.h screen.h puzzle.h rooms.h exits.h objects.h clock.h
194dverb2.o: villians.h advers.h flags.h parser.h gamestate.h rooms.h rflag.h
195dverb2.o: curxt.h xsrch.h objects.h oflags.h clock.h villians.h advers.h
196dverb2.o: flags.h gamestate.h parser.h puzzle.h rooms.h rindex.h exits.h
197dverb2.o: curxt.h xpars.h xsrch.h objects.h oflags.h oindex.h advers.h flags.h
198gdt.o: parser.h gamestate.h state.h screen.h puzzle.h io.h mindex.h debug.h
199gdt.o: rooms.h rindex.h exits.h objects.h oindex.h clock.h villians.h advers.h
200gdt.o: flags.h
201lightp.o: parser.h gamestate.h objects.h oflags.h oindex.h clock.h verbs.h
202lightp.o: flags.h
203nobjs.o: parser.h gamestate.h state.h screen.h puzzle.h rooms.h rflag.h
204nobjs.o: rindex.h objects.h oflags.h oindex.h clock.h villians.h advers.h
205nobjs.o: verbs.h flags.h gamestate.h parser.h verbs.h flags.h
206np.o: parser.h io.h debug.h parser.h xsrch.h parser.h debug.h
207np1.o: parser.h gamestate.h debug.h objects.h oindex.h advers.h verbs.h vocab.h
208np2.o: parser.h gamestate.h debug.h objects.h oflags.h advers.h vocab.h
209np2.o: objects.h oflags.h vocab.h
210np3.o: parser.h vocab.h debug.h vocab.h parser.h objects.h parser.h parser.h
211np3.o: gamestate.h state.h objects.h oflags.h advers.h parser.h gamestate.h
212np3.o: objects.h oflags.h advers.h
213nrooms.o: parser.h gamestate.h state.h io.h rooms.h rflag.h rindex.h objects.h
214nrooms.o: oflags.h oindex.h xsrch.h clock.h advers.h verbs.h flags.h
215nrooms.o: gamestate.h flags.h rindex.h flags.h
216objcts.o: parser.h gamestate.h state.h rooms.h rflag.h rindex.h objects.h
217objcts.o: oflags.h oindex.h clock.h advers.h verbs.h flags.h
218rooms.o: parser.h gamestate.h state.h rooms.h rflag.h rindex.h objects.h
219rooms.o: oflags.h oindex.h clock.h villians.h advers.h verbs.h flags.h
220sobjs.o: parser.h gamestate.h state.h rooms.h rflag.h rindex.h objects.h
221sobjs.o: oflags.h oindex.h clock.h villians.h advers.h verbs.h flags.h
222sverbs.o: parser.h gamestate.h state.h screen.h io.h rooms.h rflag.h rindex.h
223sverbs.o: exits.h curxt.h xpars.h xsrch.h objects.h oflags.h oindex.h clock.h
224sverbs.o: advers.h verbs.h flags.h
225verbs.o: parser.h gamestate.h state.h rooms.h rflag.h rindex.h xsrch.h
226verbs.o: objects.h oflags.h oindex.h advers.h verbs.h clock.h
227villns.o: parser.h gamestate.h objects.h oflags.h oindex.h verbs.h flags.h
228villns.o: parser.h gamestate.h objects.h oflags.h oindex.h verbs.h flags.h
229villns.o: parser.h gamestate.h rindex.h objects.h oflags.h oindex.h clock.h
230villns.o: villians.h verbs.h flags.h
231