# Muscle Smartcard Development
# Makefile
# David Corcoran

CC       = gcc
CFLAGS   = -g -fpic -w
LD       = ld
OBJ     := $(filter-out cscrypt.o csdecrypt.o cschallenge.o csgenkey.o pam.o,$(patsubst %.c,%.o,$(wildcard *.c)))
INCLUDE  = -I/usr/local/pcsc/include -I.
PREFIX   = /usr/local/pcsc
VERSION  = 0.1.0

# LINUX
MAKEXE      = make
LIBS        = -lgmp -L/usr/local/pcsc/lib -lpcsclite -lc
LIBNAME     = pam_smartcard.so
CSPLIBNAME  = libcsp_generic.so
# end LINUX

# BSD
#MAKEXE   = gmake
#VERSION  = 0.1
#LDFLAGS  = -Bshareable -Bforcearchive -x -assert pure-text
#LIBS	  = -lgmp -L/usr/local/pcsc/lib -lpcsclite
#LIBNAME  = libcspam-smartcard.so.$(VERSION)
# end BSD

all: csgenkey cschallenge cscrypt csdecrypt cspammodule csplib

install:
	install -m 644 $(LIBNAME) /lib/security; \

clean:
	rm -f *.o $(LIBNAME) core csgenkey cschallenge cscrypt csdecrypt

cyberflex:
	mv -f csp-cyberflex.bak csp-cyberflex.c; \
	mv -f csp-cryptoflex.c csp-cryptoflex.bak; \
	make;

cryptoflex:
	mv -f csp-cryptoflex.bak csp-cryptoflex.c; \
	mv -f csp-cyberflex.c csp-cyberflex.bak; \
	make;

cspammodule: $(OBJ) pam.o 
	$(LD) $(LDFLAGS) -shared pam.o $(OBJ) $(LIBS) -lpam -o $(LIBNAME)

csplib: $(OBJ) 
	$(LD) $(LDFLAGS) -shared $(OBJ) $(LIBS) -o $(CSPLIBNAME)

csgenkey: $(OBJ) csgenkey.c
	$(CC) $(CFLAGS) -o $@ csgenkey.c $(DEFS) $(OBJ) $(LIBS) $(INCLUDE)

cschallenge: $(OBJ) cschallenge.c
	$(CC) $(CFLAGS) -o $@ cschallenge.c $(DEFS) $(OBJ) $(LIBS) $(INCLUDE)

cscrypt: $(OBJ) cscrypt.c
	$(CC) $(CFLAGS) -o $@ cscrypt.c $(DEFS) $(OBJ) $(LIBS) $(INCLUDE)

csdecrypt: $(OBJ) csdecrypt.c
	$(CC) $(CFLAGS) -o $@ csdecrypt.c $(DEFS) $(OBJ) $(LIBS) $(INCLUDE)

$(patsubst %.c,%.o,$(wildcard *.c)) : %.o : %.c
	$(CC) $(CFLAGS) -c $< $(INCLUDE) $(DEFS)

