1# In order to compile your application under cygwin 2# you might need to define NDK_USE_CYGPATH=1 before calling the ndk-build 3 4USER_LOCAL_PATH:=$(LOCAL_PATH) 5 6USER_LOCAL_C_INCLUDES:=$(LOCAL_C_INCLUDES) 7USER_LOCAL_CFLAGS:=$(LOCAL_CFLAGS) 8USER_LOCAL_STATIC_LIBRARIES:=$(LOCAL_STATIC_LIBRARIES) 9USER_LOCAL_SHARED_LIBRARIES:=$(LOCAL_SHARED_LIBRARIES) 10USER_LOCAL_LDLIBS:=$(LOCAL_LDLIBS) 11 12LOCAL_PATH:=$(subst ?,,$(firstword ?$(subst \, ,$(subst /, ,$(call my-dir))))) 13 14OPENCV_TARGET_ARCH_ABI:=$(TARGET_ARCH_ABI) 15OPENCV_THIS_DIR:=$(patsubst $(LOCAL_PATH)\\%,%,$(patsubst $(LOCAL_PATH)/%,%,$(call my-dir))) 16OPENCV_MK_DIR:=$(dir $(lastword $(MAKEFILE_LIST))) 17OPENCV_3RDPARTY_LIBS_DIR:=$(OPENCV_THIS_DIR)/../3rdparty/libs/$(OPENCV_TARGET_ARCH_ABI) 18OPENCV_BASEDIR:= 19OPENCV_LOCAL_C_INCLUDES:="$(LOCAL_PATH)/$(OPENCV_THIS_DIR)/include/opencv" "$(LOCAL_PATH)/$(OPENCV_THIS_DIR)/include" 20OPENCV_MODULES:=calib3d features2d imgcodecs imgproc core 21OPENCV_SUB_MK:=$(call my-dir)/OpenCV-$(TARGET_ARCH_ABI).mk 22 23ifeq ($(OPENCV_LIB_TYPE),) 24 OPENCV_LIB_TYPE:=SHARED 25endif 26 27ifeq ($(OPENCV_LIB_TYPE),SHARED) 28 OPENCV_LIBS:=java3 29 OPENCV_LIB_TYPE:=SHARED 30else 31 OPENCV_LIBS:=$(OPENCV_MODULES) 32 OPENCV_LIB_TYPE:=STATIC 33endif 34 35ifeq ($(OPENCV_LIB_TYPE),SHARED) 36 OPENCV_3RDPARTY_COMPONENTS:= 37 OPENCV_EXTRA_COMPONENTS:= 38else 39 include $(OPENCV_SUB_MK) 40endif 41 42ifeq ($(OPENCV_LIB_TYPE),SHARED) 43 OPENCV_LIBS_DIR:=$(OPENCV_THIS_DIR)/../libs/$(OPENCV_TARGET_ARCH_ABI) 44 OPENCV_LIB_SUFFIX:=so 45else 46 OPENCV_LIBS_DIR:=$(OPENCV_THIS_DIR)/../staticlibs/$(OPENCV_TARGET_ARCH_ABI) 47 OPENCV_LIB_SUFFIX:=a 48 OPENCV_INSTALL_MODULES:=on 49endif 50 51define add_opencv_module 52 include $(CLEAR_VARS) 53 LOCAL_MODULE:=opencv_$1 54 LOCAL_SRC_FILES:=$(OPENCV_LIBS_DIR)/libopencv_$1.$(OPENCV_LIB_SUFFIX) 55 include $(PREBUILT_$(OPENCV_LIB_TYPE)_LIBRARY) 56endef 57 58define add_opencv_3rdparty_component 59 include $(CLEAR_VARS) 60 LOCAL_MODULE:=$1 61 LOCAL_SRC_FILES:=$(OPENCV_3RDPARTY_LIBS_DIR)/lib$1.a 62 include $(PREBUILT_STATIC_LIBRARY) 63endef 64 65ifeq ($(OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED),) 66 ifeq ($(OPENCV_INSTALL_MODULES),on) 67 $(foreach module,$(OPENCV_LIBS),$(eval $(call add_opencv_module,$(module)))) 68 endif 69 70 $(foreach module,$(OPENCV_3RDPARTY_COMPONENTS),$(eval $(call add_opencv_3rdparty_component,$(module)))) 71 72 ifneq ($(OPENCV_BASEDIR),) 73 OPENCV_LOCAL_C_INCLUDES += $(foreach mod, $(OPENCV_MODULES), $(OPENCV_BASEDIR)/modules/$(mod)/include) 74 endif 75 76 #turn off module installation to prevent their redefinition 77 OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED:=on 78endif 79 80ifeq ($(OPENCV_LOCAL_CFLAGS),) 81 OPENCV_LOCAL_CFLAGS := -fPIC -DANDROID -fsigned-char 82endif 83 84include $(CLEAR_VARS) 85 86LOCAL_C_INCLUDES:=$(USER_LOCAL_C_INCLUDES) 87LOCAL_CFLAGS:=$(USER_LOCAL_CFLAGS) 88LOCAL_STATIC_LIBRARIES:=$(USER_LOCAL_STATIC_LIBRARIES) 89LOCAL_SHARED_LIBRARIES:=$(USER_LOCAL_SHARED_LIBRARIES) 90LOCAL_LDLIBS:=$(USER_LOCAL_LDLIBS) 91 92# Details: #10229 93ifeq ($(OPENCV_SKIP_ANDROID_IPP_FIX_1),) 94 LOCAL_LDFLAGS += -Wl,--exclude-libs,libippicv.a 95 LOCAL_LDFLAGS += -Wl,--exclude-libs,libippiw.a 96else 97 ifeq ($(OPENCV_SKIP_ANDROID_IPP_FIX_2),) 98 LOCAL_LDFLAGS += -Wl,-Bsymbolic 99 endif 100endif 101 102LOCAL_C_INCLUDES += $(OPENCV_LOCAL_C_INCLUDES) 103LOCAL_CFLAGS += $(OPENCV_LOCAL_CFLAGS) 104 105ifeq ($(OPENCV_INSTALL_MODULES),on) 106 LOCAL_$(OPENCV_LIB_TYPE)_LIBRARIES += $(foreach mod, $(OPENCV_LIBS), opencv_$(mod)) 107else 108 $(call __ndk_info,OpenCV: You should ignore warning about 'non-system libraries in linker flags' and 'opencv_java' library.) 109 $(call __ndk_info, 'OPENCV_INSTALL_MODULES:=on' can be used to build APK with included OpenCV binaries) 110 LOCAL_LDLIBS += -L$(call host-path,$(LOCAL_PATH)/$(OPENCV_LIBS_DIR)) $(foreach lib, $(OPENCV_LIBS), -lopencv_$(lib)) 111endif 112 113ifeq ($(OPENCV_LIB_TYPE),STATIC) 114 LOCAL_STATIC_LIBRARIES += $(OPENCV_3RDPARTY_COMPONENTS) 115endif 116 117LOCAL_LDLIBS += $(foreach lib,$(OPENCV_EXTRA_COMPONENTS), -l$(lib)) 118 119#restore the LOCAL_PATH 120LOCAL_PATH:=$(USER_LOCAL_PATH) 121