1 # Created by: Marc Abramowitz (http://marc.abramowitz.info)
8 MASTER_SITES= SF/${PORTNAME}library/${PORTNAME}-unix/${PORTVERSION}
10 MAINTAINER= jhale@FreeBSD.org
11 COMMENT= Open Source Computer Vision library
14 LICENSE_FILE= ${WRKSRC}/doc/license.txt
21 NOT_FOR_ARCHS= sparc64
22 NOT_FOR_ARCHS_REASON_sparc64= does not compile on sparc64
24 DATADIR= ${PREFIX}/share/OpenCV
25 PLIST_SUB+= VERSION=${DISTVERSION}
27 CMAKE_ARGS+= -DWITH_CUDA:BOOL=Off \
28 -DWITH_PVAPI:BOOL=Off \
29 -DWITH_UNICAP:BOOL=Off \
30 -DBUILD_TESTS:BOOL=Off \
31 -DBUILD_DOCS:BOOL=Off \
32 -DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_CMD}
34 SUB_FILES= FindOpenCVCore.cmake
35 SUB_LIST= OCV_VERSION=${PORTVERSION}
37 OCV_CORE_MODS= core imgproc
38 OCV_MODS= calib3d contrib features2d flann gpu \
39 highgui legacy ml ocl objdetect photo \
40 stitching superres ts video videostab
41 OCV_NONFREE_MODS= nonfree
43 OCV_PYTHON_MODS= python
45 OPTIONS_DEFINE= DC1394 EXAMPLES NONFREE OPENGL
46 OPTIONS_GROUP= IMAGE PERFORMANCE VIDEO
47 OPTIONS_GROUP_IMAGE= JASPER JPEG OPENEXR PNG TIFF
48 OPTIONS_GROUP_PERFORMANCE= EIGEN3 TBB
49 OPTIONS_GROUP_VIDEO= FFMPEG GSTREAMER V4L XINE
51 OPTIONS_RADIO_GUI= GTK2 QT4
52 OPTIONS_DEFAULT= EIGEN3 JASPER JPEG PNG TIFF V4L
55 OPTIONS_EXCLUDE= DC1394 EXAMPLES GTK2 QT4 JASPER JPEG NONFREE OPENEXR \
56 OPENGL PNG TIFF FFMPEG GSTREAMER V4L XINE
57 .elif defined(OCV_PYTHON)
58 OPTIONS_EXCLUDE= DC1394 GTK2 QT4 JASPER JPEG NONFREE OPENEXR \
59 OPENGL PNG TIFF TBB EIGEN3 FFMPEG GSTREAMER V4L XINE
62 DC1394_DESC= IEEE 1394 camera support
63 EIGEN3_DESC= Eigen 3 support
64 IMAGE_DESC= Image format support
65 NONFREE_DESC= Build functionality that has possible limitations of use
66 PERFORMANCE_DESC= Performance enhancing libraries
69 .include <bsd.port.options.mk>
71 .if ${PORT_OPTIONS:MDC1394}
72 LIB_DEPENDS+= libdc1394.so:${PORTSDIR}/multimedia/libdc1394
73 CMAKE_ARGS+= -DWITH_1394:BOOL=On
75 CMAKE_ARGS+= -DWITH_1394:BOOL=Off
78 .if ${PORT_OPTIONS:MEIGEN3}
79 BUILD_DEPENDS+= ${LOCALBASE}/include/eigen3/Eigen/Eigen:${PORTSDIR}/math/eigen3
80 CMAKE_ARGS+= -DWITH_EIGEN:BOOL=On
82 CMAKE_ARGS= -DWITH_EIGEN:BOOL=Off
85 .if ${PORT_OPTIONS:MEXAMPLES}
87 . if !defined(OCV_SLAVE)
88 CMAKE_ARGS+= -DBUILD_EXAMPLES:BOOL=On \
89 -DINSTALL_C_EXAMPLES:BOOL=On
93 .if ${PORT_OPTIONS:MFFMPEG}
94 LIB_DEPENDS+= libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
95 CMAKE_ARGS+= -DWITH_FFMPEG:BOOL=On
97 CMAKE_ARGS+= -DWITH_FFMPEG:BOOL=Off
100 .if ${PORT_OPTIONS:MGSTREAMER}
102 CMAKE_ARGS+= -DWITH_GSTREAMER:BOOL=On
104 CMAKE_ARGS+= -DWITH_GSTREAMER:BOOL=Off
107 .if ${PORT_OPTIONS:MGTK2}
109 CMAKE_ARGS+= -DWITH_GTK:BOOL=On
110 . if ${PORT_OPTIONS:MOPENGL}
111 LIB_DEPENDS+= libgtkglext-x11-1.0.so:${PORTSDIR}/x11-toolkits/gtkglext
114 CMAKE_ARGS+= -DWITH_GTK:BOOL=Off
117 .if ${PORT_OPTIONS:MJASPER}
118 LIB_DEPENDS+= libjasper.so:${PORTSDIR}/graphics/jasper
119 CMAKE_ARGS+= -DWITH_JASPER:BOOL=On
121 CMAKE_ARGS+= -DWITH_JASPER:BOOL=Off
124 .if ${PORT_OPTIONS:MJPEG}
125 LIB_DEPENDS+= libjpeg.so:${PORTSDIR}/graphics/jpeg
126 CMAKE_ARGS+= -DWITH_JPEG:BOOL=On
128 CMAKE_ARGS+= -DWITH_JPEG:BOOL=Off
131 .if ${PORT_OPTIONS:MNONFREE}
132 CMAKE_ARGS+= -DBUILD_opencv_nonfree:BOOL=On
134 CMAKE_ARGS+= -DBUILD_opencv_nonfree:BOOL=Off
137 .if ${PORT_OPTIONS:MOPENEXR}
138 LIB_DEPENDS+= libIlmImf.so:${PORTSDIR}/graphics/OpenEXR
139 CMAKE_ARGS+= -DWITH_OPENEXR:BOOL=On
141 CMAKE_ARGS+= -DWITH_OPENEXR:BOOL=Off
144 .if ${PORT_OPTIONS:MOPENGL}
145 CMAKE_ARGS+= -DWITH_OPENGL:BOOL=On
147 CMAKE_ARGS+= -DWITH_OPENGL:BOOL=Off
150 .if ${PORT_OPTIONS:MPNG}
151 LIB_DEPENDS+= libpng15.so:${PORTSDIR}/graphics/png
152 CMAKE_ARGS+= -DWITH_PNG:BOOL=On
154 CMAKE_ARGS+= -DWITH_PNG:BOOL=Off
157 .if ${PORT_OPTIONS:MQT4}
158 USE_QT4+= gui moc_build qmake_build rcc_build uic_build qtestlib
159 CMAKE_ARGS+= -DWITH_QT:STRING="4"
160 . if ${PORT_OPTIONS:MOPENGL}
164 CMAKE_ARGS+= -DWITH_QT:BOOL=Off
167 .if ${PORT_OPTIONS:MTBB}
168 LIB_DEPENDS+= libtbb.so:${PORTSDIR}/devel/tbb
169 CMAKE_ARGS+= -DWITH_TBB:BOOL=On \
170 -DTBB_INCLUDE_DIR:STRING="${LOCALBASE}/include"
172 CMAKE_ARGS+= -DWITH_TBB:BOOL=Off
175 .if ${PORT_OPTIONS:MTIFF}
176 LIB_DEPENDS+= libtiff.so:${PORTSDIR}/graphics/tiff
177 CMAKE_ARGS+= -DWITH_TIFF:BOOL=On
179 CMAKE_ARGS+= -DWITH_TIFF:BOOL=Off
182 .if ${PORT_OPTIONS:MV4L}
183 LIB_DEPENDS+= libv4l2.so:${PORTSDIR}/multimedia/libv4l
184 BUILD_DEPENDS+= ${LOCALBASE}/include/linux/videodev2.h:${PORTSDIR}/multimedia/v4l_compat
185 CMAKE_ARGS+= -DWITH_V4L:BOOL=On \
186 -DCMAKE_REQUIRED_INCLUDES:STRING="${LOCALBASE}/include"
188 CMAKE_ARGS+= -DWITH_V4L:BOOL=Off
191 .if ${PORT_OPTIONS:MXINE}
192 LIB_DEPENDS+= libxine.so:${PORTSDIR}/multimedia/libxine
193 CMAKE_ARGS+= -DWITH_XINE:BOOL=On
195 CMAKE_ARGS+= -DWITH_XINE:BOOL=Off
198 .if defined(OCV_CORE)
199 . for module in ${OCV_MODS} ${OCV_JAVA_MODS} ${OCV_PYTHON_MODS}
200 CMAKE_ARGS+= -DBUILD_opencv_${module}:BOOL=Off
202 .elif defined(OCV_PYTHON)
203 LIB_DEPENDS+= libopencv_legacy.so:${PORTSDIR}/graphics/opencv
204 BUILD_DEPENDS+= ${PYNUMPY}
205 RUN_DEPENDS+= ${PYNUMPY}
207 CFLAGS+= -I${LOCALBASE}/include
208 CMAKE_ARGS+= -DBUILD_opencv_python:BOOL=On
209 . for module in ${OCV_MODS} ${OCV_CORE_MODS} ${OCV_JAVA_MODS}
210 CMAKE_ARGS+= -DBUILD_opencv_${module}:BOOL=Off
212 CMAKE_ENV+= LDFLAGS="${LDFLAGS} -L${LOCALBASE}/lib"
213 INSTALL_WRKSRC= ${WRKSRC}/modules/python
214 .elif defined(OCV_JAVA)
215 BUILD_DEPENDS+= ant:${PORTSDIR}/devel/apache-ant
216 LIB_DEPENDS+= libopencv_legacy.so:${PORTSDIR}/graphics/opencv
218 USE_PYTHON_BUILD= yes
219 CMAKE_ARGS+= -DBUILD_opencv_java:BOOL=On
220 . for module in apps python stitching superres videostab
221 CMAKE_ARGS+= -DBUILD_opencv_${module}:BOOL=Off
223 CMAKE_ENV+= JAVA_HOME="${JAVA_HOME}"
224 INSTALL_WRKSRC= ${WRKSRC}/modules/java
226 LIB_DEPENDS+= libopencv_core.so:${PORTSDIR}/graphics/opencv-core
227 . for module in ${OCV_JAVA_MODS} ${OCV_PYTHON_MODS}
228 CMAKE_ARGS+= -DBUILD_opencv_${module}:BOOL=Off
233 @${MKDIR} ${CONFIGURE_WRKSRC}
234 @${REINPLACE_CMD} -e '/pkgconfig/s|$${OPENCV_LIB_INSTALL_PATH}|libdata|' \
235 ${WRKSRC}/cmake/OpenCVGenPkgconfig.cmake
236 @${REINPLACE_CMD} -e 's|share/OpenCV/doc|share/doc/${PORTNAME}|g' \
237 ${WRKSRC}/CMakeLists.txt
238 @${REINPLACE_CMD} -e 's|[Oo]pen[Cc][Vv]/samples|examples/${PORTNAME}|g' \
239 ${WRKSRC}/samples/*/CMakeLists.txt \
240 ${WRKSRC}/samples/*/*/CMakeLists.txt
241 @${FIND} ${WRKSRC} -name '*.orig' -exec ${RM} {} \;
242 .if defined(OCV_CORE)
243 @${REINPLACE_CMD} -e 's|opencv.pc|opencv-core.pc|g' \
244 ${WRKSRC}/cmake/OpenCVGenPkgconfig.cmake
245 @${REINPLACE_CMD} -e 's|Name:.*|Name: OpenCV-core|' \
246 ${WRKSRC}/cmake/templates/opencv-XXX.pc.cmake.in
248 .if defined(OCV_PYTHON)
249 . for module in ${OCV_CORE_MODS} ${OCV_MODS} ${OCV_NONFREE_MODS}
250 @${REINPLACE_CMD} -e 's|opencv_${module} | |' \
251 -e 's|opencv_${module}$$||' \
252 -e 's|opencv_${module})|)|' \
253 ${WRKSRC}/modules/*/CMakeLists.txt
255 ${REINPLACE_CMD} -e '/[Ee][Xx][Pp][Oo][Rr][Tt]/d' \
256 ${WRKSRC}/cmake/OpenCVGenConfig.cmake
260 .if defined(OCV_CORE)
261 ${MKDIR} ${STAGEDIR}${PREFIX}/share/cmake/Modules
262 ${INSTALL_DATA} ${WRKDIR}/FindOpenCVCore.cmake ${STAGEDIR}${PREFIX}/share/cmake/Modules
264 .if defined(OCV_PYTHON)
265 ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
266 cd ${WRKSRC}/samples/python && \
267 ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}/python
268 cd ${WRKSRC}/samples/python2 && \
269 ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}/python2
271 .if defined(OCV_JAVA)
272 ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
273 cd ${WRKSRC}/samples/java && \
274 ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}/java
277 .include <bsd.port.mk>