CC = gcc

CFLAGS= -O2 -g -I./mlan
LDFLAGS=-L./mlan
LDLIBS=-lmlan  
INFIX=mlan

all: pam_ibutton.so pam_ibutton_mingetty lib$(INFIX).a

pam_ibutton.so: pam_ibutton.$(INFIX).c lib$(INFIX).a
	rm -f core *.o *.so
	$(CC) -c md5.c
	$(CC) -fPIC $(CFLAGS) -c pam_ibutton.$(INFIX).c -o pam_ibutton.o
	$(CC) -shared -Xlinker -x $(CFLAGS) $(LDFLAGS) -o lib/security/pam_ibutton.so pam_ibutton.o md5.o -lc $(LDLIBS)
	@ echo "--------------------------------------------------------------------------------"
	@ echo "pam_ibutton module compiled ..."
	@ echo "--------------------------------------------------------------------------------"

pam_ibutton_mingetty:
	cd mingetty-0.9.4/patched; make
	@ echo "--------------------------------------------------------------------------------"
	@ echo "mingetty (patched version) compiled ..."
	@ echo "--------------------------------------------------------------------------------"

libmlan.a:
	cd mlan; make
	@ echo "--------------------------------------------------------------------------------"
	@ echo "libmlan.a compiled ..."
	@ echo "--------------------------------------------------------------------------------"


install:
	@ if !(test -e /dev/iButton); then (echo "linking /dev/iButton to /dev/ttyS0 ..."; ln -s /dev/ttyS0 /dev/iButton); fi
	@ if !(test -e /etc/pam.d/login.orig); then (echo "updating /etc/pam.d/login"; cp -f /etc/pam.d/login /etc/pam.d/login.orig; cp -f ./etc/pam.d/login /etc/pam.d); fi
	@ if !(test -e /etc/pam.d/passwd.orig); then (echo "updating /etc/pam.d/passwd"; cp -f /etc/pam.d/passwd /etc/pam.d/passwd.orig; cp -f ./etc/pam.d/passwd /etc/pam.d); fi
	@ echo "placing pam_ibutton.so in /lib/security ..."
	@ cp -f lib/security/pam_ibutton.so /lib/security
	@ echo "placing pam_ibutton_mingetty in /usr/sbin ..."
	@ cp -f mingetty-0.9.4/patched/mingetty /usr/sbin/pam_ibutton_mingetty

clean:
	rm -f core *.o *.so
	cd lib/security; rm -f *.so
	cd mlan; make clean
	cd mingetty-0.9.4/patched; make clean
