Update sysutils/cfengine36 to version 3.6.1_1,1
[dports.git] / graphics / opencv / Makefile
1 # Created by: Marc Abramowitz (http://marc.abramowitz.info)
2 # $FreeBSD$
3
4 PORTNAME?=      opencv
5 PORTVERSION=    2.4.9
6 PORTREVISION?=  0
7 CATEGORIES=     graphics
8 MASTER_SITES=   SF/${PORTNAME}library/${PORTNAME}-unix/${PORTVERSION}
9
10 MAINTAINER=     jhale@FreeBSD.org
11 COMMENT=        Open Source Computer Vision library
12
13 LICENSE=        BSD3CLAUSE
14 LICENSE_FILE=   ${WRKSRC}/LICENSE
15
16 USES=           cmake pkgconfig zip
17 USE_LDCONFIG=   yes
18 WANT_GSTREAMER= yes
19 MAKE_JOBS_UNSAFE=       yes
20
21 NOT_FOR_ARCHS=  sparc64
22 NOT_FOR_ARCHS_REASON_sparc64=   does not compile on sparc64
23
24 DATADIR=        ${PREFIX}/share/OpenCV
25 PLIST_SUB+=     VERSION=${DISTVERSION}
26
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}
33
34 SUB_FILES=      FindOpenCVCore.cmake
35 SUB_LIST=       OCV_VERSION=${PORTVERSION}
36
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
42 OCV_JAVA_MODS=          java
43 OCV_PYTHON_MODS=        python
44
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
50 OPTIONS_RADIO=          GUI
51 OPTIONS_RADIO_GUI=      GTK2 QT4
52 OPTIONS_DEFAULT=        EIGEN3 JASPER JPEG PNG TIFF V4L
53 OPTIONS_SUB=            yes
54 .if defined(OCV_CORE)
55 OPTIONS_EXCLUDE=        DC1394 EXAMPLES GTK2 QT4 JASPER JPEG NONFREE OPENEXR \
56                         OPENGL PNG TIFF FFMPEG GSTREAMER V4L XINE
57 .endif
58
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
64 TBB_DESC=               TBB support
65
66 .include <bsd.port.options.mk>
67
68 .if ${PORT_OPTIONS:MDC1394}
69 LIB_DEPENDS+=   libdc1394.so:${PORTSDIR}/multimedia/libdc1394
70 CMAKE_ARGS+=    -DWITH_1394:BOOL=On
71 .else
72 CMAKE_ARGS+=    -DWITH_1394:BOOL=Off
73 .endif
74
75 .if ${PORT_OPTIONS:MEIGEN3}
76 BUILD_DEPENDS+= ${LOCALBASE}/include/eigen3/Eigen/Eigen:${PORTSDIR}/math/eigen3
77 CMAKE_ARGS+=    -DWITH_EIGEN:BOOL=On
78 .else
79 CMAKE_ARGS=     -DWITH_EIGEN:BOOL=Off
80 .endif
81
82 .if ${PORT_OPTIONS:MEXAMPLES}
83 PORTEXAMPLES=   *
84 . if !defined(OCV_SLAVE)
85 CMAKE_ARGS+=    -DBUILD_EXAMPLES:BOOL=On \
86                 -DINSTALL_C_EXAMPLES:BOOL=On
87 . endif
88 .endif
89
90 .if ${PORT_OPTIONS:MFFMPEG}
91 LIB_DEPENDS+=   libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
92 CMAKE_ARGS+=    -DWITH_FFMPEG:BOOL=On
93 .else
94 CMAKE_ARGS+=    -DWITH_FFMPEG:BOOL=Off
95 .endif
96
97 .if ${PORT_OPTIONS:MGSTREAMER}
98 USE_GSTREAMER=  yes
99 CMAKE_ARGS+=    -DWITH_GSTREAMER:BOOL=On
100 .else
101 CMAKE_ARGS+=    -DWITH_GSTREAMER:BOOL=Off
102 .endif
103
104 .if ${PORT_OPTIONS:MGTK2}
105 USE_GNOME+=     gtk20
106 CMAKE_ARGS+=    -DWITH_GTK:BOOL=On
107 . if ${PORT_OPTIONS:MOPENGL}
108 LIB_DEPENDS+=   libgtkglext-x11-1.0.so:${PORTSDIR}/x11-toolkits/gtkglext
109 . endif
110 .else
111 CMAKE_ARGS+=    -DWITH_GTK:BOOL=Off
112 .endif
113
114 .if ${PORT_OPTIONS:MJASPER}
115 LIB_DEPENDS+=   libjasper.so:${PORTSDIR}/graphics/jasper
116 CMAKE_ARGS+=    -DWITH_JASPER:BOOL=On
117 .else
118 CMAKE_ARGS+=    -DWITH_JASPER:BOOL=Off
119 .endif
120
121 .if ${PORT_OPTIONS:MJPEG}
122 LIB_DEPENDS+=   libjpeg.so:${PORTSDIR}/graphics/jpeg
123 CMAKE_ARGS+=    -DWITH_JPEG:BOOL=On
124 .else
125 CMAKE_ARGS+=    -DWITH_JPEG:BOOL=Off
126 .endif
127
128 .if ${PORT_OPTIONS:MNONFREE}
129 CMAKE_ARGS+=    -DBUILD_opencv_nonfree:BOOL=On
130 .else
131 CMAKE_ARGS+=    -DBUILD_opencv_nonfree:BOOL=Off
132 .endif
133
134 .if ${PORT_OPTIONS:MOPENEXR}
135 LIB_DEPENDS+=   libIlmImf.so:${PORTSDIR}/graphics/OpenEXR
136 CMAKE_ARGS+=    -DWITH_OPENEXR:BOOL=On
137 .else
138 CMAKE_ARGS+=    -DWITH_OPENEXR:BOOL=Off
139 .endif
140
141 .if ${PORT_OPTIONS:MOPENGL}
142 CMAKE_ARGS+=    -DWITH_OPENGL:BOOL=On
143 .else
144 CMAKE_ARGS+=    -DWITH_OPENGL:BOOL=Off
145 .endif
146
147 .if ${PORT_OPTIONS:MPNG}
148 LIB_DEPENDS+=   libpng15.so:${PORTSDIR}/graphics/png
149 CMAKE_ARGS+=    -DWITH_PNG:BOOL=On
150 .else
151 CMAKE_ARGS+=    -DWITH_PNG:BOOL=Off
152 .endif
153
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}
158 USE_QT4+=       opengl
159 . endif
160 .else
161 CMAKE_ARGS+=    -DWITH_QT:BOOL=Off
162 .endif
163
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"
168 .else
169 CMAKE_ARGS+=    -DWITH_TBB:BOOL=Off
170 .endif
171
172 .if ${PORT_OPTIONS:MTIFF}
173 LIB_DEPENDS+=   libtiff.so:${PORTSDIR}/graphics/tiff
174 CMAKE_ARGS+=    -DWITH_TIFF:BOOL=On
175 .else
176 CMAKE_ARGS+=    -DWITH_TIFF:BOOL=Off
177 .endif
178
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"
184 .else
185 CMAKE_ARGS+=    -DWITH_V4L:BOOL=Off
186 .endif
187
188 .if ${PORT_OPTIONS:MXINE}
189 LIB_DEPENDS+=   libxine.so:${PORTSDIR}/multimedia/libxine
190 CMAKE_ARGS+=    -DWITH_XINE:BOOL=On
191 .else
192 CMAKE_ARGS+=    -DWITH_XINE:BOOL=Off
193 .endif
194
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
198 . endfor
199 .elif defined(OCV_PYTHON)
200 LIB_DEPENDS+=   libopencv_legacy.so:${PORTSDIR}/graphics/opencv
201 BUILD_DEPENDS+= ${PYNUMPY}
202 RUN_DEPENDS+=   ${PYNUMPY}
203 USES+=          python
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
207 . endfor
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
212 USES+=          python:build
213 USE_JAVA=       yes
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
217 . endfor
218 CMAKE_ENV+=     JAVA_HOME="${JAVA_HOME}"
219 INSTALL_WRKSRC= ${WRKSRC}/modules/java
220 .else
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
224 . endfor
225 .endif
226
227 post-patch:
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
240 .endif
241 .if defined(OCV_SLAVE)
242         @${REINPLACE_CMD} -e 's|add_subdirectory(data)||g' \
243                 ${WRKSRC}/CMakeLists.txt
244 .endif
245
246 post-install:
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*)
251 .endif
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
257 .endif
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
268 .   else
269         cd ${WRKSRC}/samples/python2 && \
270                 ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}/python2
271 .   endif
272 .endif
273 .if defined(OCV_JAVA)
274         ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
275         cd ${WRKSRC}/samples/java && \
276                 ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}/java
277 .endif
278
279 .include <bsd.port.mk>