##############################################################################
# makefile for Portable WIBU-KEY Driver
##############################################################################
#
# Copyright  1998 - 2010 by WIBU-SYSTEMS AG
#            Rueppurrer Strasse 52, D-76137 Karlsruhe, Germany/Europe
#            Website: http:\\www.wibu.com, Email: info@wibu.com
#            Phone: +49-721-93172-0, Fax: +49-721-93172-22
#            All rights reserved
#
# Version .. 4.31 of 2010-Jun-24
# Project .. wibu/wk/dev/drc/linux
# Author ... Heiko Abraham (ha)
#
# Change Report
# 00May26 2.53 mn:  Port initialisation design 
# 00Aug18 3.00 mn:  Some beautifying and commenting
# 01Mar05 3.01 mn:  Setting the device is now in kesrl.c:AccessCOM()
# 05May03 3.03 ha:  changes for WkLAN support
# 08Oct02 4.20 ha:  update for USB support
# 08Oct02 4.30 ha:  add jni/java part 
# 01Jul20 4.31 ha:  extend indirect encryption
#
##############################################################################


AR = ar
CC = gcc

# CC = /usr/local/cris/cris-gcc
# STRIP = /usr/local/cris/cris-strip
# AR = /usr/local/cris/bin/cris-ar

RM = rm -f
JAVADOC=javadoc
JAVAC=javac -target 1.3 -source 1.3
JAR=jar
GCC_VERSION_MAJOR ?= $(shell $(CC) --version | sed -n 's/^.*GCC. //p' | sed 's/\..*//')
MYOSVERSION ?= $(shell uname -s)
ifeq ($(GCC_VERSION_MAJOR), 4)
  ARCHFLAG = -m32
else
  ARCHFLAG =
endif
CFLAGS = -fPIC -g -D_UNIX $(ARCHFLAG) -fno-strict-aliasing -Wall -falign-loops=16  -D__SMP__   -D_REENTRANT -D_THREAD_SAFE

# CFLAGS += -isystem /usr/local/cris/cris-axis-linux-gnu/sys-include 
# CFLAGS += -mlinux -mno-mul-bug-workaround -D_CRIS

# LDFLAGS += -L/usr/local/cris/cris-axis-linux-gnu/lib
# LDFLAGS +=  -mlinux -mno-mul-bug-workaround
# LDLIBS = -lc

ifeq ($(MYOSVERSION), Darwin)
  CFLAGS = -fPIC -D_UNIX -arch i386 -arch ppc 
  ARCHFLAG = 
endif

#CFLAGS = -ggdb -Wall -D_DEBUG -D_UNIX 
AFLAG = rcs


########################################
# set all files
########################################
HDRS  =	proj.h \
	wkstd.h \
	wk.h \
	config.h \
	usblinux.h



OBJS1 =	\
	alcrypt.o \
	bsremul.o \
	clcommon.o \
	clcrypt.o \
	cllist.o \
	clmem.o \
	clopen.o \
	clpgm.o \
	clport.o \
	clstruct.o \
	clsubs.o \
	getfcuc.o \
	kecommon.o \
	kemach.o \
	kesrl.o \
	kesys.o \
	keusb.o \
	mncalls.o \
	mncommon.o \
	mnlan.o \
	mnnet.o \
	mnsys.o \
	usblinux.o \
	usbmgr.o 


########################################
# build area
########################################
all: lib unittest


lib: $(OBJS1) 
	$(AR) $(AFLAG) libwk.a $(OBJS1)


libso: $(OBJS1)
	$(CC) -shared -o libwk.so $(OBJS1) -lm -lc

### All object files will be generated with this command.
.c.o:
	$(CC) $(CFLAGS) -c $< 

########################################
# dependancies
########################################
$(OBJS1):	$(HDRS)

clean:
	$(RM) libwk.a
	$(RM) *.o
	$(RM) *~
	( cd Samples/FSearch ; make clean )
	( cd Samples/UUEncode ; make clean )
	( cd Samples/wkloop ; make clean )
	( cd Samples/wkscan ; make clean )
	( cd Test ; make clean )
	( cd jni ; make clean )
	cd java/com/wibu ;\
	$(RM) *.class
	$(RM) java/JavaDoc.tar.gz
	$(RM) java/WkJavaApi.jar


dist: clean


unittest:
	cd Test ;\
	$(MAKE) clean && $(MAKE)


install: lib
	mkdir -p    $(DESTDIR)/usr/include
	mkdir -p    $(DESTDIR)/usr/lib
	cp wk.h     $(DESTDIR)/usr/include
	cp libwk.a  $(DESTDIR)/usr/lib


uninstall:
	$(RM) $(DESTDIR)/usr/include/wk.h
	$(RM) $(DESTDIR)/usr/lib/libwk.a


java: jar javadoc jni2 jvtest


jni2:
	@echo "build JNI lib"
	cd jni ;\
	$(MAKE) clean && $(MAKE)

jar:
	$(JAVAC) -deprecation  java/com/wibu/*.java
	cd java ;\
	$(JAR)   cvfm WkJavaApi.jar MANIFEST.MF com/wibu/*.class


jvtest:
	$(JAVAC) -classpath java -deprecation  java/*.java


javadoc:
	cd java ;\
	rm -rf JavaDoc ;\
	${JAVADOC} -d JavaDoc -footer "Version ${MAJORV}.${MINORV}" \
	  -use -overview Overview.html \
	  -windowtitle "WibuKey Java API-Documentation" \
	  com/wibu/WkJavaApi.java 
	if [ -d java/JavaDoc ] ; then \
	  cp java/WibuKeyJavaAdaption.PNG java/JavaDoc ;\
	  tar -cpz java/JavaDoc -f java/JavaDoc.tar.gz ;\
	  rm -rf java/JavaDoc ;\
	else \
	  echo "Java SDK not installed or javadoc not found" ;\
	  exit 1 ;\
	fi


mktest: java
	cd Test ;\
	./wktst
	cd java ;\
	java -classpath . WkTest


########################################
# end of Makefile
########################################
