# Where the various bits are installed

RPCSRV=/etc/rpcsrv
REXINIT=/etc/rexinit
REXBOOT=/etc/ringsrv/rexboot
CAT=/etc/rexsrv/cat
TROFF=/etc/rexsrv/troff

CFLAGS = -O
LDFLAGS = -X

REXSRCS = rexinit.c rexboot.c rpccalls.c trans.c

all: rpcsrv rex.o rexboot rexinit

rpcsrv: rpcsrv.o trans.o
	cc ${CFLAGS} -o rpcsrv rpcsrv.o trans.o

rexboot: rexboot.o trans.o rexversion.o
	cc $(CFLAGS) -o rexboot rexboot.o trans.o rexversion.o -ltsb

rfsboot: rfsboot.o trans.o
	cc $(CFLAGS) -o rfsboot rfsboot.o trans.o -ltsb

rexinit: rexinit.o trans.o rexversion.o
	cc $(CFLAGS) -o rexinit rexinit.o trans.o rexversion.o -ltsb

dorexinit: dorexinit.c
	cc $(CFLAGS) -o dorexinit dorexinit.c

rex.o: rexcalls.o trans.o cmds.h selex rex.hide
	cp trans.o t#.o
	selex t#.o __exit _close _fstat _ioctl _read _write
	ld $(LDFLAGS) -X -r -o rex.o rexcalls.o t#.o
	rm t#.o
	selex rex.o `cat rex.hide`

rexcalls.o: rpccalls.c
	cc ${CFLAGS} -c -DREX rpccalls.c
	mv rpccalls.o rexcalls.o


rfs.o: rpccalls.o rfscalls.o rfsutils.o trans.o syscalls.o selex
	ld $(LDFLAGS) -r rpccalls.o syscalls.o rfsutils.o trans.o -ltsb -lc
	selex a.out `cat sys.hide rfs.hide`
	mv a.out t#.o
	ld $(LDFLAGS) -X -r rfscalls.o t#.o 
	mv a.out rfs.o

trans.o: trans.c
	cc ${CFLAGS} -c trans.c
	ld $(LDFLAGS) -X -r trans.o -ltsb -lc
	mv a.out trans.o

selex: selex.c
	cc $(LDFLAGS) ${CFLAGS} -o selex selex.c

nlist: nlist.c
	cc $(LDFLAGS) ${CFLAGS} -o nlist nlist.c

# the remotely executing cat binary
cat_rexd: cat.o rex.o
	cc $(CFLAGS) -o cat_rexd cat.o rex.o

troff_rexd: troff.o rex.o
	cc $(CFLAGS) -o troff_rexd troff.o rex.o

install: $(RPCSRV) $(REXBOOT) $(REXINIT) $(CAT) $(TROFF)

inst-rpcsrv: $(RPCSRV)
inst-rexinit: $(REXINIT)
inst-rexboot: $(REXBOOT)
inst-cat: $(CAT)
inst-troff: $(TROFF)

$(RPCSRV): rpcsrv
	install -c -m 750 -g staff rpcsrv $(RPCSRV)

$(REXINIT): rexinit
	install -c -m 751 -g staff rexinit $(REXINIT)

$(REXBOOT): rexboot
	install -c -m 750 -g staff rexboot $(REXBOOT)

$(CAT): cat_rexd
	-mkdir /etc/rexsrv && chmod 700 /etc/rexsrv
	install -c -m 750 -g staff cat_rexd $(CAT)
	-ln -s /etc/rexinit cat

$(TROFF): troff_rexd
	-mkdir /etc/rexsrv && chmod 700 /etc/rexsrv
	install -c -m 750 -g staff troff_rexd $(TROFF)
	-ln -s /etc/rexinit troff

tags: $(REXSRCS)
	ctags $(REXSRCS)

clean:
	rm -f *.o errs rexboot rfsboot rexinit rpcsrv selex nlist

rexboot.o: trans.h config.h
rexinit.o: trans.h config.h
rpcsrv: cmds.h trans.h
