tizen 2.4 release
[external/opencv.git] / cmake / templates / OpenCV.mk.in
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
4 USER_LOCAL_PATH:=$(LOCAL_PATH)
5
6 USER_LOCAL_C_INCLUDES:=$(LOCAL_C_INCLUDES)
7 USER_LOCAL_CFLAGS:=$(LOCAL_CFLAGS)
8 USER_LOCAL_STATIC_LIBRARIES:=$(LOCAL_STATIC_LIBRARIES)
9 USER_LOCAL_SHARED_LIBRARIES:=$(LOCAL_SHARED_LIBRARIES)
10 USER_LOCAL_LDLIBS:=$(LOCAL_LDLIBS)
11
12 LOCAL_PATH:=$(subst ?,,$(firstword ?$(subst \, ,$(subst /, ,$(call my-dir)))))
13
14 OPENCV_TARGET_ARCH_ABI:=$(TARGET_ARCH_ABI)
15 OPENCV_THIS_DIR:=$(patsubst $(LOCAL_PATH)\\%,%,$(patsubst $(LOCAL_PATH)/%,%,$(call my-dir)))
16 OPENCV_MK_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
17 OPENCV_LIBS_DIR:=@OPENCV_LIBS_DIR_CONFIGCMAKE@
18 OPENCV_3RDPARTY_LIBS_DIR:=@OPENCV_3RDPARTY_LIBS_DIR_CONFIGCMAKE@
19 OPENCV_BASEDIR:=@OPENCV_BASE_INCLUDE_DIR_CONFIGCMAKE@
20 OPENCV_LOCAL_C_INCLUDES:=@OPENCV_INCLUDE_DIRS_CONFIGCMAKE@
21 OPENCV_MODULES:=@OPENCV_MODULES_CONFIGMAKE@
22
23 OPENCV_HAVE_GPU_MODULE:=@OPENCV_HAVE_GPU_MODULE_CONFIGMAKE@
24 OPENCV_USE_GPU_MODULE:=
25
26 ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
27     ifeq ($(OPENCV_HAVE_GPU_MODULE),on)
28         ifneq ($(CUDA_TOOLKIT_DIR),)
29             OPENCV_USE_GPU_MODULE:=on
30         endif
31     endif
32     OPENCV_DYNAMICUDA_MODULE:=@OPENCV_DYNAMICUDA_MODULE_CONFIGMAKE@
33 else
34     OPENCV_DYNAMICUDA_MODULE:=
35 endif
36
37 CUDA_RUNTIME_LIBS:=@CUDA_RUNTIME_LIBS_CONFIGMAKE@
38
39 ifeq ($(OPENCV_LIB_TYPE),)
40     OPENCV_LIB_TYPE:=@OPENCV_LIBTYPE_CONFIGMAKE@
41 endif
42
43 ifeq ($(OPENCV_LIB_TYPE),SHARED)
44     OPENCV_LIBS:=@OPENCV_LIBS_CONFIGMAKE@
45     OPENCV_LIB_TYPE:=@OPENCV_LIBTYPE_CONFIGMAKE@
46 else
47     OPENCV_LIBS:=$(OPENCV_MODULES)
48     OPENCV_LIB_TYPE:=@OPENCV_STATIC_LIBTYPE_CONFIGMAKE@
49 endif
50
51 ifeq ($(OPENCV_LIB_TYPE),SHARED)
52     OPENCV_3RDPARTY_COMPONENTS:=
53     OPENCV_EXTRA_COMPONENTS:=
54 else
55     ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
56         OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE@
57         OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
58     endif
59     ifeq ($(TARGET_ARCH_ABI),x86)
60         OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE@
61         OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
62     endif
63     ifeq ($(TARGET_ARCH_ABI),armeabi)
64         OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE_NO_TBB@
65         OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
66     endif
67     ifeq ($(TARGET_ARCH_ABI),mips)
68         OPENCV_3RDPARTY_COMPONENTS:=@OPENCV_3RDPARTY_COMPONENTS_CONFIGMAKE@
69         OPENCV_EXTRA_COMPONENTS:=@OPENCV_EXTRA_COMPONENTS_CONFIGMAKE@
70     endif
71 endif
72
73 ifeq ($(OPENCV_CAMERA_MODULES),on)
74     ifeq ($(TARGET_ARCH_ABI),armeabi)
75         OPENCV_CAMERA_MODULES:=@OPENCV_CAMERA_LIBS_ARMEABI_CONFIGCMAKE@
76     endif
77     ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
78         OPENCV_CAMERA_MODULES:=@OPENCV_CAMERA_LIBS_ARMEABI_V7A_CONFIGCMAKE@
79     endif
80     ifeq ($(TARGET_ARCH_ABI),x86)
81         OPENCV_CAMERA_MODULES:=@OPENCV_CAMERA_LIBS_X86_CONFIGCMAKE@
82     endif
83     ifeq ($(TARGET_ARCH_ABI),mips)
84         OPENCV_CAMERA_MODULES:=@OPENCV_CAMERA_LIBS_MIPS_CONFIGCMAKE@
85     endif
86 else
87     OPENCV_CAMERA_MODULES:=
88 endif
89
90 ifeq ($(OPENCV_LIB_TYPE),SHARED)
91     OPENCV_LIB_SUFFIX:=so
92 else
93     OPENCV_LIB_SUFFIX:=a
94     OPENCV_INSTALL_MODULES:=on
95 endif
96
97 define add_opencv_module
98     include $(CLEAR_VARS)
99     LOCAL_MODULE:=opencv_$1
100     LOCAL_SRC_FILES:=$(OPENCV_LIBS_DIR)/libopencv_$1.$(OPENCV_LIB_SUFFIX)
101     include $(PREBUILT_$(OPENCV_LIB_TYPE)_LIBRARY)
102 endef
103
104 define add_cuda_module
105     include $(CLEAR_VARS)
106     LOCAL_MODULE:=$1
107     LOCAL_SRC_FILES:=$(CUDA_TOOLKIT_DIR)/targets/armv7-linux-androideabi/lib/lib$1.so
108     include $(PREBUILT_SHARED_LIBRARY)
109 endef
110
111 define add_opencv_3rdparty_component
112     include $(CLEAR_VARS)
113     LOCAL_MODULE:=$1
114     LOCAL_SRC_FILES:=$(OPENCV_3RDPARTY_LIBS_DIR)/lib$1.a
115     include $(PREBUILT_STATIC_LIBRARY)
116 endef
117
118 define add_opencv_camera_module
119     include $(CLEAR_VARS)
120     LOCAL_MODULE:=$1
121     LOCAL_SRC_FILES:=$(OPENCV_LIBS_DIR)/lib$1.so
122     include $(PREBUILT_SHARED_LIBRARY)
123 endef
124
125 ifeq ($(OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED),)
126     ifeq ($(OPENCV_INSTALL_MODULES),on)
127         $(foreach module,$(OPENCV_LIBS),$(eval $(call add_opencv_module,$(module))))
128         ifneq ($(OPENCV_DYNAMICUDA_MODULE),)
129             ifeq ($(OPENCV_LIB_TYPE),SHARED)
130               $(eval $(call add_opencv_module,$(OPENCV_DYNAMICUDA_MODULE)))
131             endif
132         endif
133     endif
134
135     ifeq ($(OPENCV_USE_GPU_MODULE),on)
136         ifeq ($(INSTALL_CUDA_LIBRARIES),on)
137             $(foreach module,$(CUDA_RUNTIME_LIBS),$(eval $(call add_cuda_module,$(module))))
138         endif
139     endif
140
141     $(foreach module,$(OPENCV_3RDPARTY_COMPONENTS),$(eval $(call add_opencv_3rdparty_component,$(module))))
142     $(foreach module,$(OPENCV_CAMERA_MODULES),$(eval $(call add_opencv_camera_module,$(module))))
143
144     ifneq ($(OPENCV_BASEDIR),)
145         OPENCV_LOCAL_C_INCLUDES += $(foreach mod, $(OPENCV_MODULES), $(OPENCV_BASEDIR)/modules/$(mod)/include)
146         ifeq ($(OPENCV_USE_GPU_MODULE),on)
147             OPENCV_LOCAL_C_INCLUDES += $(OPENCV_BASEDIR)/modules/gpu/include
148         endif
149     endif
150
151     #turn off module installation to prevent their redefinition
152     OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_ALREADY_INCLUDED:=on
153 endif
154
155 ifeq ($(OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_GPU_ALREADY_INCLUDED),)
156     ifeq ($(OPENCV_USE_GPU_MODULE),on)
157         include $(CLEAR_VARS)
158         LOCAL_MODULE:=opencv_gpu
159         LOCAL_SRC_FILES:=$(OPENCV_LIBS_DIR)/libopencv_gpu.a
160         include $(PREBUILT_STATIC_LIBRARY)
161     endif
162     OPENCV_MK_$(OPENCV_TARGET_ARCH_ABI)_GPU_ALREADY_INCLUDED:=on
163 endif
164
165 ifeq ($(OPENCV_LOCAL_CFLAGS),)
166     OPENCV_LOCAL_CFLAGS := -fPIC -DANDROID -fsigned-char
167 endif
168
169 include $(CLEAR_VARS)
170
171 LOCAL_C_INCLUDES:=$(USER_LOCAL_C_INCLUDES)
172 LOCAL_CFLAGS:=$(USER_LOCAL_CFLAGS)
173 LOCAL_STATIC_LIBRARIES:=$(USER_LOCAL_STATIC_LIBRARIES)
174 LOCAL_SHARED_LIBRARIES:=$(USER_LOCAL_SHARED_LIBRARIES)
175 LOCAL_LDLIBS:=$(USER_LOCAL_LDLIBS)
176
177 LOCAL_C_INCLUDES += $(OPENCV_LOCAL_C_INCLUDES)
178 LOCAL_CFLAGS     += $(OPENCV_LOCAL_CFLAGS)
179
180 ifeq ($(OPENCV_USE_GPU_MODULE),on)
181     LOCAL_C_INCLUDES += $(CUDA_TOOLKIT_DIR)/include
182 endif
183
184 ifeq ($(OPENCV_INSTALL_MODULES),on)
185     LOCAL_$(OPENCV_LIB_TYPE)_LIBRARIES += $(foreach mod, $(OPENCV_LIBS), opencv_$(mod))
186     ifeq ($(OPENCV_LIB_TYPE),SHARED)
187         ifneq ($(OPENCV_DYNAMICUDA_MODULE),)
188             LOCAL_$(OPENCV_LIB_TYPE)_LIBRARIES += $(OPENCV_DYNAMICUDA_MODULE)
189         endif
190     endif
191 else
192     LOCAL_LDLIBS += -L$(call host-path,$(LOCAL_PATH)/$(OPENCV_LIBS_DIR)) $(foreach lib, $(OPENCV_LIBS), -lopencv_$(lib))
193 endif
194
195 ifeq ($(OPENCV_LIB_TYPE),STATIC)
196     LOCAL_STATIC_LIBRARIES += $(OPENCV_3RDPARTY_COMPONENTS)
197 endif
198
199 LOCAL_LDLIBS += $(foreach lib,$(OPENCV_EXTRA_COMPONENTS), -l$(lib))
200
201 ifeq ($(OPENCV_USE_GPU_MODULE),on)
202     ifeq ($(INSTALL_CUDA_LIBRARIES),on)
203         LOCAL_SHARED_LIBRARIES += $(foreach mod, $(CUDA_RUNTIME_LIBS), $(mod))
204     else
205         LOCAL_LDLIBS += -L$(CUDA_TOOLKIT_DIR)/targets/armv7-linux-androideabi/lib $(foreach lib, $(CUDA_RUNTIME_LIBS), -l$(lib))
206     endif
207     LOCAL_STATIC_LIBRARIES+=libopencv_gpu
208 endif
209
210 #restore the LOCAL_PATH
211 LOCAL_PATH:=$(USER_LOCAL_PATH)