1#  Copyright (c) 1993-1994 Mats O Jansson, Stockholm, Sweden
2#  All rights reserved.
3#
4# @(#) $OpenBSD: Makefile,v 1.6 2022/12/28 21:30:17 jmc Exp $
5
6# Script (or program) that returns the machine and os types,
7# or just edit in the name yourself.
8MD=`./mdtype`
9OS=`./ostype`
10REL=`cat ../common/VERSION`
11
12CCOPT = -O
13INCLUDES = -I..
14#rs6000-aix3#DEFINES = -D_AIX -D_BSD
15
16#mopchk#SPEC_FLAGS=	-DNODL -DNOAOUT
17#mopd#SPEC_FLAGS=	-DNOAOUT
18#mopprobe#SPEC_FLAGS=	-DNODL
19#moptrace#SPEC_FLAGS=
20
21# Standard CFLAGS
22STANDARD_CFLAGS = $(CCOPT) $(SPEC_FLAGS) $(DEFINES) $(INCLUDES)
23
24# CFLAGS definitions per machine vs. os
25#sun3-sunos4#CFLAGS = $(STANDARD_CFLAGS)
26#sun4-sunos4#CFLAGS = $(STANDARD_CFLAGS)
27#sun4-sunos5#CFLAGS = $(STANDARD_CFLAGS) -DDLPIPF
28#rs6000-aix3#CFLAGS = $(STANDARD_CFLAGS)
29#alpha-linux2#CFLAGS = $(STANDARD_CFLAGS)
30#i386-linux2#CFLAGS = $(STANDARD_CFLAGS)
31#sparc-linux2#CFLAGS = $(STANDARD_CFLAGS)
32
33#sun4-sunos5#LIB = -lsocket
34
35INSTBIN="#"
36INSTMAN="#"
37#alpha-linux2#INSTBIN=	install -c -s -o root -g root -m 755
38#alpha-linux2#INSTMAN=	install -c -o root -g root -m 644
39#i386-linux2#INSTBIN=	install -c -s -o root -g root -m 755
40#i386-linux2#INSTMAN=	install -c -o root -g root -m 644
41#sparc-linux2#INSTBIN=	install -c -s -o root -g root -m 755
42#sparc-linux2#INSTMAN=	install -c -o root -g root -m 644
43
44# Change these to cc/lex/yacc if you don't have gcc, flex and/or bison.
45CC = cc 
46LEX = lex
47YACC = yacc -y
48MAKE = make
49
50# Explicitly define compilation rule since SunOS 4's make doesn't like gcc.
51# Also, gcc does not remove the .o before forking 'as', which can be a
52# problem if you don't own the file but can write to the directory.
53.c.o:
54	rm -f $@; $(CC) $(CFLAGS) -c $*.c
55
56DIRS=	mopchk mopd mopprobe moptrace
57
58CHDOC=	mopchk.1
59CHFIL=	mopchk.c
60CHOBJ=	mopchk.o
61CHHDR=	
62LDDOC=	mopd.8
63LDFIL=	mopd.c process.c
64LDOBJ=	mopd.o process.o
65LDHDR=	process.h
66PBDOC=	mopprobe.1
67PBFIL=	mopprobe.c
68PBOBJ=	mopprobe.o
69PBHDR=
70TRDOC=	moptrace.1
71TRFIL=	moptrace.c
72TROBJ=	moptrace.o
73TRHDR=
74
75#sun3-sunos4#OSHDR=	os-sunos4.h
76#sun3-sunos4#PFFIL=	pf-snit.c
77#sun3-sunos4#LOOP=	loop.c
78
79#sun4-sunos4#OSHDR=	os-sunos4.h
80#sun4-sunos4#PFFIL=	pf-snit.c
81#sun4-sunos4#LOOP=	loop.c
82
83#rs6000-aix3#OSHDR=	os-aix3.h
84#rs6000-aix3#PFFIL=	pf-aix3.c
85#rs6000-aix3#LOOP=	loop.c
86
87#alpha-linux2#OSHDR=	os-linux2.h
88#alpha-linux2#PFFIL=	pf-linux2.c
89#alpha-linux2#LOOP=	loop-linux2.c
90
91#i386-linux2#OSHDR=	os-linux2.h
92#i386-linux2#PFFIL=	pf-linux2.c
93#i386-linux2#LOOP=	loop-linux2.c
94
95#sparc-linux2#OSHDR=	os-linux2.h
96#sparc-linux2#PFFIL=	pf-linux2.c
97#sparc-linux2#LOOP=	loop-linux2.c
98
99#mopchk#COFIL=	device.c file.c mopdef.c
100#mopchk#COOBJ=	device.o file.o mopdef.o
101#mopchk#OTOBJ=	pf.o loop.o
102#mopchk#MANDIR=man1
103
104#mopd#COFIL=	cmp.c device.c dl.c file.c get.c mopdef.c nma.c print.c put.c rc.c
105#mopd#COOBJ=	cmp.o device.o dl.o file.o get.o mopdef.o nma.o print.o put.o rc.o
106#mopd#OTOBJ=	pf.o loop.o
107#mopd#MANDIR=man8
108
109#mopprobe#COFIL=	cmp.c device.c get.c mopdef.c nma.c print.c
110#mopprobe#COOBJ=	cmp.o device.o get.o mopdef.o nma.o print.o
111#mopprobe#OTOBJ=	pf.o loop.o
112#mopprobe#MANDIR=man1
113
114#moptrace#COFIL=	cmp.c device.c dl.c get.c mopdef.c nma.c print.c rc.c
115#moptrace#COOBJ=	cmp.o device.o dl.o get.o mopdef.o nma.o print.o rc.o
116#moptrace#OTOBJ=	pf.o loop.o
117#moptrace#MANDIR=man1
118
119toplvl:	osmake
120
121oslvl:	submake
122
123#mopchk#image:	mopchk
124
125#mopd#image:	mopd
126
127#mopprobe#image:	mopprobe
128
129#moptrace#image:	moptrace
130
131MFLAGS=
132
133osmake:	force
134	@dir=$(MD)-$(OS); \
135	if [ ! -d $$dir ]; then ${MAKE} ${MFLAGS} config; fi; \
136	cd $$dir; ${MAKE} ${MFLAGS}
137
138submake: force
139	-@for i in $(DIRS); do if [ ! -d $$i ]; then mkdir $$i; chmod ug+w $$i; \
140	sed -e "/^oslvl:/d" -e "s/^#$$i#//" Makefile >$$i/Makefile; \
141	chmod ug+w $$i/Makefile; cd $$i; \
142	${MAKE} ${MFLAGS} files; cd ..; fi; done; \
143	for i in $(DIRS); do cd $$i; ${MAKE} ${MFLAGS}; cd ..; done
144
145osinstall: force
146	@os=$(OS); \
147	if [ -d $$os ]; then (cd $$os; ${MAKE} ${MFLAGS} INSTALL="$(INSTALL)" install); fi;
148
149install: osinstall
150	@dir=$(MD)-$(OS); cd $$dir; \
151	for i in $(DIRS); do cd $$i; ${MAKE} ${MFLAGS} INSTALL="$(INSTALL)" inst; cd ..; done;
152
153config:
154	@md=$(MD); os=$(OS); dir=$$md-$$os; \
155	mkdir $$dir; chmod ug+w $$dir; \
156	sed -e "/^toplvl:/d" -e "s/^#$$dir#//" Makefile >$$dir/Makefile; \
157	chmod ug+w $$dir/Makefile
158
159tar:
160	@rel=$(REL); cd ..; \
161	tar -cf ../mopd-$$rel.tar [M]* c*/[Va-z]* m*/[MTa-np-z]* otherOS/*.[ch] otherOS/[M]* otherOS/*type otherOS/linux2/[Mm]*; \
162	gzip -9 ../mopd-$$rel.tar
163
164#mopchk#files:	force
165#mopchk#	echo "Adding files in mopchk"; \
166#mopchk#	ln -s ../../../common common; \
167#mopchk#	for i in $(CHFIL) $(CHHDR) $(CHDOC); do ln -s ../../../mopchk/$$i $$i; done; \
168#mopchk#	for i in $(COFIL); do ln -s ../../../common/$$i $$i; done; \
169#mopchk#	ln -s ../../$(OSHDR) os.h; ln -s ../../$(PFFIL) pf.c; \
170#mopchk#	ln -s ../../$(LOOP) loop.c
171
172#mopchk#inst:	mopchk
173#mopchk#	echo "Installing files in mopchk";
174#mopchk#	$(INSTBIN) $< $(INSTALL)/usr/sbin
175#mopchk#	$(INSTMAN) $(CHDOC) $(INSTALL)/usr/man/$(MANDIR)
176
177#mopd#files:	force
178#mopd#	echo "Adding files in mopd"; \
179#mopd#	ln -s ../../../common common; \
180#mopd#	for i in $(LDFIL) $(LDHDR) $(LDDOC); do ln -s ../../../mopd/$$i $$i; done; \
181#mopd#	for i in $(COFIL); do ln -s ../../../common/$$i $$i; done; \
182#mopd#	ln -s ../../$(OSHDR) os.h; ln -s ../../$(PFFIL) pf.c; \
183#mopd#	ln -s ../../$(LOOP) loop.c
184
185#mopd#inst:	mopd
186#mopd#	echo "Installing files in mopd";
187#mopd#	$(INSTBIN) $< $(INSTALL)/usr/sbin
188#mopd#	$(INSTMAN) $(LDDOC) $(INSTALL)/usr/man/$(MANDIR)
189
190#mopprobe#files:	force
191#mopprobe#	echo "Adding files in mopprobe"; \
192#mopprobe#	ln -s ../../../common common; \
193#mopprobe#	for i in $(PBFIL) $(PBHDR) $(PBDOC); do ln -s ../../../mopprobe/$$i $$i; done; \
194#mopprobe#	for i in $(COFIL); do ln -s ../../../common/$$i $$i; done; \
195#mopprobe#	ln -s ../../$(OSHDR) os.h; ln -s ../../$(PFFIL) pf.c; \
196#mopprobe#	ln -s ../../$(LOOP) loop.c
197
198#mopprobe#inst:	mopprobe
199#mopprobe#	echo "Installing files in mopprobe";
200#mopprobe#	$(INSTBIN) $< $(INSTALL)/usr/sbin
201#mopprobe#	$(INSTMAN) $(PBDOC) $(INSTALL)/usr/man/$(MANDIR)
202
203#moptrace#files:	force
204#moptrace#	echo "Adding files in moptrace"; \
205#moptrace#	ln -s ../../../common common; \
206#moptrace#	for i in $(TRFIL) $(TRHDR) $(TRDOC); do ln -s ../../../moptrace/$$i $$i; done; \
207#moptrace#	for i in $(COFIL); do ln -s ../../../common/$$i $$i; done; \
208#moptrace#	ln -s ../../$(OSHDR) os.h; ln -s ../../$(PFFIL) pf.c; \
209#moptrace#	ln -s ../../$(LOOP) loop.c
210
211#moptrace#inst:	moptrace
212#moptrace#	echo "Installing files in moptrace";
213#moptrace#	$(INSTBIN) $< $(INSTALL)/usr/sbin
214#moptrace#	$(INSTMAN) $(TRDOC) $(INSTALL)/usr/man/$(MANDIR)
215
216mopchk:	$(CHOBJ) $(COOBJ) $(OTOBJ) version.o
217	$(CC) $(CFLAGS) -o $@ $(CHOBJ) $(COOBJ) $(OTOBJ) version.o $(LIB)
218
219mopd:	$(LDOBJ) $(COOBJ) $(OTOBJ) version.o
220	$(CC) $(CFLAGS) -o $@ $(LDOBJ) $(COOBJ) $(OTOBJ) version.o $(LIB)
221
222mopprobe: $(PBOBJ) $(COOBJ) $(OTOBJ) version.o
223	$(CC) $(CFLAGS) -o $@ $(PBOBJ) $(COOBJ) $(OTOBJ) version.o $(LIB)
224
225moptrace: $(TROBJ) $(COOBJ) $(OTOBJ) version.o
226	$(CC) $(CFLAGS) -o $@ $(TROBJ) $(COOBJ) $(OTOBJ) version.o $(LIB)
227
228VERSION: 
229	@ln -s ../../../common/VERSION VERSION
230
231version.o: version.c
232version.c version.h: VERSION
233	rm -f version.c ; sed 's/.*/char version[] = "&";/' VERSION > version.c
234	set `sed 's/\([0-9]*\)\.\([0-9]*\).*/\1 \2/' VERSION` ; \
235		{ echo '#define VERSION_MAJOR' $$1 ; \
236		  echo '#define VERSION_MINOR' $$2 ; } > version.h
237
238force:	/tmp
239