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}/LICENSE
16 USES= cmake pkgconfig zip
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
59 DC1394_DESC= IEEE 1394 camera support
60 EIGEN3_DESC= Eigen 3 support
61 IMAGE_DESC= Image format support
62 NONFREE_DESC= Build functionality that has possible limitations of use
63 PERFORMANCE_DESC= Performance enhancing libraries
66 .include <bsd.port.options.mk>
68 .if ${PORT_OPTIONS:MDC1394}
69 LIB_DEPENDS+= libdc1394.so:${PORTSDIR}/multimedia/libdc1394
70 CMAKE_ARGS+= -DWITH_1394:BOOL=On
72 CMAKE_ARGS+= -DWITH_1394:BOOL=Off
75 .if ${PORT_OPTIONS:MEIGEN3}
76 BUILD_DEPENDS+= ${LOCALBASE}/include/eigen3/Eigen/Eigen:${PORTSDIR}/math/eigen3
77 CMAKE_ARGS+= -DWITH_EIGEN:BOOL=On
79 CMAKE_ARGS= -DWITH_EIGEN:BOOL=Off
82 .if ${PORT_OPTIONS:MEXAMPLES}
84 . if !defined(OCV_SLAVE)
85 CMAKE_ARGS+= -DBUILD_EXAMPLES:BOOL=On \
86 -DINSTALL_C_EXAMPLES:BOOL=On
90 .if ${PORT_OPTIONS:MFFMPEG}
91 LIB_DEPENDS+= libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
92 CMAKE_ARGS+= -DWITH_FFMPEG:BOOL=On
94 CMAKE_ARGS+= -DWITH_FFMPEG:BOOL=Off
97 .if ${PORT_OPTIONS:MGSTREAMER}
99 CMAKE_ARGS+= -DWITH_GSTREAMER:BOOL=On
101 CMAKE_ARGS+= -DWITH_GSTREAMER:BOOL=Off
104 .if ${PORT_OPTIONS:MGTK2}
106 CMAKE_ARGS+= -DWITH_GTK:BOOL=On
107 . if ${PORT_OPTIONS:MOPENGL}
108 LIB_DEPENDS+= libgtkglext-x11-1.0.so:${PORTSDIR}/x11-toolkits/gtkglext
111 CMAKE_ARGS+= -DWITH_GTK:BOOL=Off
114 .if ${PORT_OPTIONS:MJASPER}
115 LIB_DEPENDS+= libjasper.so:${PORTSDIR}/graphics/jasper
116 CMAKE_ARGS+= -DWITH_JASPER:BOOL=On
118 CMAKE_ARGS+= -DWITH_JASPER:BOOL=Off
121 .if ${PORT_OPTIONS:MJPEG}
122 LIB_DEPENDS+= libjpeg.so:${PORTSDIR}/graphics/jpeg
123 CMAKE_ARGS+= -DWITH_JPEG:BOOL=On
125 CMAKE_ARGS+= -DWITH_JPEG:BOOL=Off
128 .if ${PORT_OPTIONS:MNONFREE}
129 CMAKE_ARGS+= -DBUILD_opencv_nonfree:BOOL=On
131 CMAKE_ARGS+= -DBUILD_opencv_nonfree:BOOL=Off
134 .if ${PORT_OPTIONS:MOPENEXR}
135 LIB_DEPENDS+= libIlmImf.so:${PORTSDIR}/graphics/OpenEXR
136 CMAKE_ARGS+= -DWITH_OPENEXR:BOOL=On
138 CMAKE_ARGS+= -DWITH_OPENEXR:BOOL=Off
141 .if ${PORT_OPTIONS:MOPENGL}
142 CMAKE_ARGS+= -DWITH_OPENGL:BOOL=On
144 CMAKE_ARGS+= -DWITH_OPENGL:BOOL=Off
147 .if ${PORT_OPTIONS:MPNG}
148 LIB_DEPENDS+= libpng15.so:${PORTSDIR}/graphics/png
149 CMAKE_ARGS+= -DWITH_PNG:BOOL=On
151 CMAKE_ARGS+= -DWITH_PNG:BOOL=Off
154 .if ${PORT_OPTIONS:MQT4}
155 USE_QT4+= gui moc_build qmake_build rcc_build uic_build qtestlib
156 CMAKE_ARGS+= -DWITH_QT:STRING="4"
157 . if ${PORT_OPTIONS:MOPENGL}
161 CMAKE_ARGS+= -DWITH_QT:BOOL=Off
164 .if ${PORT_OPTIONS:MTBB}
165 LIB_DEPENDS+= libtbb.so:${PORTSDIR}/devel/tbb
166 CMAKE_ARGS+= -DWITH_TBB:BOOL=On \
167 -DTBB_INCLUDE_DIR:STRING="${LOCALBASE}/include"
169 CMAKE_ARGS+= -DWITH_TBB:BOOL=Off
172 .if ${PORT_OPTIONS:MTIFF}
173 LIB_DEPENDS+= libtiff.so:${PORTSDIR}/graphics/tiff
174 CMAKE_ARGS+= -DWITH_TIFF:BOOL=On
176 CMAKE_ARGS+= -DWITH_TIFF:BOOL=Off
179 .if ${PORT_OPTIONS:MV4L}
180 LIB_DEPENDS+= libv4l2.so:${PORTSDIR}/multimedia/libv4l
181 BUILD_DEPENDS+= ${LOCALBASE}/include/linux/videodev2.h:${PORTSDIR}/multimedia/v4l_compat
182 CMAKE_ARGS+= -DWITH_V4L:BOOL=On \
183 -DCMAKE_REQUIRED_INCLUDES:STRING="${LOCALBASE}/include"
185 CMAKE_ARGS+= -DWITH_V4L:BOOL=Off
188 .if ${PORT_OPTIONS:MXINE}
189 LIB_DEPENDS+= libxine.so:${PORTSDIR}/multimedia/libxine
190 CMAKE_ARGS+= -DWITH_XINE:BOOL=On
192 CMAKE_ARGS+= -DWITH_XINE:BOOL=Off
195 .if defined(OCV_CORE)
196 . for module in ${OCV_MODS} ${OCV_JAVA_MODS} ${OCV_PYTHON_MODS}
197 CMAKE_ARGS+= -DBUILD_opencv_${module}:BOOL=Off
199 .elif defined(OCV_PYTHON)
200 LIB_DEPENDS+= libopencv_legacy.so:${PORTSDIR}/graphics/opencv
201 BUILD_DEPENDS+= ${PYNUMPY}
202 RUN_DEPENDS+= ${PYNUMPY}
204 CMAKE_ARGS+= -DBUILD_opencv_python:BOOL=On
205 . for module in apps java stitching superres videostab
206 CMAKE_ARGS+= -DBUILD_opencv_${module}:BOOL=Off
208 INSTALL_WRKSRC= ${WRKSRC}/modules/python
209 .elif defined(OCV_JAVA)
210 BUILD_DEPENDS+= ant:${PORTSDIR}/devel/apache-ant
211 LIB_DEPENDS+= libopencv_legacy.so:${PORTSDIR}/graphics/opencv
214 CMAKE_ARGS+= -DBUILD_opencv_java:BOOL=On
215 . for module in apps python stitching superres videostab
216 CMAKE_ARGS+= -DBUILD_opencv_${module}:BOOL=Off
218 CMAKE_ENV+= JAVA_HOME="${JAVA_HOME}"
219 INSTALL_WRKSRC= ${WRKSRC}/modules/java
221 LIB_DEPENDS+= libopencv_core.so:${PORTSDIR}/graphics/opencv-core
222 . for module in ${OCV_JAVA_MODS} ${OCV_PYTHON_MODS}
223 CMAKE_ARGS+= -DBUILD_opencv_${module}:BOOL=Off
228 @${MKDIR} ${CONFIGURE_WRKSRC}
229 @${REINPLACE_CMD} -e '/pkgconfig/s|$${OPENCV_LIB_INSTALL_PATH}|libdata|' \
230 ${WRKSRC}/cmake/OpenCVGenPkgconfig.cmake
231 @${REINPLACE_CMD} -e 's|share/OpenCV/doc|${DOCSDIR_REL}|g' \
232 -e 's|share/OpenCV/samples|${EXAMPLESDIR_REL}|g' \
233 ${WRKSRC}/CMakeLists.txt
234 @${FIND} ${WRKSRC} -name '*.orig' -exec ${RM} {} \;
235 .if defined(OCV_CORE)
236 @${REINPLACE_CMD} -e 's|opencv.pc|opencv-core.pc|g' \
237 ${WRKSRC}/cmake/OpenCVGenPkgconfig.cmake
238 @${REINPLACE_CMD} -e 's|Name:.*|Name: OpenCV-core|' \
239 ${WRKSRC}/cmake/templates/opencv-XXX.pc.in
241 .if defined(OCV_SLAVE)
242 @${REINPLACE_CMD} -e 's|add_subdirectory(data)||g' \
243 ${WRKSRC}/CMakeLists.txt
247 .if !defined(OCV_SLAVE)
248 (cd ${STAGEDIR}${PREFIX} && \
249 ${RM} -r include/opencv2/core include/opencv2/imgproc \
250 lib/libopencv_core* lib/libopencv_imgproc*)
252 .if defined(OCV_CORE)
253 ${RM} -r ${STAGEDIR}${PREFIX}/include/opencv
254 ${RM} -r ${STAGEDIR}${DATADIR}
255 ${MKDIR} ${STAGEDIR}${PREFIX}/share/cmake/Modules
256 ${INSTALL_DATA} ${WRKDIR}/FindOpenCVCore.cmake ${STAGEDIR}${PREFIX}/share/cmake/Modules
258 .if defined(OCV_PYTHON)
259 (cd ${STAGEDIR}${PREFIX} && \
260 ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \
261 -d ${PYTHONPREFIX_SITELIBDIR} -f ${PYTHONPREFIX_SITELIBDIR:S|${PREFIX}/||} && \
262 ${PYTHON_CMD} -O ${PYTHON_LIBDIR}/compileall.py \
263 -d ${PYTHONPREFIX_SITELIBDIR} -f ${PYTHONPREFIX_SITELIBDIR:S|${PREFIX}/||})
264 ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
265 . if defined(PYTHON_REL) && ${PYTHON_REL} >= 300
266 cd ${WRKSRC}/samples/python && \
267 ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}/python
269 cd ${WRKSRC}/samples/python2 && \
270 ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}/python2
273 .if defined(OCV_JAVA)
274 ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
275 cd ${WRKSRC}/samples/java && \
276 ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}/java
279 .include <bsd.port.mk>