#Makefile for spin
# 28.Jul.87  jimmc  Initial definition
#  2.Aug.87  jimmc  Add backup tag
# 30.Nov.87  jimmc  Add LINTSRCS macro, SHAR stuff
# 11.Jan.88  jimmc  Remove main.o from object list for library
#  1.Mar.87  jimmc  Add man tag

ROOTNAME      = spin
LIBRARY	      = $(ROOTNAME).a
LINTLIB	      = llib-$(LIBRARY).ln
PROGRAM	      = $(ROOTNAME)
DEST	      = .

MKMF          = mkmf

CLASH         = clash

SHAR          = shar
SHARFILE      = $(ROOTNAME).shar

MAKE	      =	make $(MFLAGS)
MAKEFILE      = Makefile

BKPMACH = wheel
BKPDIR = src/$(ROOTNAME).bak

# careful with this variable.  it is really set down in target "depend:"
CFLAGS	= $(CCOPTS) 

INCLUDE	=
CCOPTS = -g

LINKER	      = cc 

LINTFLAGS =	$(INCLUDE) $(LINTOPTS)
LINTOPTS	= -bauz

SRCS	      = contsubs.c \
		exec.c \
		filesubs.c \
		goto.c \
		initsubs.c \
		lex.l \
		listsubs.c \
		main.c \
		mathsubs.c \
		parse.c \
		varsubs.c \
		xalloc.c

LINTSRCS = `echo $(SRCS) | sed -e 's/lex.l//' -e 's/main.c//' `

LIBOBJS = `echo $(OBJS) | sed -e 's/main.o//' `

OBJS	      = contsubs.o \
		exec.o \
		filesubs.o \
		goto.o \
		initsubs.o \
		lex.o \
		listsubs.o \
		main.o \
		mathsubs.o \
		parse.o \
		varsubs.o \
		xalloc.o

HDRS	      = exec.h \
		goto.h \
		spin.h \
		spinparse.h \
		xalloc.h

SHARETC = Post.note README $(ROOTNAME).3 TODO cont.sp

SHARSRCS = $(SHARETC) $(SRCS) $(HDRS) $(MAKEFILE)

EXTHDRS	      = /usr/include/ctype.h \
		/usr/include/setjmp.h \
		/usr/include/stdio.h

LIBS          =

XLINTLIBS      =

default:	$(PROGRAM)

lib:		$(LIBRARY)

library:	$(LIBRARY)

lintlib:	$(LINTLIB)

shar:		$(SHARFILE)

clash:;		$(CLASH) $(HDRS) $(LINTSRCS)

all:		$(PROGRAM) $(LINTLIB)

$(PROGRAM):	main.o $(LIBRARY)
		@echo -n "Loading $(PROGRAM) ... "
		@rm -f $(PROGRAM)
		@$(LINKER) $(CFLAGS) main.o $(LIBRARY) -o $(PROGRAM).new
		@mv -f $(PROGRAM).new $(PROGRAM)
		@echo "done"

$(LIBRARY):	$(OBJS)
		@echo -n "Loading $(LIBRARY) ... "
		@ar cru $(LIBRARY) $(LIBOBJS)
		@ranlib $(LIBRARY)
		@echo "done"

$(LINTLIB):	$(SRCS)
		lint -C$(LIBRARY) $(LINTFLAGS) $(LINTSRCS)

man:		$(ROOTNAME).3
		nroff -man $(ROOTNAME).3 > $(ROOTNAME).man.new
		mv $(ROOTNAME).man.new $(ROOTNAME).man

$(SHARFILE):	$(SHARSRCS)
		$(SHAR) $(SHARSRCS) > $(SHARFILE)

install:	$(PROGRAM)
		@echo Installing $(PROGRAM) in $(DEST)
		@install -m 770 -c $(PROGRAM) $(DEST)

depend:		$(XDEP)
		@echo Updating $(MAKEFILE) ...
		@$(MKMF) -f $(MAKEFILE) \
			CFLAGS='$$(CCOPTS) $(INCLUDE)'
# PROGRAM makes mkmf use p.Makefile template
#			PROGRAM=$(PROGRAM)

lint:;		lint $(LINTFLAGS) $(LINTSRCS) $(LINTLIBS)

tidy:;		@rm -f $(OBJS)

clean:		tidy
		@rm -f $(PROGRAM) $(LIBRARY)

print:;		@pr $(SRCS) $(HDRS)

tags:           $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS)

backup:;	tar cf - $(HDRS) $(SRCS) $(MAKEFILE) | \
			rsh $(BKPMACH) 'cd $(BKPDIR); tar xBf -'

lex.o: spin.h spinparse.h xalloc.h

###
contsubs.o: /usr/include/stdio.h xalloc.h spin.h exec.h
exec.o: /usr/include/stdio.h /usr/include/ctype.h goto.h \
	/usr/include/setjmp.h xalloc.h spin.h spinparse.h exec.h
filesubs.o: /usr/include/stdio.h goto.h /usr/include/setjmp.h spin.h \
	xalloc.h
goto.o: goto.h /usr/include/setjmp.h xalloc.h
initsubs.o: spin.h
listsubs.o: xalloc.h spin.h
main.o: /usr/include/stdio.h xalloc.h
mathsubs.o: spin.h
parse.o: /usr/include/stdio.h /usr/include/ctype.h goto.h \
	/usr/include/setjmp.h xalloc.h spin.h spinparse.h
varsubs.o: xalloc.h spin.h
xalloc.o: /usr/include/stdio.h
