Net2/usr/src/contrib/isode/rosy/Makefile

###############################################################################
#   Instructions to Make, for compilation of ISODE ROSY processes
###############################################################################

###############################################################################
#
# $Header: /f/osi/rosy/RCS/Makefile,v 7.7 91/02/22 09:41:41 mrose Interim $
#
#
# $Log:	Makefile,v $
# Revision 7.7  91/02/22  09:41:41  mrose
# Interim 6.8
# 
# Revision 7.6  91/01/07  12:41:18  mrose
# update
# 
# Revision 7.5  90/12/23  18:42:46  mrose
# update
# 
# Revision 7.4  90/11/04  19:16:03  mrose
# update
# 
# Revision 7.3  90/07/27  08:47:32  mrose
# update
# 
# Revision 7.2  90/07/09  14:47:56  mrose
# sync
# 
# Revision 7.1  90/07/01  21:06:17  mrose
# pepsy
# 
# Revision 6.2  89/07/30  12:16:24  mrose
# real
# 
# Revision 6.1  89/07/22  16:05:53  mrose
# bsd44
# 
# Revision 6.0  89/03/18  23:42:35  mrose
# Release 5.0
# 
###############################################################################

###############################################################################
#
#				 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.
#
###############################################################################

.SUFFIXES:	.ry .py .c .o

.ry.py:;	./xrosy $(RYFLAGS) $<


PEPYLIBES=	$(TOPDIR)psap/sprintoid.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 $(TOPDIR)compat/sstr2arg.o
LIBES   =	$(TOPDIR)libpsap.a $(TOPDIR)libcompat.a
LLIBS   =	$(TOPDIR)llib-lpsap $(TOPDIR)llib-lcompat
HFILES	=	$(HDIR)rosy.h $(HDIR)rosap.h $(HDIR)acsap.h $(HDIR)psap2.h \
		$(HDIR)psap.h $(HDIR)ssap.h $(HDIR)isoaddrs.h \
		$(HDIR)manifest.h $(HDIR)general.h $(HDIR)config.h
PEPSYFILES=	$(HDIR)pepsy.h $(TOPDIR)pepsy/xpepsy
RYHFILES=	rosy-defs.h $(HDIR)psap.h \
		$(HDIR)manifest.h $(HDIR)general.h $(HDIR)config.h


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

all:		rosy librosy
inst-all:	inst-rosy manuals # inst-librosy
install:	inst-all clean
lint:		l-rosy l-librosy


##################################################################
# rosy
##################################################################

inst-rosy:	$(BINDIR)rosy

$(BINDIR)rosy:	xrosy
		-cp $@ zxrosy
		-rm -f $@
		cp xrosy $@
		-@ls -gls $@
		-@echo ""

rosy:		xrosy

xrosy:		rosyvrsn.o $(PEPYLIBES)
		$(LDCC) $(LDFLAGS) -o $@ rosy.o yacc.o pepsy_misc.o \
			rosyvrsn.o $(PEPYLIBES) $(LSOCKET) -lm

rosy.o:		rosy.c $(RYHFILES)
		$(CC) $(CFLAGS) -c $*.c

pepsy_misc.o:	$(TOPDIR)pepsy/pepsy_misc.c
		$(CC) $(CFLAGS) -c $?

rosyvrsn.c:	rosy.o yacc.o pepsy_misc.o
		@$(UTILDIR)version.sh rosy > $@

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

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

yacc.y:		$(TOPDIR)pepy/yacc.y.gnrc
		$(UTILDIR)extract.sh ROSY < $? > $@

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

lex.l:		$(TOPDIR)pepy/lex.l.gnrc
		$(UTILDIR)extract.sh ROSY < $? > $@

rosy-defs.h:	$(TOPDIR)pepsy/pepsy.h.gnrc
		$(UTILDIR)extract.sh ROSY < $? > $@

l-rosy:		yacc.c lex.c true
		$(LINT) $(LFLAGS) rosy.c yacc.c $(TOPDIR)pepsy/pepsy_misc.c \
			rosyvrsn.c $(LLIBS) \
			| grep -v "warning: possible pointer alignment problem"


################################################################
# librosy
################################################################

CFILES	=	rystub.c rydiscard.c ryoperation.c ryopinvoke.c rygenid.c \
		rydispatch.c rydsresult.c rydserror.c rydsureject.c \
		rywait.c ryopblock.c rydsblock.c ryfind.c rylose.c

# pepsy based rosy library routines
P-OFILES=	p-rystub.o p-rydiscard.o p-ryoperation.o p-ryopinvoke.o \
		p-rygenid.o p-rydispatch.o p-rydsresult.o p-rydserror.o \
		p-rydsureject.o p-rywait.o p-ryopblock.o p-rydsblock.o \
		p-ryfind.o p-rylose.o

# (old) normal rosy library routines
N-OFILES=	rystub.o rydiscard.o ryoperation.o ryopinvoke.o \
		rygenid.o rydispatch.o rydsresult.o rydserror.o \
		rydsureject.o rywait.o ryopblock.o rydsblock.o \
		ryfind.o rylose.o

OFILES=		$(P-OFILES) $(N-OFILES) $(OSTRINGS)

inst-librosy:	$(LIBDIR)librosy.a $(LINTDIR)llib-lrosy

$(LIBDIR)librosy.a:	librosy.a
		-rm -f $@
		cp librosy.a $@
		@$(UTILDIR)make-lib.sh $(SYSTEM) $@ -ranlib
		-@ls -gls $@
		-@echo ""

$(LINTDIR)llib-lrosy:	llib-lrosy
		-cp $@ zllib-lrosy
		-rm -f $@
		sed -e 's%#include "\(.*\)"%#include "$(INCDIR)\1"%' \
			< llib-lrosy | \
			sed -e 's%#include "/usr/include/\(.*\)"%#include <\1>%' > $@
		@$(UTILDIR)inst-lint.sh $(SYSTEM) $(OPTIONS) $@
		-@ls -gls $@ $@.ln
		-@echo ""

librosy:	librosy.a

librosy.a:	$(OFILES)
		-rm -f $@
		@$(UTILDIR)make-lib.sh $(SYSTEM) $(ARFLAGS) $@ $(OFILES)
		-@rm -f $(TOPDIR)librosy.a $(TOPDIR)llib-lrosy
		-@$(LN) librosy.a $(TOPDIR)librosy.a
		-@$(LN) llib-lrosy $(TOPDIR)llib-lrosy
		-@ls -l $@
		-@echo "ROSY library built normally"

l-librosy:	$(CFILES) true
		$(LINT) $(LFLAGS) $(CFILES) $(TOPDIR)llib-lrosap $(LLIBS) \
			| grep -v "warning: possible pointer alignment problem"

p-rydiscard.o:	$(HFILES) $(PEPSYFILES) rydiscard.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rydiscard.c 

p-rygenid.o:	$(HFILES) $(PEPSYFILES) rygenid.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rygenid.c

p-rystub.o:	$(HFILES) $(PEPSYFILES) rystub.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rystub.c

p-rywait.o:	$(HFILES) $(PEPSYFILES) rywait.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rywait.c

p-ryoperation.o: $(HFILES) $(PEPSYFILES) ryoperation.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c ryoperation.c

p-ryopinvoke.o: $(HFILES) $(PEPSYFILES) ryopinvoke.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c ryopinvoke.c

p-rydispatch.o:	$(HFILES) $(PEPSYFILES) rydispatch.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rydispatch.c

p-rydsresult.o:	$(HFILES) $(PEPSYFILES) rydsresult.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rydsresult.c

p-rydserror.o:	$(HFILES) $(PEPSYFILES) rydserror.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rydserror.c

p-rydsureject.o: $(HFILES) $(PEPSYFILES) rydsureject.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rydsureject.c

p-ryopblock.o:	$(HFILES) $(PEPSYFILES) ryopblock.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c ryopblock.c

p-rydsblock.o:	$(HFILES) $(PEPSYFILES) rydsblock.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rydsblock.c

p-ryfind.o:	$(HFILES) $(PEPSYFILES) ryfind.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c ryfind.c

p-rylose.o:	$(HFILES) $(PEPSYFILES) rylose.c
		$(CC) $(LIBCFLAGS) -DPEPSY_VERSION=2 -o $@ -c rylose.c


rystub.o:	$(HFILES)
rydiscard.o:	$(HFILES)
ryoperation.o:	$(HFILES)
ryopinvoke.o:	$(HFILES)
rygenid.o:	$(HFILES)
rydispatch.o:	$(HFILES)
rydsresult.o:	$(HFILES)
rydserror.o:	$(HFILES)
rydsureject.o:	$(HFILES)
rywait.o:	$(HFILES)
ryopblock.o:	$(HFILES)
rydsblock.o:	$(HFILES)
ryfind.o:	$(HFILES)
rylose.o:	$(HFILES)

true:;


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

MANUALS	=	rosy.1 # librosy.3n

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


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

clean:;		rm -f *.o *.a x* z* _* core rosy-defs.h yacc.y yacc.c lex.l \
			lex.c rosyvrsn.c

grind:;		iprint Makefile
		tgrind -lc rosy-defs.h rosy.c rosyvrsn.c
		tgrind -ly yacc.y lex.l
		tgrind -lc $(CFILES) llib-lrosy
		@echo $(MANUALS) | \
			tr " " "\012" | \
			sed -e "s%.*%itroff -man &%" | \
			sh -ve