Net2/usr/src/contrib/isode/pepsy/Makefile

###############################################################################
#   Instructions to Make, for compilation of ISODE PEPSY process
###############################################################################

###############################################################################
#
# $Header: /f/osi/pepsy/RCS/Makefile,v 7.12 91/02/22 09:48:38 mrose Interim $
#
#
# $Log:	Makefile,v $
# Revision 7.12  91/02/22  09:48:38  mrose
# Interim 6.8
# 
# Revision 7.11  91/01/09  13:51:43  mrose
# foo
# 
# Revision 7.10  91/01/08  12:49:17  mrose
# update
# 
# Revision 7.9  90/12/23  18:42:01  mrose
# update
# 
# Revision 7.8  90/12/11  10:33:05  mrose
# sync
# 
# Revision 7.7  90/11/20  15:27:02  mrose
# update
# 
# Revision 7.6  90/11/11  10:53:31  mrose
# update
# 
# Revision 7.5  90/11/04  19:17:04  mrose
# update
# 
# Revision 7.4  90/09/07  17:34:18  mrose
# touch-up
# 
# Revision 7.3  90/08/08  14:14:12  mrose
# update
# 
# Revision 7.2  90/07/27  08:49:06  mrose
# update
# 
# Revision 7.1  90/07/09  14:52:16  mrose
# sync
# 
# Revision 7.0  90/07/01  19:54:10  mrose
# *** empty log message ***
# 
###############################################################################

###############################################################################
#
#				 NOTICE
#
#    Acquisition, use, and distribution of this module and related
#    materials are subject to the restrictions of a license agreement.
#    Consult the Preface in the User's Manual for the full terms of
#    this agreement.
#
###############################################################################


PEPYPATH=	-DPEPYPATH -DPEPSYPATH=\".:$(PEPSYDIRM)\" 

# to prevent a lot of unnecessary re-loading
PEPSYLIBES=	$(TOPDIR)psap/sprintoid.o $(TOPDIR)psap/pl_tables.o \
		$(TOPDIR)psap/oid_cmp.o $(TOPDIR)psap/oid_cpy.o \
		$(TOPDIR)psap/oid_free.o \
		$(TOPDIR)compat/asprintf.o $(TOPDIR)compat/serror.o \
		$(TOPDIR)compat/sprintb.o
LIBES   =	$(TOPDIR)libpsap.a $(TOPDIR)libcompat.a
LLIBS   =	$(TOPDIR)llib-lpsap $(TOPDIR)llib-lcompat
HFILES	=	$(HDIR)psap.h \
		$(HDIR)manifest.h $(HDIR)general.h $(HDIR)config.h

DRFILES	=	enc.o dec.o fre.o prnt.o util.o
SUPFILES=	vprint.o UNIV_tables.o pepsy_strings.o py_advise.o
LIBFILES=	$(DRFILES) $(SUPFILES)

CFILES	=	enc.c dec.c fre.c prnt.c main.c util.c  \
		vprint.c pepsy_strings.c py_advise.c

HFILES	=	$(TOPDIR)h/pepsy.h test_table.h
HEADERS	=	UNIV.ph UNIV-types.h UNIV_defs.h UNIV_pre_defs.h

OFILES	=	$(LIBFILES) main.o

T_FILES =	T1_tables.c T2_tables.c T3_tables.c


##################################################################
# Here it is...
##################################################################

all:		pepsy libpepsy # peptest
inst-all:	inst-pepsy inst-headers manuals # inst-libpepsy
install:	inst-all clean
lint:		l-pepsy l-libpepsy


##################################################################
# pepsy
##################################################################

inst-pepsy:	$(BINDIR)pepsy

$(BINDIR)pepsy:	xpepsy
		-cp $@ zxpepsy
		-rm -f $@
		cp xpepsy $@
		-@ls -gls $@
		-@echo ""

pepsy:		xpepsy

xpepsy:		pepsyvrsn.o $(PEPSYLIBES)
		$(LDCC) $(LDFLAGS) -o $@ pepsy.o pepsy-yacc.o pepsy_misc.o \
			pass2.o etabs.o dtabs.o ptabs.o dfns.o mod.o \
			pepsyvrsn.o $(PEPSYLIBES) $(LSOCKET) -lm

pepsy.o:	pepsy.c pepsydefs.h $(HFILES)
		$(CC) $(CFLAGS) -c pepsy.c

pepsyvrsn.c:	pepsy.o pepsy-yacc.o pepsy_misc.o pass2.o \
			etabs.o dtabs.o ptabs.o dfns.o mod.o 
		$(UTILDIR)version.sh pepsy > $@

pepsy-yacc.o:	pepsy-yacc.c lex.c
		$(CC) $(CFLAGS) -c pepsy-yacc.c

pepsy-yacc.c:	pepsy-yacc.y
		-@echo "expect 40 shift/reduce and 11 reduce/reduce conflicts"
		yacc $(YACCFLAGS) pepsy-yacc.y
		mv y.tab.c $@

pepsy-yacc.y:	yacc.y.gnrc
		$(UTILDIR)extract.sh PEPSY SCTRL < $? > $@

pepsy_misc.o:	pepsy_misc.c pepsydefs.h
		$(CC) $(CFLAGS) -c pepsy_misc.c

lex.c:		lex.l
		$(LEX) $(LEXFLAGS) lex.l
		mv lex.yy.c $@

lex.l:		lex.l.gnrc
		$(UTILDIR)extract.sh PEPSY < $? > $@

pepsydefs.h:	pepsydefs.h.gnrc
		$(UTILDIR)extract.sh PEPSY < $? > $@

pass2.o:	pass2.c
		$(CC) $(CFLAGS) -c pass2.c
etabs.o:	etabs.c
		$(CC) $(CFLAGS) -c etabs.c
dtabs.o:	dtabs.c
		$(CC) $(CFLAGS) -c dtabs.c
ptabs.o:	ptabs.c
		$(CC) $(CFLAGS) -c ptabs.c
dfns.o:		dfns.c
		$(CC) $(CFLAGS) -c dfns.c
mod.o:		mod.c
		$(CC) $(CFLAGS) -c mod.c


l-pepsy:	pepsy.c pepsy_misc.c pepsydefs.h pepsyvrsn.c true
		$(LINT) $(LFLAGS) -DPEPSYPATH=\".:$(PEPSYDIRM)\" pepsy.c \
			pepsy_misc.c  pepsyvrsn.c $(LLIBS) \
			| grep -v "warning: possible pointer alignment problem"


################################################################
# libpepsy
################################################################

inst-libpepsy:	$(LIBDIR)libpepsy.a inst-headers

libpepsy:	libpepsy.a true
		-@rm -f $(TOPDIR)h/UNIV*.h
		-@$(LN) UNIV-types.h $(TOPDIR)h/UNIV-types.h
		-@$(LN) UNIV_defs.h $(TOPDIR)h/UNIV_defs.h
		-@$(LN) UNIV_pre_defs.h $(TOPDIR)h/UNIV_pre_defs.h

libpepsy.a:     $(LIBFILES)
	        -rm -f $@
	        @$(UTILDIR)make-lib.sh $(SYSTEM) $(ARFLAGS) $@ $(LIBFILES)
	        -@rm -f $(TOPDIR)libpepsy.a
	        -@$(LN) libpepsy.a $(TOPDIR)libpepsy.a
	        -@ls -l $@
	        -@echo "PEPSY library built normally"

inst-headers:;	-mkdir $(PEPSYDIRM)
		@for h in $(HEADERS); do $(MAKE) TARGET=$$h inst-target; done

inst-target:	$(PEPSYDIR)$(TARGET)

$(PEPSYDIR)$(TARGET):	$(TARGET)
		-cp $@ z$(TARGET)
		cp $(TARGET) $@
		-@ls -gls $@
		-@echo ""

UNIV_tables.o:	UNIV_tables.c UNIV-types.h

UNIV-types.h UNIV_tables.c: UNIV.py xpepsy
		./xpepsy -A -f -h -m UNIV.py

l-libpepsy:	$(CFILES) $(T_FILES) true
		$(LINT) $(LFLAGS) $(CFILES) $(T_FILES) \
			$(LLIBS) \
			| grep -v "warning: possible pointer alignment problem"

vprint.o:	UNIV-types.h $(HDIR)psap.h $(HDIR)general.h $(HDIR)manifest.h \
		$(HDIR)logger.h


##################################################################
# pep
##################################################################
alltests:	tabletest peptest

peptest:	pep.results pep.output
		-diff pep.output pep.results
		touch peptest

pep.results:	pep
		./pep > pep.results

tabletest:	xpepsy t1test t2test t3test psap2test acsaptest ftamtest 

psap2test:	../psap2/PS_tables.c ../psap2/PS-types.h
	./xpepsy -A -f -h -m ../psap2/ps.py
	-diff ../psap2/PS_tables.c . | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-diff ../psap2/PS-types.h . | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-rm -f PS_tables.c PS-types.h 

acsaptest:	../acsap/ACS_tables.c ../acsap/ACS-types.h
	./xpepsy -A -f -h -m ../acsap/acs.py
	-diff ../acsap/ACS_tables.c . | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-diff ../acsap/ACS-types.h . | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-rm -f ACS_tables.c ACS-types.h 

ftamtest:	../ftam/FTAM_tables.c ../ftam/FTAM-types.h
	./xpepsy -A -f -h -m ../ftam/ftam.py
	-diff ../ftam/FTAM_tables.c . | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-diff ../ftam/FTAM-types.h . | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-rm -f FTAM_tables.c FTAM-types.h 

fadutest:	../ftam/FADU_tables.c ../ftam/FADU-types.h
	./xpepsy -A -f -h -m ../ftam/fadu.py
	-diff ../ftam/FADU_tables.c . | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-diff ../ftam/FADU-types.h . | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-rm -f FADU_tables.c FADU-types.h 

t1test:	T1_tables.c T1-types.h
	mv T1_tables.c T1_tables.c_orig
	mv T1-types.h T1-types.h_orig
	./xpepsy -A -f -m t1.py
	-diff T1_tables.c_orig T1_tables.c | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-diff T1-types.h_orig T1-types.h | grep -v "^[><] # line" \
		| grep -v "do not edit"

t2test:	T2_tables.c T2-types.h
	mv T2_tables.c T2_tables.c_orig
	mv T2-types.h T2-types.h_orig
	./xpepsy -A -f -m t2.py
	-diff T2_tables.c_orig T2_tables.c | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-diff T2-types.h_orig T2-types.h | grep -v "^[><] # line" \
		| grep -v "do not edit"

t3test:	T3_tables.c T3-types.h
	mv T3_tables.c T3_tables.c_orig
	mv T3-types.h T3-types.h_orig
	./xpepsy -A -f -m -i pepsy-refs.h t3.py
	-diff T3_tables.c_orig T3_tables.c | grep -v "^[><] # line" \
		| grep -v "do not edit"
	-diff T3-types.h_orig T3-types.h | grep -v "^[><] # line" \
		| grep -v "do not edit"

PEPLIBS	=	../libpsap.a ../libcompat.a
PEPFILES=	T1_tables.o T2_tables.o T3_tables.o $(OFILES) $(PEPLIBS) # malloctrace.a

pep:		$(PEPFILES)
		#$(LDCC) $(LDFLAGS) -o pep $(PEPFILES) malloctrace.a $(LSOCKET)
		$(LDCC) $(LDFLAGS) -o pep $(PEPFILES) $(LSOCKET) -lm

pep-saber:	$(PEPFILES)
		#load $(CFLAGS) (PEPFILES)

main.o: 	T1-types.h test_table.h main.c
		$(CC) $(CFLAGS) -DPRNT=1 -c main.c

enc.o:		enc.c pepsy-driver.h
		$(CC) $(LIBCFLAGS) -c enc.c

dec.o:		dec.c pepsy-driver.h
		$(CC) $(LIBCFLAGS) -c dec.c

prnt.o: 	prnt.c pepsy-driver.h
		$(CC) $(LIBCFLAGS) -c prnt.c

util.o: 	util.c pepsy-driver.h
		$(CC) $(LIBCFLAGS) -c util.c

T1_tables.o:	T1_tables.c T1-types.h UNIV-types.h

T1_tables.c T1-types.h:	t1.py xpepsy
		./xpepsy -A -f -m t1.py

T1_tables.c:	T2-types.h T3-types.h

T2_tables.o:	T2_tables.c T2-types.h UNIV-types.h

T2_tables.c T2-types.h:	t2.py xpepsy
		./xpepsy -A -f -m t2.py

T3_tables.o:	T3_tables.c T3-types.h UNIV-types.h

T3_tables.c T3-types.h:	t3.py xpepsy
		./xpepsy -A -f -m -i pepy-refs.h t3.py

prt.o:		prnt.c $(TOPDIR)h/pepsy.h
		$(CC) $(CFLAGS) -Dprintf=vprint -o $@ prnt.c


################################################################
# manual pages
################################################################

MANUALS	=	pepsy.1 # libpepsy.3

manuals:;	@$(UTILDIR)inst-man.sh $(MANOPTS) $(MANUALS)
		-@echo ""


################################################################
# clean
################################################################

clean:;		rm -f *.o *.a x* z* _* core pepsydefs.h *yacc.y *yacc.c lex.l \
			lex.c *.ph UNIV_* UNIV-* _* core $(TOPDIR)h/UNIV*.h \
			pp.c pp pep libpepsy.a pepsy-yacc.y T1* T2* T3* t? \
			peptest pep.results

grind:;		iprint Makefile
		tgrind -lc pepsydefs.h pepsy.c pepsy.c pepsyvrsn.c
		tgrind -ly yacc.y lex.l
		tgrind -lpepsy -d $(TOPDIR)pepy/grindefs UNIV.py
		tgrind -lc $(CFILES)
		@echo $(MANUALS) | \
			tr " " "\012" | \
			sed -e "s%.*%itroff -man &%" | \
			sh -ve

true:;