#
# Makefile
#
#
# Variables for building the HID manager - requires at least gcc ver 4.7.3
#
FRAMEWORK_PATH=../../../../../..
CLASSPATH=$(FRAMEWORK_PATH)/Common/src;$(FRAMEWORK_PATH)/HidManagement/src
#JDK=/cygdrive/c/jdk6
JDK=/cygdrive/c/jdk7

CC64=x86_64-w64-mingw32-gcc
CXX64=x86_64-w64-mingw32-g++
CCFLAGS64=-m64
BUILD_DIR64=./build64
LIB_DIR64=./lib_windows64

CC32=i686-pc-mingw32-gcc
CXX32=i686-pc-mingw32-g++
CCFLAGS32=-m32
BUILD_DIR32=./build32
LIB_DIR32=./lib_windows32


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

HIDAPI_ROOT=jni/hidapi
HIDAPI_DIR=jni/hidapi/hidapi
WINOBJS=${HIDAPI_ROOT}windows/hid.c
JNILDFLAGS=-Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at
WINLIBS=-lsetupapi
JNI_DIR=com/ti/msp430/HidManagement
JNISRC=com_ti_msp430_HidManagement_HidCommunicationManager.c
JNIOBJS=com_ti_msp430_HidManagement_HidCommunicationManager.o

# Have to define HOME instead of CURDIR because CURDIR in cygwin is /cygdrive/c and Java chokes on this
ROOT=${shell cygpath -m `pwd`}
 
.SUFFIXES: .java .class


default: clean init javah jni32 jni64

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}/HidCommunicationManager.dll:
	${CC32} ${CCFLAGS32} -I${HIDAPI_DIR} -c ${HIDAPI_ROOT}/windows/hid.c -o ${BUILD_DIR32}/hid.o 
	${CC32} ${JNICFLAGS} -I${HIDAPI_DIR} -I. jni/${JNISRC} -o ${BUILD_DIR32}/${JNIOBJS} 
	${CC32} ${BUILD_DIR32}/${JNIOBJS} ${BUILD_DIR32}/hid.o ${WINLIBS} -o ${LIB_DIR32}/HidCommunicationManager.dll ${JNILDFLAGS} -shared -static-libgcc 

jni32: ${LIB_DIR32}/HidCommunicationManager.dll

${LIB_DIR64}/HidCommunicationManager64.dll:
	${CC64} ${CCFLAGS64} -I${HIDAPI_DIR} -c ${HIDAPI_ROOT}/windows/hid.c -o ${BUILD_DIR64}/hid.o 
	${CC64} ${JNICFLAGS} -I${HIDAPI_DIR} -I. jni/${JNISRC} -o ${BUILD_DIR64}/${JNIOBJS} 
	${CC64} ${BUILD_DIR64}/${JNIOBJS} ${BUILD_DIR64}/hid.o ${WINLIBS} -o ${LIB_DIR64}/HidCommunicationManager64.dll ${JNILDFLAGS} -shared -static-libgcc 

jni64: ${LIB_DIR64}/HidCommunicationManager64.dll


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


