#
# Makefile
#
#
# Variables for building the HID manager - requires at least gcc ver 4.7.3
#
FRAMEWORK_PATH=../../../../../..
include $(FRAMEWORK_PATH)/../makedefs

CLASSPATH=$(FRAMEWORK_PATH)/Common/src:$(FRAMEWORK_PATH)/HidManagement/src
#JDK=/usr/lib/jvm/java-6-sun-1.6.0.26

MACHTYPE=$(shell uname -m)
ifeq (${MACHTYPE},x86_64)
    BITS=64
else
    BITS=32
endif
   
CC64=gcc
CCFLAGS64=-m64 -fPIC
BUILD_DIR64=./build_linux64
LIB_DIR64=./lib_linux64

CC32=gcc
CCFLAGS32=-m32 -fPIC
BUILD_DIR32=./build_linux32
LIB_DIR32=./lib_linux32


JNICFLAGS=-c -I${JDK}/include -I${JDK}/include/linux -std=gnu99 -D__int64="long long" -fPIC

HIDAPI_ROOT=jni/hidapi
HIDAPI_DIR=jni/hidapi/hidapi
JNILDFLAGS=-Wall -D_JNI_IMPLEMENTATION_ 

HID_SOURCE=${HIDAPI_ROOT}/linux/hid-libusb.c
WINLIBS=-lusb-1.0
#HID_SOURCE=${HIDAPI_ROOT}/linux/hid.c
#WINLIBS=-lusb-1.0 -ludev -lrt

JNISRC=com_ti_msp430_HidManagement_HidCommunicationManager.c
JNIOBJS=com_ti_msp430_HidManagement_HidCommunicationManager.o

.SUFFIXES: .java .class

default: clean init javah jni$(BITS)

classes:
	${JDK}/bin/javac -classpath ${CLASSPATH} *.java

javah: classes
	${JDK}/bin/javah  -classpath ${CLASSPATH} -jni com.ti.msp430.HidManagement.HidCommunicationManager 


init:
	mkdir -p $(BUILD_DIR32)
	mkdir -p $(LIB_DIR32)
	mkdir -p $(BUILD_DIR64)
	mkdir -p $(LIB_DIR64)

${LIB_DIR32}/libHidCommunicationManagerLinux.so:
	${CC32} ${CCFLAGS32} -I${HIDAPI_DIR} -c ${HID_SOURCE} -o ${BUILD_DIR32}/hid.o 
	${CC32} ${JNICFLAGS} -I${HIDAPI_DIR} -I. jni/${JNISRC} -o ${BUILD_DIR32}/${JNIOBJS} 
	${CC32} ${CCFLAGS32} ${BUILD_DIR32}/${JNIOBJS} ${BUILD_DIR32}/hid.o ${WINLIBS} -o ${LIB_DIR32}/libHidCommunicationManagerLinux.so ${JNILDFLAGS} -shared -static-libgcc 

jni32: ${LIB_DIR32}/libHidCommunicationManagerLinux.so

${LIB_DIR64}/libHidCommunicationManagerLinux64.so:
	${CC64} ${CCFLAGS64} -I${HIDAPI_DIR} -c ${HID_SOURCE} -o ${BUILD_DIR64}/hid.o 
	${CC64} ${JNICFLAGS} -I${HIDAPI_DIR} -I. jni/${JNISRC} -o ${BUILD_DIR64}/${JNIOBJS} 
	${CC64} ${CCFLAGS65} ${BUILD_DIR64}/${JNIOBJS} ${BUILD_DIR64}/hid.o ${WINLIBS} -o ${LIB_DIR64}/libHidCommunicationManagerLinux64.so ${JNILDFLAGS} -shared -static-libgcc 

jni64: ${LIB_DIR64}/libHidCommunicationManagerLinux64.so


clean:
	rm -rf *.class 
	rm -rf $(BUILD_DIR32) $(BUILD_DIR64) 


