# Muscle Smartcard Development
# Makefile
# David Corcoran

# Notes:
# - BSD users should uncomment the BSD section and comment out the
# previous section.  Make sure to do the same in rpc/Makefile.
# - Static w/o RPC users should uncomment the DEFS section

MAKEXE   = gmake
CC       = gcc
CFLAGS   = -g -fpic 
LD       = ld
LEX      = flex
OBJ     := $(filter-out test.o event.o, $(patsubst %.c,%.o,$(wildcard *.c)))
INCLUDE  = -I./include
PREFIX   = /usr/local/pcsc
VERSION  = 0.5.5

# LINUX
LIBS     = -ldl -lfl -lc
LIBNAME  = libpcsclite-core.so
# end LINUX

# BSD
#VERSION  = 0.4
#LDFLAGS  = -Bshareable -Bforcearchive -x -assert pure-text
#LIBS	 = -lfl
#LIBNAME  = libpcsclite-core.so.$(VERSION)
# end BSD

DEFS     = -DPCSC_DEBUG=1 # -DATR_DEBUG=1
###################################################
# Uncomment the following for local (non-rpc)
#DEFS += -DPCSCLITE_LOCAL_LINK=1
###################################################

all:       rpc_ver
local_ver: pcsclite_core test

rpc_ver:   pcsclite_core pcsclite testrpc event

install:
	if [ ! -f /etc/reader.conf ]; then \
	install -m 644 etc/reader.conf /etc/reader.conf ; \
	fi
	mkdir -p $(PREFIX); \
	mkdir -p $(PREFIX)/lib; \
	mkdir -p $(PREFIX)/include; \
	install -m 755 $(LIBNAME) $(PREFIX)/lib; \
	install -m 644 include/* $(PREFIX)/include; \
	cd rpc; $(MAKEXE) install

clean:
	-rm -f *.[ch]~ Makefile*~ README*~
	-rm -f ./include/*.h~
	-rm -f ./etc/*~
	-rm -f *.o $(LIBNAME) core test testrpc event .pcscrpctmp; cd rpc; $(MAKEXE) clean

lexer: configfile.ll
	$(LEX) configfile.ll

pcsclite_core: lexer $(OBJ)
	$(LD) $(LDFLAGS) -shared $(OBJ) $(LIBS) -o $(LIBNAME)

pcsclite:
	cd rpc; $(MAKEXE)

test: $(OBJ)
	$(CC) $(CFLAGS) -o $@ test.c -L./ -lpcsclite-core $(INCLUDE)

testrpc: $(OBJ)
	$(CC) $(CFLAGS) -o $@ test.c -L./rpc -lpcsclite $(INCLUDE)

event: $(OBJ)
	$(CC) $(CFLAGS) -o $@ event.c -L./rpc -lpcsclite $(INCLUDE)

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

