Prune lang/gnatdroid-armv5
[dports.git] / graphics / opencv / Makefile
1 # Created by: Marc Abramowitz (http://marc.abramowitz.info)
2 # $FreeBSD$
3
4 PORTNAME?=      opencv
5 PORTVERSION=    2.4.7
6 PORTREVISION?=  1
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=        BSD
14 LICENSE_FILE=   ${WRKSRC}/doc/license.txt
15
16 USES=           cmake pkgconfig
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 .elif defined(OCV_PYTHON)
58 OPTIONS_EXCLUDE=        DC1394 GTK2 QT4 JASPER JPEG NONFREE OPENEXR \
59                         OPENGL PNG TIFF TBB EIGEN3 FFMPEG GSTREAMER V4L XINE
60 .endif
61
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
67 TBB_DESC=               TBB support
68
69 .include <bsd.port.options.mk>
70
71 .if ${PORT_OPTIONS:MDC1394}
72 LIB_DEPENDS+=   libdc1394.so:${PORTSDIR}/multimedia/libdc1394
73 CMAKE_ARGS+=    -DWITH_1394:BOOL=On
74 .else
75 CMAKE_ARGS+=    -DWITH_1394:BOOL=Off
76 .endif
77
78 .if ${PORT_OPTIONS:MEIGEN3}
79 BUILD_DEPENDS+= ${LOCALBASE}/include/eigen3/Eigen/Eigen:${PORTSDIR}/math/eigen3
80 CMAKE_ARGS+=    -DWITH_EIGEN:BOOL=On
81 .else
82 CMAKE_ARGS=     -DWITH_EIGEN:BOOL=Off
83 .endif
84
85 .if ${PORT_OPTIONS:MEXAMPLES}
86 PORTEXAMPLES=   *
87 . if !defined(OCV_SLAVE)
88 CMAKE_ARGS+=    -DBUILD_EXAMPLES:BOOL=On \
89                 -DINSTALL_C_EXAMPLES:BOOL=On
90 . endif
91 .endif
92
93 .if ${PORT_OPTIONS:MFFMPEG}
94 LIB_DEPENDS+=   libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
95 CMAKE_ARGS+=    -DWITH_FFMPEG:BOOL=On
96 .else
97 CMAKE_ARGS+=    -DWITH_FFMPEG:BOOL=Off
98 .endif
99
100 .if ${PORT_OPTIONS:MGSTREAMER}
101 USE_GSTREAMER=  yes
102 CMAKE_ARGS+=    -DWITH_GSTREAMER:BOOL=On
103 .else
104 CMAKE_ARGS+=    -DWITH_GSTREAMER:BOOL=Off
105 .endif
106
107 .if ${PORT_OPTIONS:MGTK2}
108 USE_GNOME+=     gtk20
109 CMAKE_ARGS+=    -DWITH_GTK:BOOL=On
110 . if ${PORT_OPTIONS:MOPENGL}
111 LIB_DEPENDS+=   libgtkglext-x11-1.0.so:${PORTSDIR}/x11-toolkits/gtkglext
112 . endif
113 .else
114 CMAKE_ARGS+=    -DWITH_GTK:BOOL=Off
115 .endif
116
117 .if ${PORT_OPTIONS:MJASPER}
118 LIB_DEPENDS+=   libjasper.so:${PORTSDIR}/graphics/jasper
119 CMAKE_ARGS+=    -DWITH_JASPER:BOOL=On
120 .else
121 CMAKE_ARGS+=    -DWITH_JASPER:BOOL=Off
122 .endif
123
124 .if ${PORT_OPTIONS:MJPEG}
125 LIB_DEPENDS+=   libjpeg.so:${PORTSDIR}/graphics/jpeg
126 CMAKE_ARGS+=    -DWITH_JPEG:BOOL=On
127 .else
128 CMAKE_ARGS+=    -DWITH_JPEG:BOOL=Off
129 .endif
130
131 .if ${PORT_OPTIONS:MNONFREE}
132 CMAKE_ARGS+=    -DBUILD_opencv_nonfree:BOOL=On
133 .else
134 CMAKE_ARGS+=    -DBUILD_opencv_nonfree:BOOL=Off
135 .endif
136
137 .if ${PORT_OPTIONS:MOPENEXR}
138 LIB_DEPENDS+=   libIlmImf.so:${PORTSDIR}/graphics/OpenEXR
139 CMAKE_ARGS+=    -DWITH_OPENEXR:BOOL=On
140 .else
141 CMAKE_ARGS+=    -DWITH_OPENEXR:BOOL=Off
142 .endif
143
144 .if ${PORT_OPTIONS:MOPENGL}
145 CMAKE_ARGS+=    -DWITH_OPENGL:BOOL=On
146 .else
147 CMAKE_ARGS+=    -DWITH_OPENGL:BOOL=Off
148 .endif
149
150 .if ${PORT_OPTIONS:MPNG}
151 LIB_DEPENDS+=   libpng15.so:${PORTSDIR}/graphics/png
152 CMAKE_ARGS+=    -DWITH_PNG:BOOL=On
153 .else
154 CMAKE_ARGS+=    -DWITH_PNG:BOOL=Off
155 .endif
156
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}
161 USE_QT4+=       opengl
162 . endif
163 .else
164 CMAKE_ARGS+=    -DWITH_QT:BOOL=Off
165 .endif
166
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"
171 .else
172 CMAKE_ARGS+=    -DWITH_TBB:BOOL=Off
173 .endif
174
175 .if ${PORT_OPTIONS:MTIFF}
176 LIB_DEPENDS+=   libtiff.so:${PORTSDIR}/graphics/tiff
177 CMAKE_ARGS+=    -DWITH_TIFF:BOOL=On
178 .else
179 CMAKE_ARGS+=    -DWITH_TIFF:BOOL=Off
180 .endif
181
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"
187 .else
188 CMAKE_ARGS+=    -DWITH_V4L:BOOL=Off
189 .endif
190
191 .if ${PORT_OPTIONS:MXINE}
192 LIB_DEPENDS+=   libxine.so:${PORTSDIR}/multimedia/libxine
193 CMAKE_ARGS+=    -DWITH_XINE:BOOL=On
194 .else
195 CMAKE_ARGS+=    -DWITH_XINE:BOOL=Off
196 .endif
197
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
201 . endfor
202 .elif defined(OCV_PYTHON)
203 LIB_DEPENDS+=   libopencv_legacy.so:${PORTSDIR}/graphics/opencv
204 BUILD_DEPENDS+= ${PYNUMPY}
205 RUN_DEPENDS+=   ${PYNUMPY}
206 USE_PYTHON=     yes
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
211 . endfor
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
217 USE_JAVA=       yes
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
222 . endfor
223 CMAKE_ENV+=     JAVA_HOME="${JAVA_HOME}"
224 INSTALL_WRKSRC= ${WRKSRC}/modules/java
225 .else
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
229 . endfor
230 .endif
231
232 post-patch:
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
247 .endif
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
254 . endfor
255         ${REINPLACE_CMD} -e '/[Ee][Xx][Pp][Oo][Rr][Tt]/d' \
256                 ${WRKSRC}/cmake/OpenCVGenConfig.cmake
257 .endif
258
259 post-install:
260 .if defined(OCV_CORE)
261         ${MKDIR} ${STAGEDIR}${PREFIX}/share/cmake/Modules
262         ${INSTALL_DATA} ${WRKDIR}/FindOpenCVCore.cmake ${STAGEDIR}${PREFIX}/share/cmake/Modules
263 .endif
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
270 .endif
271 .if defined(OCV_JAVA)
272         ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
273         cd ${WRKSRC}/samples/java && \
274                 ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}/java
275 .endif
276
277 .include <bsd.port.mk>