diff --git a/android/apps/camera_template/Makefile b/android/apps/camera_template/Makefile index 3d1e8eec62..4bec050c02 100644 --- a/android/apps/camera_template/Makefile +++ b/android/apps/camera_template/Makefile @@ -1,28 +1,31 @@ #Re-usable Makefile template for #android-ndk + swig projects -#author: Ethan Rublee -#date: summer 2010 - # The path to the NDK, requires crystax version r-4 for now, due to support -#for the standard library -ifndef ANDROID_NDK_BASE -ANDROID_NDK_BASE = $(HOME)/android-ndk-r4-crystax -$(info default ndk location set ANDROID_NDK_BASE = $(ANDROID_NDK_BASE)) +# for the standard library + +# load environment from local make file +LOCAL_ENV_MK=local.env.mk +ifneq "$(wildcard $(LOCAL_ENV_MK))" "" +include $(LOCAL_ENV_MK) +else +$(shell cp sample.$(LOCAL_ENV_MK) $(LOCAL_ENV_MK)) +$(info ERROR local environement not setup! try:) +$(info gedit $(LOCAL_ENV_MK)) +$(error Please setup the $(LOCAL_ENV_MK) - the default was just created') endif - -#define OPENCV_ROOT when calling this makefile -#OPENCV_ROOT = $(ANDROID_NDK_BASE)/apps/opencv -ifndef OPENCV_ROOT -$(error Please define OPENCV_ROOT with something like the command \ -make OPENCV_ROOT=) +ifndef ARM_TARGETS +ARM_TARGETS="armeabi armeabi-v7a" endif +ANDROID_NDK_BASE = $(ANDROID_NDK_ROOT) + +$(info OPENCV_CONFIG = $(OPENCV_CONFIG)) ifndef PROJECT_PATH $(info PROJECT_PATH defaulting to this directory) PROJECT_PATH=. endif -$(info OPENCV_ROOT = $(OPENCV_ROOT)) +android_jni=../../android-jni/jni # The name of the native library LIBNAME = libfoobar.so @@ -42,46 +45,43 @@ SWIG_BASE = foobar #swig interface files are in jni/*.i SWIG_JAVA_OUT = $(wildcard $(SWIG_JAVA_DIR)/*.java) SWIG_IS = $(wildcard jni/*.i) +#the main swig file that includes others +SWIG_MAIN = jni/foobar.i +SWIG_C_DIR = jni/gen +SWIG_C_OUT = $(SWIG_C_DIR)/foo_swig.cpp -#the directory where the jni sources are -C_DIR = jni +# Find all the C++ sources in the native folder +SOURCES = $(wildcard jni/*.cpp) +HEADERS = $(wildcard jni/*.h) -#directory where to put generated files -#relative to the C_DIR -GEN_DIR = gen +ANDROID_MKS = $(wildcard jni/*.mk) -#the c swig is generated and put into the jni/gen folder -SWIG_C_DIR = $(C_DIR)/$(GEN_DIR) -#this file - jin/gen/foobar_swig.cpp must be included in the Android.mk -#for it to be built! -SWIG_C_OUT = $(SWIG_C_DIR)/$(SWIG_BASE)_swig.cpp +BUILD_DEFS=OPENCV_CONFIG=$(OPENCV_CONFIG) \ + PROJECT_PATH=$(PROJECT_PATH) \ + V=$(V) \ + $(NDK_FLAGS) \ + ARM_TARGETS=$(ARM_TARGETS) \ + SWIG_C_OUT=$(SWIG_C_OUT) # The real native library stripped of symbols LIB = libs/armeabi-v7a/$(LIBNAME) libs/armeabi/$(LIBNAME) -# Find all the C++ sources in the native folder -SOURCES = $(wildcard jni/*.cpp) -HEADERS = $(wildcard jni/*.h) - -ANDROID_MKS = $(wildcard jni/*.mk) -#this gets called by the make command all: $(LIB) + #calls the ndk-build script, passing it OPENCV_ROOT and OPENCV_LIBS_DIR $(LIB): $(SWIG_C_OUT) $(SOURCES) $(HEADERS) $(ANDROID_MKS) - $(ANDROID_NDK_BASE)/ndk-build OPENCV_ROOT=$(OPENCV_ROOT) \ - OPENCV_LIBS_DIR=$(OPENCV_LIBS_DIR) PROJECT_PATH=$(PROJECT_PATH) SWIG_C_OUT=$(GEN_DIR)/$(SWIG_BASE)_swig.cpp V=$(V) $(NDK_FLAGS) + $(ANDROID_NDK_BASE)/ndk-build $(BUILD_DEFS) #this creates the swig wrappers -#-I$(OPENCV_ROOT)/android/jni is an additional swig include path $(SWIG_C_OUT): $(SWIG_IS) make clean-swig &&\ mkdir -p $(SWIG_C_DIR) &&\ mkdir -p $(SWIG_JAVA_DIR) &&\ - swig -java -c++ -I$(OPENCV_ROOT)/android/jni -package "$(SWIG_JAVA_PACKAGE)" \ + swig -java -c++ -I$(android_jni) -package "$(SWIG_JAVA_PACKAGE)" \ -outdir $(SWIG_JAVA_DIR) \ -o $(SWIG_C_OUT) $(SWIG_MAIN) @@ -95,4 +95,6 @@ clean-swig: #does clean-swig and then uses the ndk-build clean clean: clean-swig - $(ANDROID_NDK_BASE)/ndk-build clean V=$(V) $(NDK_FLAGS) + $(ANDROID_NDK_BASE)/ndk-build clean $(BUILD_DEFS) + + diff --git a/android/apps/camera_template/default.properties b/android/apps/camera_template/default.properties index 887872424a..22f3e44f0e 100644 --- a/android/apps/camera_template/default.properties +++ b/android/apps/camera_template/default.properties @@ -7,6 +7,6 @@ # "build.properties", and override values to adapt the script to your # project structure. -android.library.reference.1=../../opencv/android/ +android.library.reference.1=../../android-jni/ # Project target. target=android-7 diff --git a/android/apps/camera_template/jni/Android.mk b/android/apps/camera_template/jni/Android.mk index b66bb70328..a943255bd1 100644 --- a/android/apps/camera_template/jni/Android.mk +++ b/android/apps/camera_template/jni/Android.mk @@ -6,16 +6,8 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -#pass in OPENCV_ROOT or define it here -#OPENCV_ROOT := ~/android-opencv/opencv -ifndef OPENCV_ROOT -${error please define OPENCV_ROOT before this point!} -endif - -#define OPENCV_INCLUDES -include $(OPENCV_ROOT)/includes.mk -#define OPENCV_LIBS -include $(OPENCV_ROOT)/libs.mk +#define OPENCV_INCLUDES and OPENCV_LIBS +include $(OPENCV_CONFIG) LOCAL_LDLIBS += $(OPENCV_LIBS) $(ANDROID_OPENCV_LIBS) -llog -lGLESv2 @@ -23,14 +15,9 @@ LOCAL_C_INCLUDES += $(OPENCV_INCLUDES) $(ANDROID_OPENCV_INCLUDES) LOCAL_MODULE := foobar - -ifndef SWIG_C_OUT -${error please define SWIG_C_OUT before this point!} -endif - #make sure to pass in SWIG_C_OUT=gen/foobar_swig.cpp #done in the makefile -LOCAL_SRC_FILES := ${SWIG_C_OUT} TestBar.cpp +LOCAL_SRC_FILES := gen/foo_swig.cpp TestBar.cpp include $(BUILD_SHARED_LIBRARY) diff --git a/android/apps/camera_template/jni/Application.mk b/android/apps/camera_template/jni/Application.mk index a2c96a8fe8..0bbce43113 100644 --- a/android/apps/camera_template/jni/Application.mk +++ b/android/apps/camera_template/jni/Application.mk @@ -1,2 +1,2 @@ # The ARMv7 is significanly faster due to the use of the hardware FPU -APP_ABI := armeabi armeabi-v7a \ No newline at end of file +APP_ABI := $(ARM_TARGETS) \ No newline at end of file diff --git a/android/apps/camera_template/sample.local.env.mk b/android/apps/camera_template/sample.local.env.mk new file mode 100644 index 0000000000..b0cf78fd36 --- /dev/null +++ b/android/apps/camera_template/sample.local.env.mk @@ -0,0 +1,4 @@ +#location of android-opencv port of OpenCV to android +OPENCV_CONFIG=../../build/android-opencv.mk +ANDROID_NDK_ROOT=$(HOME)/android-ndk-r4-crystax +ARM_TARGETS="armeabi armeabi-v7a"