# @version $Revision: 2808 $ ($Author: skarzhevskyy $) $Date: 2009-02-26 19:08:41 -0500 (Thu, 26 Feb 2009) $
#
# Created by Francois Kooman
#
# Use this file in case you don't have ant or maven installed on the system
# Usage: make all
#

BLUECOVE_VERSION=2.1.1-SNAPSHOT

BLUECOVE_JAR=../bluecove/target/bluecove-${BLUECOVE_VERSION}.jar
JAVAH=$(JAVA_HOME)/bin/javah
JAVAC=$(JAVA_HOME)/bin/javac
JAVAC_OPTIONS=-g -Xlint:unchecked -source 1.3 -target 1.1
CC=gcc
CFLAGS=-Wall -fPIC # -Werror
# you really need bluez-libs-devel installed (for -lbluetooth)!
# -nodefaultlibs ->  statically linked
CLIBFLAGS=$(CFLAGS) -nodefaultlibs -shared -lbluetooth -Wl,-soname,libbluecove-$(BLUECOVE_VERSION)
SRC_C_DIR=src/main/c
SRC_JAVA_DIR=src/main/java
CLASSES_DIR=target/classes
OBJ_DIR=target/native
JAVACLASSES=com.intel.bluetooth.BluetoothStackBlueZ com.intel.bluetooth.BluetoothStackBlueZConsts com.intel.bluetooth.BluetoothStackBlueZNativeTests
LIBPOSTFIX=`uname -p | grep 64 | sed 's/.*64.*/_x64/g'`

TARGET_LIB=target/libbluecove$(LIBPOSTFIX).so

CLASSPATH=$(BLUECOVE_JAR)

all: classes jni-headers native-lib

classes:
	-@mkdir -p $(CLASSES_DIR)
	-@$(JAVAC) -d $(CLASSES_DIR) $(JAVAC_OPTIONS) -classpath $(CLASSPATH) \
	$(SRC_JAVA_DIR)/com/intel/bluetooth/*.java

jni-headers:
	-@$(JAVAH) -d $(SRC_C_DIR) \
	-classpath $(CLASSPATH):$(CLASSES_DIR) \
	$(JAVACLASSES)

native-lib:
	-@mkdir -p $(OBJ_DIR)
	-@cd $(OBJ_DIR) && \
	$(CC) $(CFLAGS) -c ../../$(SRC_C_DIR)/*.c -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
	-@$(CC) $(CLIBFLAGS) -o $(TARGET_LIB) $(OBJ_DIR)/*.o
	-@strip $(TARGET_LIB)
	-@cp $(TARGET_LIB) $(CLASSES_DIR)/libbluecove$(LIBPOSTFIX).so
	-@echo "Native library $(TARGET_LIB) created"
	-@echo "Shared library dependencies:"
	-@ldd -v $(TARGET_LIB)

clean:
	rm -rf target

