xref: /OK3568_Linux_fs/external/rknpu2/examples/3rdparty/opencv/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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