#
#	Makefile for ss library
#
# Copyright 1987, 1988 by the MIT Student Information Processing Board
# For copyright info, see copyright.h.
#
#	$Header: Makefile,v 1.10 87/07/30 05:53:25 spook Exp $
#	$Locker:  $

MACHINE=`/bin/athena/machtype`
DESTDIR=
BINDIR=
LIBDIR=
INCDIR=
ETDIR=../et/

# flags

CFLAGS=	-O -I. -g

LINTFLAGS= -uhv

# for the library

LIB=	libss.a
COMERR=	-lcom_err
#COMERR=	$(ETDIR)libcom_err.a

# with ss_err.o first, ss_err.h should get rebuilt first too.  shouldn't
# be relying on this, though.
OBJS=	ss_err.o \
	std_rqs.o \
	invocation.o help.o \
	execute_cmd.o listen.o parse.o error.o prompt.o \
	request_tbl.o list_rqs.o pager.o requests.o \
	data.o

SRCS=	invocation.c help.c \
	execute_cmd.c listen.c parse.c error.c prompt.c \
	request_tbl.c list_rqs.c pager.c requests.c \
	data.c

# for mk_cmds program

MKCMDSOBJS=	mk_cmds.o utils.o options.o ct.tab.o cmd_tbl.o

MKCMDSFILES=	mk_cmds.c utils.c options.c ct.y cmd_tbl.l

MKCMDSCSRCS=	mk_cmds.c utils.c options.c ct.tab.c cmd_tbl.c

# include files

HFILES=	ss.h ss_internal.h copyright.h

# for 'tags' and dependencies

CFILES=	$(SRCS) $(MKCMDSCSRCS) test.c

# for building archives

FILES=	$(SRCS) $(MKCMDSFILES) $(HFILES) \
	ss_err.et std_rqs.ct Makefile \
	test.c commands.ct ss mit-sipb-copyright.h

#
# stuff to build
#

all:	libss.a mk_cmds # lint

dist:	archives

install: all
	install -c -s mk_cmds ${DESTDIR}/usr/athena/mk_cmds
	install -c libss.a ${DESTDIR}/usr/athena/lib/libss.a
	ranlib ${DESTDIR}/usr/athena/lib/libss.a
	install -c libss.a ${DESTDIR}/usr/athena/lib/libss_p.a
	ranlib ${DESTDIR}/usr/athena/lib/libss_p.a
	@rm -rf ${DESTDIR}/usr/include/ss
	@mkdir ${DESTDIR}/usr/include/ss
	cp ss.h ss_err.h ss_internal.h copyright.h ${DESTDIR}/usr/include/ss/
	cp copyright.h ${DESTDIR}/usr/include/ss/mit-sipb-copyright.h

tags:	TAGS

.SUFFIXES:	.ct

$(OBJS) : com_err.h

com_err.h : ../et/com_err.h
	rm -f com_err.h
	ln -s ../et/com_err.h .

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

std_rqs.c: mk_cmds std_rqs.ct
	./mk_cmds std_rqs.ct

ss_err.o ss_err.h : ss_err.et
	$(ETDIR)compile_et ss_err.et
	rm -f ss_err.o profiled/ss_err.o
	cc -O -c ss_err.c
	cp ss_err.o profiled/ss_err.o

ct.tab.c ct.tab.h: ct.y
	rm -f ct.tab.* y.*
	yacc -d ct.y
	mv -f y.tab.c ct.tab.c
	mv -f y.tab.h ct.tab.h

#
libss.a:	$(OBJS)
	rm -f $@
	ar cruv $@ $(OBJS)
	ranlib $@

libss_p.a:	$(OBJS)
	rm -f $@
	cd profiled;ar cruv ../$@ $(OBJS)
	ranlib $@

libss.o:	$(OBJS)
	ld -r -s -o $@ $(OBJS)
	chmod -x $@

lint:	llib-lss.ln

llib-lss.ln:	$(SRCS) ../../et/$(MACHINE)/llib-lcom_err.ln
	lint -Css $(LINTSFLAGS) $(SRCS) ../et/llib-lcom_err.ln | \
		egrep -v 'possible pointer alignment problem' | \
		egrep -v 'returns value which is'

mk_cmds:	$(MKCMDSOBJS)
	$(CC) $(CFLAGS) -o $@ $(MKCMDSOBJS) -ll

TAGS:	$(CFILES)
	-etags $(CFILES)

archives: ss.ar ss.tar

ss.ar:	$(FILES)
	ar cru $@ $(FILES)

ss.tar:	$(FILES)
	rm -f $@
	tar crf $@ $(FILES)

test:	test.o commands.o $(LIB)
	${CC} ${CFLAGS} -o test test.o commands.o $(LIB) $(COMERR)

commands.c: mk_cmds commands.ct
	./mk_cmds $*.ct

saber:	${SRCS} ss_err.o std_rqs.o
	saber ${SABEROPTS} ${SRCS} -I../et -G ss_err.o std_rqs.o -lcom_err

clean:	
	rm -f *.o *~ \#* *.bak core \
		ss_err.h ct.tab.c ct.tab.h cmd_tbl.c \
		lex.yy.c y.tab.c \
		libss.a libss_p.a llib-lss.ln mk_cmds \
		ss.ar ss.tar \
		TAGS test

# 'make depend' code
depend: $(CFILES) ss_err.h com_err.h
	$(CC) -M $(CFLAGS) $(CFILES) > makedep
	echo '/^# DO NOT DELETE THIS LINE/+1,$$d' >eddep
	echo '$$r makedep' >>eddep
	echo 'w' >>eddep
	cp Makefile Makefile.bak
	ed - Makefile < eddep
	rm eddep makedep

undepend:
	rm -f Makefile.bak
	cp Makefile Makefile.bak
	echo '/^# DO NOT DELETE THIS LINE/+1,$$c' >eddep
	echo '#' >>eddep
	echo '.' >>eddep
	echo 'w' >>eddep
	ed - Makefile < eddep
	rm -f eddep makedep

#
# the last constant line in the makefile should be...
# DO NOT DELETE THIS LINE -- make depend depends on it.
invocation.o : invocation.c ss_internal.h \
  /mit/gnu/vaxlib/gcc-include/stdio.h /usr/include/string.h \
  /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h copyright.h 
help.o : help.c /usr/include/sys/param.h /usr/include/machine/machparam.h \
  /usr/include/signal.h /mit/gnu/vaxlib/gcc-include/sys/types.h \
  /mit/gnu/vaxlib/gcc-include/sys/file.h /usr/include/sys/wait.h \
  ss_internal.h /mit/gnu/vaxlib/gcc-include/stdio.h /usr/include/string.h \
  /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h copyright.h /usr/include/sys/dir.h 
execute_cmd.o : execute_cmd.c ss_internal.h \
  /mit/gnu/vaxlib/gcc-include/stdio.h /usr/include/string.h \
  /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h copyright.h 
listen.o : listen.c copyright.h ss_internal.h \
  /mit/gnu/vaxlib/gcc-include/stdio.h /usr/include/string.h \
  /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h /mit/gnu/vaxlib/gcc-include/setjmp.h \
  /usr/include/signal.h /usr/include/sys/param.h \
  /usr/include/machine/machparam.h /mit/gnu/vaxlib/gcc-include/sys/types.h \
  /usr/include/sgtty.h /mit/gnu/vaxlib/gcc-include/sys/ioctl.h \
  /mit/gnu/vaxlib/gcc-include/sys/ttychars.h /usr/include/sys/ttydev.h 
parse.o : parse.c ss_internal.h /mit/gnu/vaxlib/gcc-include/stdio.h \
  /usr/include/string.h /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h \
  ./ss/ss_err.h /mit/gnu/vaxlib/gcc-include/stdarg.h copyright.h 
error.o : error.c /mit/gnu/vaxlib/gcc-include/stdio.h copyright.h \
  ss_internal.h /usr/include/string.h /usr/include/strings.h ss.h \
  ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h ./com_err.h 
prompt.o : prompt.c copyright.h /mit/gnu/vaxlib/gcc-include/stdio.h \
  ss_internal.h /usr/include/string.h /usr/include/strings.h ss.h \
  ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h 
request_tbl.o : request_tbl.c copyright.h ss_internal.h \
  /mit/gnu/vaxlib/gcc-include/stdio.h /usr/include/string.h \
  /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h 
list_rqs.o : list_rqs.c copyright.h ss_internal.h \
  /mit/gnu/vaxlib/gcc-include/stdio.h /usr/include/string.h \
  /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h /usr/include/signal.h \
  /mit/gnu/vaxlib/gcc-include/setjmp.h /usr/include/sys/wait.h 
pager.o : pager.c ss_internal.h /mit/gnu/vaxlib/gcc-include/stdio.h \
  /usr/include/string.h /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h \
  ./ss/ss_err.h /mit/gnu/vaxlib/gcc-include/stdarg.h copyright.h \
  /mit/gnu/vaxlib/gcc-include/sys/file.h /usr/include/signal.h 
requests.o : requests.c mit-sipb-copyright.h \
  /mit/gnu/vaxlib/gcc-include/stdio.h ss_internal.h /usr/include/string.h \
  /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h 
data.o : data.c /mit/gnu/vaxlib/gcc-include/stdio.h ss_internal.h \
  /usr/include/string.h /usr/include/strings.h ss.h ./ss/mit-sipb-copyright.h \
  ./ss/ss_err.h /mit/gnu/vaxlib/gcc-include/stdarg.h copyright.h 
mk_cmds.o : mk_cmds.c copyright.h /mit/gnu/vaxlib/gcc-include/stdio.h \
  /usr/include/sys/param.h /usr/include/machine/machparam.h \
  /usr/include/signal.h /mit/gnu/vaxlib/gcc-include/sys/types.h \
  /mit/gnu/vaxlib/gcc-include/sys/file.h /usr/include/strings.h ss_internal.h \
  /usr/include/string.h ss.h ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h 
utils.o : utils.c /usr/include/string.h /usr/include/strings.h copyright.h \
  ss_internal.h /mit/gnu/vaxlib/gcc-include/stdio.h ss.h \
  ./ss/mit-sipb-copyright.h ./ss/ss_err.h \
  /mit/gnu/vaxlib/gcc-include/stdarg.h 
options.o : options.c copyright.h /mit/gnu/vaxlib/gcc-include/stdio.h ss.h \
  ./ss/mit-sipb-copyright.h ./ss/ss_err.h 
ct.tab.o : ct.tab.c /mit/gnu/vaxlib/gcc-include/stdio.h copyright.h ss.h \
  ./ss/mit-sipb-copyright.h ./ss/ss_err.h 
cmd_tbl.o : cmd_tbl.c /mit/gnu/vaxlib/gcc-include/stdio.h \
  /usr/include/string.h /usr/include/strings.h ct.tab.h copyright.h 
test.o : test.c /mit/gnu/vaxlib/gcc-include/stdio.h ss.h \
  ./ss/mit-sipb-copyright.h ./ss/ss_err.h 
