TERMSRC = /usr/local/src/term-$(TERM_VERSION)
LIBCSRC = /usr/local/src/libc-linux
LIBC_VERSION = 4.5.26
TERM_VERSION = 2.2.0

ROOTBIN = /usr/local/sbin
# If you use a directory other than lib, some older programs won't work when
# termified.
ROOTLIB = /lib
MANDIR = /usr/man

USERBIN = ${HOME}/bin
USERLIB = ${HOME}/term

all: libt.so.$(LIBC_VERSION)-$(TERM_VERSION) cpacl

install: install.root install.man

help: cpacl.help termify.help

cpacl.help: cpacl.1
	nroff -man cpacl.1 > cpacl.help

termify.help: termify.1
	nroff -man termify.1 > termify.help

install.man:
	cp -a termify.1 cpacl.1 $(MANDIR)/man1/.

install.root: cpacl termify.root
	cp -a cpacl $(ROOTBIN)/.
	cp -a termify.root $(ROOTBIN)/termify
	cp -a libt.so.$(LIBC_VERSION)-$(TERM_VERSION) $(ROOTLIB)/.
	ldconfig -v

install.user: cpacl termify.user
	if [ ! -d $(USERBIN) ]; then mkdir $(USERBIN); else true; fi
	cp -a cpacl $(USERBIN)/.
	cp -a termify.user $(USERBIN)/termify
	@if [ x$$LD_LIBRARY_PATH = x ] ; then  echo >&2; \
		echo "In order for your termified binaries to work you will need to" >&2; \
		echo "add export LD_LIBRARY_PATH='$(USERLIB)' to your ~/.profile" >&2; \
		echo "and add setenv LD_LIBRARY_PATH '$(USERLIB)' to your ~/.login" >&2; \
		echo "Then logout, and login again." >&2; echo >&2; \
	else true; fi
	if [ ! -d $(USERLIB) ]; then mkdir $(USERLIB); else true; fi
	cp -a libt.so.$(LIBC_VERSION)-$(TERM_VERSION) $(USERLIB)/.

cpacl: cpacl.c
	cc -N -s -o cpacl cpacl.c

libt.so.$(LIBC_VERSION)-$(TERM_VERSION): ./libc-linux/shared/libc.a
	cd libc-linux; make SHARED=true MATH=false STATIC=false
	cp -a libc-linux/jump/libc/libc.so.$(LIBC_VERSION) \
		libt.so.$(LIBC_VERSION)-$(TERM_VERSION)


./libc-linux/shared/libc.a: 
	make -f Makefile.term clientobjs
	if [ ! -d ./libc-linux/shared ] ; then \
		mkdir ./libc-linux/shared;  \
	else true; fi
	if [ ! -d ./libc-linux/shared/libc ] ; then \
		mkdir ./libc-linux/shared/libc;  \
	else true; fi
	ar ucv ./libc-linux/shared/libc.a shared/*.o
	mv shared/*.o ./libc-linux/shared/libc/.
	rm -f *.o 

clean:
	if [ -d ./libc-linux ]; then \
		cd ./libc-linux; make clean ; \
	else true; fi
	rm -rf shared *.o *.s


config: realclean jump.dir Makefile.term
	cd libc-linux; ./configure

jump.dir: libc-linux.link
	rm -rf ./libc-linux/jump/libc ./jump 
	mkdir ./libc-linux/jump/libc
	ln -s ./libc-linux/jump/libc ./jump
	cp -a $(LIBCSRC)/jump/libc/. ./jump/.
	touch ./jump/jump.import
	sed 's/libtermnet/libc/g' < $(TERMSRC)/jump/jump.vars >> jump/jump.ignore
	sed 's/libtermnet/libc/g' < $(TERMSRC)/jump/jump.funcs >> jump/jump.funcs
	sed 's/libtermnet/libc/g' < $(TERMSRC)/jump/jump.ignore >> jump/jump.ignore
	patch -p0 < jump.fix

libc-linux.link:
	rm -rf libc-linux
	cp -as $(LIBCSRC) libc-linux
	rm -rf libc-linux/jump/libc libc-linux/config.in
	cp -a $(LIBCSRC)/config.in libc-linux/config.in

Makefile.term: $(TERMSRC)/Makefile.in $(TERMSRC)/configure
	$(TERMSRC)/configure --root --shlib --jump_lib=libc \
		--Makefile=Makefile.term

realclean: 
	rm -rf jump libc-linux shared Makefile.term *.o *.s libt.so.* cpacl \
		config.status *.help


