# Simple Terminal Server makefile
# buildtemplate for STS and RTS

# must have MACHINE, OBJSUFFIX, CC, LINT and MDFLAGS defined

VPATH = ../mi

TARGETS = sts.$(MACHINE) rts.$(MACHINE)

SOURCES = init.c mux.c keyboard.c \
	  event.c pad.c interp.c $(LINEEDIT_SOURCES)
RTS_SOURCES = init.c mux.c keyboard.c \
	      event.c pad.c interp.c \
	       $(TELNET_SOURCES) $(LINEEDIT_SOURCES)
TELNET_SOURCES = tnread.c tnwrite.c tnoption.c
LINEEDIT_SOURCES = edinterface.c edops.c edprimitives.c

OBJS = init.$(OBJSUFFIX) mux.$(OBJSUFFIX) keyboard.$(OBJSUFFIX) \
       event.$(OBJSUFFIX) pad.$(OBJSUFFIX) interp.$(OBJSUFFIX) $(LINEEDIT_OBJS)
RTS_OBJS = init.$(OBJSUFFIX) rts.mux.$(OBJSUFFIX) rts.keyboard.$(OBJSUFFIX) \
	   rts.event.$(OBJSUFFIX) rts.pad.$(OBJSUFFIX) rts.interp.$(OBJSUFFIX) \
	   $(TELNET_OBJS) $(LINEEDIT_OBJS)
TELNET_OBJS = tnread.$(OBJSUFFIX) tnwrite.$(OBJSUFFIX) tnoption.$(OBJSUFFIX)
LINEEDIT_OBJS = edinterface.$(OBJSUFFIX) edops.$(OBJSUFFIX) \
		edprimitives.$(OBJSUFFIX)

TNDEBUG_SOURCES = tndebug.c $(TELNET_SOURCES)
TNDEBUG_OBJS = tndebug.$(OBJSUFFIX) $(TELNET_OBJS)

#include ../../../buildprefix

# when done debugging, restore the -O optimization flag
#ifdef X
MIFLAGS =  -O -V -vx -DSTS
INCLUDES = -I. -I../mi -I/xV/libc/include/$(MACHINE) -I/xV/libc/include/mi
#else X
MIFLAGS =  -O -V -DSTS
INCLUDES = -I. -I../mi
#endif X

RTSFLAGS = -DRTS

.SUFFIXES:
.SUFFIXES: .$(OBJSUFFIX) .c

.c.$(OBJSUFFIX):
	$(CC) $(MIFLAGS) $(INCLUDES) -c $*.c


all: $(TARGETS)

lint: lint-sts lint-rts lint-tndebug

install: $(TARGETS)
	touch install
	$(NETINSTALL) -p  "$(TARGETS)" $(VSYS)/bin

clean:
	rm -f *.BAK *.CKP *.$(OBJSUFFIX) $(TARGETS)

cleanbak:
	rm -f *.BAK *.CKP .emacs*

relink:
	rm $(TARGETS)


sts.$(MACHINE): $(OBJS) 
	$(CC) $(MIFLAGS) $(INCLUDES) $(MDFLAGS) -o sts.$(MACHINE) \
		$(OBJS) 
lint-sts: $(SOURCES)
	$(LINT) $(MIFLAGS) $(INCLUDES) $(SOURCES) 

edinterface.$(OBJSUFFIX):	edit.h pad.h client.h editbuf.h
edops.$(OBJSUFFIX):		edit.h pad.h client.h editbuf.h
edprimitives.$(OBJSUFFIX): 	edit.h pad.h client.h editbuf.h
event.$(OBJSUFFIX):		       pad.h client.h editbuf.h interp.h stsio.h
interp.$(OBJSUFFIX):		edit.h pad.h client.h editbuf.h interp.h stsio.h
keyboard.$(OBJSUFFIX):		             client.h editbuf.h          stsio.h
mux.$(OBJSUFFIX):		             client.h editbuf.h interp.h stsio.h
pad.$(OBJSUFFIX):		edit.h pad.h client.h editbuf.h          stsio.h


#  declarations for RTS-only modules 

CCRTS = $(CC) $(MIFLAGS) $(RTSFLAGS) $(INCLUDES)

rts.$(MACHINE): $(RTS_OBJS)
	$(CC) $(MIFLAGS) $(RTSFLAGS) $(INCLUDES) $(MDFLAGS) -o rts.$(MACHINE) \
		$(RTS_OBJS)
lint-rts: $(RTS_SOURCES)
	$(LINT) $(MIFLAGS) $(RTSFLAGS) $(INCLUDES) $(RTS_SOURCES)

rts.event.$(OBJSUFFIX): event.c        pad.h client.h editbuf.h interp.h stsio.h
	$(CCRTS) -c event.c -o rts.event.$(OBJSUFFIX)

rts.interp.$(OBJSUFFIX): interp.c \
				edit.h pad.h client.h editbuf.h interp.h stsio.h
	$(CCRTS) -c interp.c -o rts.interp.$(OBJSUFFIX)

rts.keyboard.$(OBJSUFFIX): keyboard.c        client.h editbuf.h          stsio.h
	$(CCRTS) -c keyboard.c -o rts.keyboard.$(OBJSUFFIX)

rts.mux.$(OBJSUFFIX): mux.c 		     client.h editbuf.h interp.h stsio.h
	$(CCRTS) -c mux.c -o rts.mux.$(OBJSUFFIX)

rts.pad.$(OBJSUFFIX): pad.c	edit.h pad.h client.h editbuf.h          stsio.h
	$(CCRTS) -c pad.c -o rts.pad.$(OBJSUFFIX)


tnread.$(OBJSUFFIX):  tnread.c		stsio.h rtsdefs.h telnet.h
	$(CCRTS) -c tnread.c
tnwrite.$(OBJSUFFIX):  tnwrite.c	stsio.h rtsdefs.h telnet.h
	$(CCRTS) -c tnwrite.c
tnoption.$(OBJSUFFIX): tnoption.c	        rtsdefs.h telnet.h
	$(CCRTS) -c tnoption.c



# debugging programs

tndebug.$(MACHINE): $(TNDEBUG_OBJS)
	$(CC) $(MIFLAGS) $(RTSFLAGS) $(INCLUDES) $(MDFLAGS) \
		-o tndebug.$(MACHINE) $(TNDEBUG_OBJS)
lint-tndebug: $(TNDEBUG_SOURCES)
	$(LINT) $(MIFLAGS) $(RTSFLAGS) $(INCLUDES) $(TNDEBUG_SOURCES)

tndebug.$(OBJSUFFIX): tndebug.c stsio.h rtsdefs.h
	$(CCRTS) -c tndebug.c
