]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blob - package/opencv3/opencv3.mk
Globally replace $(HOST_DIR)/usr/bin with $(HOST_DIR)/bin
[coffee/buildroot.git] / package / opencv3 / opencv3.mk
1 ################################################################################
2 #
3 # opencv3
4 #
5 ################################################################################
6
7 OPENCV3_VERSION = 3.2.0
8 OPENCV3_SITE = $(call github,opencv,opencv,$(OPENCV3_VERSION))
9 OPENCV3_INSTALL_STAGING = YES
10 OPENCV3_LICENSE = BSD-3-Clause
11 OPENCV3_LICENSE_FILES = LICENSE
12
13 # Uses __atomic_fetch_add_4
14 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
15 OPENCV3_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -latomic"
16 endif
17
18 # OpenCV component options
19 OPENCV3_CONF_OPTS += \
20         -DBUILD_DOCS=OFF \
21         -DBUILD_PERF_TESTS=$(if $(BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS),ON,OFF) \
22         -DBUILD_TESTS=$(if $(BR2_PACKAGE_OPENCV3_BUILD_TESTS),ON,OFF) \
23         -DBUILD_WITH_DEBUG_INFO=OFF \
24         -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF
25
26 ifeq ($(BR2_PACKAGE_OPENCV3_BUILD_TESTS)$(BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS),)
27 OPENCV3_CONF_OPTS += -DINSTALL_TEST=OFF
28 else
29 OPENCV3_CONF_OPTS += -DINSTALL_TEST=ON
30 endif
31
32 # OpenCV build options
33 OPENCV3_CONF_OPTS += \
34         -DBUILD_WITH_STATIC_CRT=OFF \
35         -DENABLE_COVERAGE=OFF \
36         -DENABLE_FAST_MATH=ON \
37         -DENABLE_IMPL_COLLECTION=OFF \
38         -DENABLE_NOISY_WARNINGS=OFF \
39         -DENABLE_OMIT_FRAME_POINTER=ON \
40         -DENABLE_PRECOMPILED_HEADERS=OFF \
41         -DENABLE_PROFILING=OFF \
42         -DOPENCV3_WARNINGS_ARE_ERRORS=OFF
43
44 # OpenCV link options
45 OPENCV3_CONF_OPTS += \
46         -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \
47         -DCMAKE_SKIP_RPATH=OFF \
48         -DCMAKE_USE_RELATIVE_PATHS=OFF
49
50 # OpenCV packaging options:
51 OPENCV3_CONF_OPTS += \
52         -DBUILD_PACKAGE=OFF \
53         -DENABLE_SOLUTION_FOLDERS=OFF \
54         -DINSTALL_CREATE_DISTRIB=OFF
55
56 # OpenCV module selection
57 # * Modules on:
58 #   - core: if not set, opencv does not build anything
59 #   - hal: core's dependency
60 # * Modules off:
61 #   - android*: android stuff
62 #   - apps: programs for training classifiers
63 #   - java: java bindings
64 #   - viz: missing VTK dependency
65 #   - world: all-in-one module
66 #
67 # * Contrib modules from [1] are disabled:
68 #   - opencv_contrib package is not available in Buildroot;
69 #   - OPENCV3_EXTRA_MODULES_PATH is not set.
70 #
71 # [1] https://github.com/Itseez/opencv_contrib
72 OPENCV3_CONF_OPTS += \
73         -DBUILD_opencv_androidcamera=OFF \
74         -DBUILD_opencv_apps=OFF \
75         -DBUILD_opencv_calib3d=$(if $(BR2_PACKAGE_OPENCV3_LIB_CALIB3D),ON,OFF) \
76         -DBUILD_opencv_core=ON \
77         -DBUILD_opencv_features2d=$(if $(BR2_PACKAGE_OPENCV3_LIB_FEATURES2D),ON,OFF) \
78         -DBUILD_opencv_flann=$(if $(BR2_PACKAGE_OPENCV3_LIB_FLANN),ON,OFF) \
79         -DBUILD_opencv_highgui=$(if $(BR2_PACKAGE_OPENCV3_LIB_HIGHGUI),ON,OFF) \
80         -DBUILD_opencv_imgcodecs=$(if $(BR2_PACKAGE_OPENCV3_LIB_IMGCODECS),ON,OFF) \
81         -DBUILD_opencv_imgproc=$(if $(BR2_PACKAGE_OPENCV3_LIB_IMGPROC),ON,OFF) \
82         -DBUILD_opencv_java=OFF \
83         -DBUILD_opencv_ml=$(if $(BR2_PACKAGE_OPENCV3_LIB_ML),ON,OFF) \
84         -DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV3_LIB_OBJDETECT),ON,OFF) \
85         -DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV3_LIB_PHOTO),ON,OFF) \
86         -DBUILD_opencv_shape=$(if $(BR2_PACKAGE_OPENCV3_LIB_SHAPE),ON,OFF) \
87         -DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV3_LIB_STITCHING),ON,OFF) \
88         -DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV3_LIB_SUPERRES),ON,OFF) \
89         -DBUILD_opencv_ts=$(if $(BR2_PACKAGE_OPENCV3_LIB_TS),ON,OFF) \
90         -DBUILD_opencv_video=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEO),ON,OFF) \
91         -DBUILD_opencv_videoio=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEOIO),ON,OFF) \
92         -DBUILD_opencv_videostab=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB),ON,OFF) \
93         -DBUILD_opencv_viz=OFF \
94         -DBUILD_opencv_world=OFF
95
96 # Hardware support options.
97 #
98 # * PowerPC support is turned off since its only effect is altering CFLAGS,
99 #   adding '-mcpu=G3 -mtune=G5' to them, which is already handled by Buildroot.
100 OPENCV3_CONF_OPTS += \
101         -DENABLE_POWERPC=OFF
102
103 # Cuda stuff
104 OPENCV3_CONF_OPTS += \
105         -DBUILD_CUDA_STUBS=OFF \
106         -DBUILD_opencv_cudaarithm=OFF \
107         -DBUILD_opencv_cudabgsegm=OFF \
108         -DBUILD_opencv_cudacodec=OFF \
109         -DBUILD_opencv_cudafeatures2d=OFF \
110         -DBUILD_opencv_cudafilters=OFF \
111         -DBUILD_opencv_cudaimgproc=OFF \
112         -DBUILD_opencv_cudalegacy=OFF \
113         -DBUILD_opencv_cudaobjdetect=OFF \
114         -DBUILD_opencv_cudaoptflow=OFF \
115         -DBUILD_opencv_cudastereo=OFF \
116         -DBUILD_opencv_cudawarping=OFF \
117         -DBUILD_opencv_cudev=OFF \
118         -DWITH_CUBLAS=OFF \
119         -DWITH_CUDA=OFF \
120         -DWITH_CUFFT=OFF
121
122 # NVidia stuff
123 OPENCV3_CONF_OPTS += -DWITH_NVCUVID=OFF
124
125 # AMD stuff
126 OPENCV3_CONF_OPTS += \
127         -DWITH_OPENCLAMDBLAS=OFF \
128         -DWITH_OPENCLAMDFFT=OFF
129
130 # Intel stuff
131 OPENCV3_CONF_OPTS += \
132         -DBUILD_WITH_DYNAMIC_IPP=OFF \
133         -DWITH_INTELPERC=OFF \
134         -DWITH_IPP=OFF \
135         -DWITH_IPP_A=OFF \
136         -DWITH_TBB=OFF
137
138 # Smartek stuff
139 OPENCV3_CONF_OPTS += -DWITH_GIGEAPI=OFF
140
141 # Prosilica stuff
142 OPENCV3_CONF_OPTS += -DWITH_PVAPI=OFF
143
144 # Ximea stuff
145 OPENCV3_CONF_OPTS += -DWITH_XIMEA=OFF
146
147 # Non-Linux support (Android options) must remain OFF:
148 OPENCV3_CONF_OPTS += \
149         -DANDROID=OFF \
150         -DBUILD_ANDROID_CAMERA_WRAPPER=OFF \
151         -DBUILD_ANDROID_EXAMPLES=OFF \
152         -DBUILD_ANDROID_SERVICE=OFF \
153         -DBUILD_FAT_JAVA_LIB=OFF \
154         -DINSTALL_ANDROID_EXAMPLES=OFF \
155         -DWITH_ANDROID_CAMERA=OFF
156
157 # Non-Linux support (Mac OSX options) must remain OFF:
158 OPENCV3_CONF_OPTS += \
159         -DWITH_AVFOUNDATION=OFF \
160         -DWITH_CARBON=OFF \
161         -DWITH_QUICKTIME=OFF
162
163 # Non-Linux support (Windows options) must remain OFF:
164 OPENCV3_CONF_OPTS += \
165         -DWITH_CSTRIPES=OFF \
166         -DWITH_DSHOW=OFF \
167         -DWITH_MSMF=OFF \
168         -DWITH_PTHREADS_PF=OFF \
169         -DWITH_VFW=OFF \
170         -DWITH_VIDEOINPUT=OFF \
171         -DWITH_WIN32UI=OFF
172
173 # Software/3rd-party support options:
174 # - disable all examples
175 OPENCV3_CONF_OPTS += \
176         -DBUILD_EXAMPLES=OFF \
177         -DBUILD_JASPER=OFF \
178         -DBUILD_JPEG=OFF \
179         -DBUILD_OPENEXR=OFF \
180         -DBUILD_PNG=OFF \
181         -DBUILD_TIFF=OFF \
182         -DBUILD_ZLIB=OFF \
183         -DINSTALL_C_EXAMPLES=OFF \
184         -DINSTALL_PYTHON_EXAMPLES=OFF \
185         -DINSTALL_TO_MANGLED_PATHS=OFF
186
187 # Disabled features (mostly because they are not available in Buildroot), but
188 # - eigen: OpenCV does not use it, not take any benefit from it.
189 OPENCV3_CONF_OPTS += \
190         -DWITH_1394=OFF \
191         -DWITH_CLP=OFF \
192         -DWITH_EIGEN=OFF \
193         -DWITH_GDAL=OFF \
194         -DWITH_GPHOTO2=OFF \
195         -DWITH_LAPACK=OFF \
196         -DWITH_MATLAB=OFF \
197         -DWITH_OPENCL=OFF \
198         -DWITH_OPENCL_SVM=OFF \
199         -DWITH_OPENEXR=OFF \
200         -DWITH_OPENNI2=OFF \
201         -DWITH_OPENNI=OFF \
202         -DWITH_UNICAP=OFF \
203         -DWITH_VA=OFF \
204         -DWITH_VA_INTEL=OFF \
205         -DWITH_VTK=OFF \
206         -DWITH_WEBP=OFF \
207         -DWITH_XINE=OFF
208
209 OPENCV3_DEPENDENCIES += zlib
210
211 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),y)
212 OPENCV3_CONF_OPTS += -DWITH_FFMPEG=ON
213 OPENCV3_DEPENDENCIES += ffmpeg bzip2
214 else
215 OPENCV3_CONF_OPTS += -DWITH_FFMPEG=OFF
216 endif
217
218 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GSTREAMER),y)
219 OPENCV3_CONF_OPTS += -DWITH_GSTREAMER_0_10=ON
220 OPENCV3_DEPENDENCIES += gstreamer gst-plugins-base
221 else
222 OPENCV3_CONF_OPTS += -DWITH_GSTREAMER_0_10=OFF
223 endif
224
225 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GSTREAMER1),y)
226 OPENCV3_CONF_OPTS += -DWITH_GSTREAMER=ON
227 OPENCV3_DEPENDENCIES += gstreamer1 gst1-plugins-base
228 else
229 OPENCV3_CONF_OPTS += -DWITH_GSTREAMER=OFF
230 endif
231
232 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK)$(BR2_PACKAGE_OPENCV3_WITH_GTK3),)
233 OPENCV3_CONF_OPTS += -DWITH_GTK=OFF -DWITH_GTK_2_X=OFF
234 endif
235
236 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK),y)
237 OPENCV3_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=ON
238 OPENCV3_DEPENDENCIES += libgtk2
239 endif
240
241 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK3),y)
242 OPENCV3_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=OFF
243 OPENCV3_DEPENDENCIES += libgtk3
244 endif
245
246 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_JASPER),y)
247 OPENCV3_CONF_OPTS += -DWITH_JASPER=ON
248 OPENCV3_DEPENDENCIES += jasper
249 else
250 OPENCV3_CONF_OPTS += -DWITH_JASPER=OFF
251 endif
252
253 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_JPEG),y)
254 OPENCV3_CONF_OPTS += -DWITH_JPEG=ON
255 OPENCV3_DEPENDENCIES += jpeg
256 else
257 OPENCV3_CONF_OPTS += -DWITH_JPEG=OFF
258 endif
259
260 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_OPENGL),y)
261 OPENCV3_CONF_OPTS += -DWITH_OPENGL=ON
262 OPENCV3_DEPENDENCIES += libgl
263 else
264 OPENCV3_CONF_OPTS += -DWITH_OPENGL=OFF
265 endif
266
267 OPENCV3_CONF_OPTS += -DWITH_OPENMP=$(if $(BR2_GCC_ENABLE_OPENMP),ON,OFF)
268
269 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_PNG),y)
270 OPENCV3_CONF_OPTS += -DWITH_PNG=ON
271 OPENCV3_DEPENDENCIES += libpng
272 else
273 OPENCV3_CONF_OPTS += -DWITH_PNG=OFF
274 endif
275
276 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_QT)$(BR2_PACKAGE_OPENCV3_WITH_QT5),)
277 OPENCV3_CONF_OPTS += -DWITH_QT=OFF
278 endif
279
280 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_QT),y)
281 OPENCV3_CONF_OPTS += -DWITH_QT=4
282 OPENCV3_DEPENDENCIES += qt
283 endif
284
285 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_QT5),y)
286 OPENCV3_CONF_OPTS += -DWITH_QT=5
287 OPENCV3_DEPENDENCIES += qt5base
288 endif
289
290 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_TIFF),y)
291 OPENCV3_CONF_OPTS += -DWITH_TIFF=ON
292 OPENCV3_DEPENDENCIES += tiff
293 else
294 OPENCV3_CONF_OPTS += -DWITH_TIFF=OFF
295 endif
296
297 ifeq ($(BR2_PACKAGE_OPENCV3_WITH_V4L),y)
298 OPENCV3_CONF_OPTS += \
299         -DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF) \
300         -DWITH_V4L=ON
301 OPENCV3_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l)
302 else
303 OPENCV3_CONF_OPTS += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF
304 endif
305
306 ifeq ($(BR2_PACKAGE_OPENCV3_LIB_PYTHON),y)
307 ifeq ($(BR2_PACKAGE_PYTHON),y)
308 OPENCV3_CONF_OPTS += \
309         -DBUILD_opencv_python2=ON \
310         -DBUILD_opencv_python3=OFF \
311         -DPYTHON2_EXECUTABLE=$(HOST_DIR)/bin/python2 \
312         -DPYTHON2_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) \
313         -DPYTHON2_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON_VERSION_MAJOR).so \
314         -DPYTHON2_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/numpy/core/include \
315         -DPYTHON2_PACKAGES_PATH=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \
316         -DPYTHON2_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION)
317 OPENCV3_DEPENDENCIES += python
318 else
319 OPENCV3_CONF_OPTS += \
320         -DBUILD_opencv_python2=OFF \
321         -DBUILD_opencv_python3=ON \
322         -DPYTHON3_EXECUTABLE=$(HOST_DIR)/bin/python3 \
323         -DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)m \
324         -DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR)m.so \
325         -DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \
326         -DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \
327         -DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION)
328 OPENCV3_DEPENDENCIES += python3
329 endif
330 OPENCV3_DEPENDENCIES += python-numpy
331 else
332 OPENCV3_CONF_OPTS += \
333         -DBUILD_opencv_python2=OFF \
334         -DBUILD_opencv_python3=OFF
335 endif
336
337 # Installation hooks:
338 define OPENCV3_CLEAN_INSTALL_DOC
339         $(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/doc
340 endef
341 OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_DOC
342
343 define OPENCV3_CLEAN_INSTALL_CMAKE
344         $(RM) -f $(TARGET_DIR)/usr/share/OpenCV/OpenCVConfig*.cmake
345 endef
346 OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_CMAKE
347
348 ifneq ($(BR2_PACKAGE_OPENCV3_INSTALL_DATA),y)
349 define OPENCV3_CLEAN_INSTALL_DATA
350         $(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/haarcascades \
351                 $(TARGET_DIR)/usr/share/OpenCV/lbpcascades
352 endef
353 OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_DATA
354 endif
355
356 $(eval $(cmake-package))