source: trunk/dports/graphics/opencv/Portfile

Last change on this file was 152378, checked in by stromnov@…, 15 months ago

opencv: add variant dependency

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 12.9 KB
Line 
1# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
2# $Id: Portfile 152378 2016-09-06 11:38:58Z ryandesign@macports.org $
3
4PortSystem          1.0
5PortGroup           cmake 1.0
6PortGroup           compiler_blacklist_versions 1.0
7
8name                opencv
9version             3.1.0
10revision            3
11categories          graphics science
12platforms           darwin
13license             BSD
14
15maintainers         stromnov openmaintainer
16
17description         Intel(R) Open Source Computer Vision Library
18
19long_description    OpenCV is a library that is mainly aimed at real time \
20                    computer vision. Some example areas would be \
21                    Human-Computer Interaction (HCI), Object Identification, \
22                    Segmentation and Recognition, Face Recognition, Gesture \
23                    Recognition, Motion Tracking, Ego Motion, Motion \
24                    Understanding, Structure From Motion (SFM), and Mobile \
25                    Robotics.
26
27homepage            http://opencv.org
28master_sites        sourceforge:project/opencvlibrary/opencv-unix/${version}:opencv \
29                    https://github.com/Itseez/opencv_contrib/archive:opencv_contrib
30
31distfiles           ${distname}.zip:opencv
32
33use_zip             yes
34
35checksums           ${distname}${extract.suffix} \
36                        rmd160  d7a811c67cfb16243470822150760252d5770165 \
37                        sha256  1f6990249fdb82804fff40e96fa6d99949023ab0e3277eae4bd459b374e622a4 \
38                    ${version}.zip \
39                        rmd160  91266cae464ab0f9c00f0f764ba9025a6765d83a \
40                        sha256  5082b5df7179ff71f4681747c482169f0d5d5b77605816cfe5b93c588021fbb4
41
42depends_build-append \
43                    port:pkgconfig
44
45depends_lib-append  port:zlib \
46                    port:bzip2 \
47                    port:libpng \
48                    port:jpeg \
49                    port:jasper \
50                    port:tiff \
51                    port:webp \
52                    port:ilmbase \
53                    port:openexr \
54                    path:lib/libavcodec.dylib:ffmpeg
55
56patchfiles-append   patch-install_name.diff \
57                    patch-modules_python_CMakeLists.txt.diff \
58                    patch-modules_java_CMakeLists.txt.diff
59
60# TODO: check and adapt those patches
61#                    patch-modules_imgcodecs_src_grfmt_tiff.cpp.diff
62#                    patch-modules_core_src_parallel.cpp.diff
63#                    patch-modules-highgui-src-window_cocoa.mm.diff
64
65cmake.out_of_source yes
66
67configure.args-append \
68                    -DWITH_1394=OFF \
69                    -DWITH_CARBON=OFF \
70                    -DWITH_VTK=OFF \
71                    -DWITH_CUDA=OFF \
72                    -DWITH_CUFFT=OFF \
73                    -DWITH_CUBLAS=OFF \
74                    -DWITH_NVCUVID=OFF \
75                    -DWITH_EIGEN=OFF \
76                    -DWITH_FFMPEG=ON \
77                    -DWITH_GSTREAMER=OFF \
78                    -DWITH_GTK=OFF \
79                    -DWITH_GTK_2_X=OFF \
80                    -DWITH_IPP=OFF \
81                    -DWITH_JASPER=ON \
82                    -DWITH_JPEG=ON \
83                    -DWITH_WEBP=ON \
84                    -DWITH_OPENEXR=ON \
85                    -DWITH_OPENGL=ON \
86                    -DWITH_OPENNI=OFF \
87                    -DWITH_OPENNI2=OFF \
88                    -DWITH_PNG=ON \
89                    -DWITH_PVAPI=OFF \
90                    -DWITH_GIGEAPI=OFF \
91                    -DWITH_QT=OFF \
92                    -DWITH_QUICKTIME=OFF \
93                    -DWITH_TBB=OFF \
94                    -DWITH_OPENMP=OFF \
95                    -DWITH_CSTRIPES=OFF \
96                    -DWITH_PTHREADS_PF=OFF \
97                    -DWITH_TIFF=ON \
98                    -DWITH_UNICAP=OFF \
99                    -DWITH_V4L=OFF \
100                    -DWITH_LIBV4L=OFF \
101                    -DWITH_XIMEA=OFF \
102                    -DWITH_XINE=OFF \
103                    -DWITH_CLP=OFF \
104                    -DWITH_OPENCL=OFF \
105                    -DWITH_OPENCL_SVM=OFF \
106                    -DWITH_OPENCLAMDFFT=OFF \
107                    -DWITH_OPENCLAMDBLAS=OFF \
108                    -DWITH_INTELPERC=OFF \
109                    -DWITH_IPP_A=OFF \
110                    -DWITH_VA=OFF \
111                    -DWITH_VA_INTEL=OFF \
112                    -DWITH_GDAL=OFF \
113                    -DWITH_GPHOTO2=OFF \
114                    \
115                    -DBUILD_SHARED_LIBS=ON \
116                    -DBUILD_opencv_apps=ON \
117                    -DBUILD_DOCS=OFF \
118                    -DBUILD_EXAMPLES=OFF \
119                    -DBUILD_PACKAGE=OFF \
120                    -DBUILD_PERF_TESTS=OFF \
121                    -DBUILD_TESTS=OFF \
122                    -DBUILD_WITH_DYNAMIC_IPP=OFF \
123                    \
124                    -DBUILD_ZLIB=OFF \
125                    -DBUILD_TIFF=OFF \
126                    -DBUILD_JASPER=OFF \
127                    -DBUILD_JPEG=OFF \
128                    -DBUILD_PNG=OFF \
129                    -DBUILD_OPENEXR=OFF \
130                    -DBUILD_TBB=OFF \
131                    \
132                    -DPYTHON_EXECUTABLE=OFF \
133                    -DINSTALL_C_EXAMPLES=OFF \
134                    -DINSTALL_PYTHON_EXAMPLES=OFF \
135                    -DENABLE_PRECOMPILED_HEADERS=ON \
136                    -DCMAKE_VERBOSE=ON \
137                    -DZLIB_LIBRARY=${prefix}/lib/libz.dylib \
138                    -DBZIP2_LIBRARIES=${prefix}/lib/libbz2.dylib
139
140set opencv_linker_libs ""
141
142# gcc-4.0 exits with a bus error
143compiler.blacklist-append gcc-4.0
144
145# Xcode 3.1.4's and Xcode 3.2.6's gcc-4.2 fails to build opencv-2.4.10 for i386:
146# opencv-2.4.10/modules/core/src/system.cpp: In static member function 'static cv::HWFeatures cv::HWFeatures::initialize()':
147# opencv-2.4.10/modules/core/src/system.cpp:280: error: can't find a register in class 'BREG' while reloading 'asm'
148# opencv-2.4.10/modules/core/src/system.cpp:238: error: 'asm' operand has impossible constraints
149# opencv-2.4.10/modules/core/src/system.cpp:280: error: 'asm' operand has impossible constraints
150compiler.blacklist-append *gcc-4.2*
151
152# llvm-gcc-4.2 appears to be broken on old XCode (#35368)
153compiler.blacklist-append {llvm-gcc-4.2 < 2336.11}
154
155# Older clang also don't work (#36956)
156compiler.blacklist-append {clang < 318}
157
158# TODO: Actually fix this
159if {[string match "*clang*" ${configure.compiler}]} {
160    post-patch {
161        reinplace "/-Werror=sequence-point/d" ${worksrcpath}/cmake/OpenCVCompilerOptions.cmake
162    }
163}
164
165# PCH broken when universal
166if {[variant_isset universal]} {
167    configure.args-replace  -DENABLE_PRECOMPILED_HEADERS=ON \
168                            -DENABLE_PRECOMPILED_HEADERS=OFF
169}
170
171variant eigen description {Enable eigen support.} {
172    depends_lib-append      port:eigen3
173    configure.args-replace  -DWITH_EIGEN=OFF \
174                            -DWITH_EIGEN=ON
175    configure.args-append   -DEIGEN_INCLUDE_PATH=${prefix}/include/eigen3
176}
177
178variant opencl description {Enable OpenCL support.} {
179    patchfiles-append       patch-opencl-PR6052.diff
180    pre-configure {
181        if {${os.platform} eq "darwin" && ${os.major} < 11} {
182            ui_error "The OpenCL variant only works with OS X 10.7 Lion or later."
183            return -code error "incompatible OS X version"
184        }
185    }
186    configure.args-replace  -DWITH_OPENCL=OFF \
187                            -DWITH_OPENCL=ON
188}
189
190variant openni description {Enable OpenNI support.} {
191    depends_lib-append      port:openni
192    patchfiles-append       patch-cmake_OpenCVFindOpenNI.cmake.diff
193    configure.args-replace  -DWITH_OPENNI=OFF \
194                            -DWITH_OPENNI=ON
195
196    post-patch {
197         reinplace "s,@@PREFIX@@,${prefix},g" ${worksrcpath}/cmake/OpenCVFindOpenNI.cmake
198    }
199}
200
201variant dc1394 description {Use libdc1394 for FireWire camera. Breaks compatibility with Apple iSight FireWire camera.} {
202    depends_lib-append      port:libdc1394
203    configure.args-replace  -DWITH_1394=OFF \
204                            -DWITH_1394=ON
205    configure.args-append   -DHAVE_DC1394_2=ON
206}
207
208variant qt4 conflicts qt5 description {Build with Qt4 Backend support.} {
209    PortGroup               qt4 1.0
210    configure.args-replace  -DWITH_QT=OFF \
211                            -DWITH_QT=ON
212}
213
214variant qt5 conflicts qt4 description {Build with Qt5 Backend support.} {
215    PortGroup               qt5 1.0
216    configure.args-replace  -DWITH_QT=OFF \
217                            -DWITH_QT=ON
218}
219
220variant java description {Add Java bindings.} {
221    depends_build-append    port:apache-ant
222    patchfiles-delete       patch-modules_java_CMakeLists.txt.diff
223}
224
225if {[variant_isset java] && ![variant_isset python27] && ![variant_isset python34]} {
226    configure.args-replace  -DPYTHON_EXECUTABLE=OFF \
227                            -DPYTHON_EXECUTABLE=/usr/bin/python
228}
229
230variant python27 conflicts python34 python35 description {Add Python 2.7 bindings.} {
231    depends_lib-append      port:python27 \
232                            port:py27-numpy
233    patchfiles-delete       patch-modules_python_CMakeLists.txt.diff
234    configure.args-delete   -DINSTALL_PYTHON_EXAMPLES=OFF \
235                            -DPYTHON_EXECUTABLE=OFF
236    configure.args-append   -DINSTALL_PYTHON_EXAMPLES=ON \
237                            -DPYTHON2_EXECUTABLE=${prefix}/bin/python2.7 \
238                            -DPYTHON_LIBRARIES=${prefix}/lib/libpython2.7.dylib \
239                            -DPYTHON2_LIBRARIES=${prefix}/lib/libpython2.7.dylib \
240                            -DPYTHON2_INCLUDE_DIR=${frameworks_dir}/Python.framework/Versions/2.7/Headers \
241                            -DPYTHON2_PACKAGES_PATH=${frameworks_dir}/Python.framework/Versions/2.7/lib/python2.7/site-packages
242}
243
244variant python34 conflicts python27 python35 description {Add Python 3.4 bindings.} {
245    depends_lib-append      port:python34 \
246                            port:py34-numpy
247    patchfiles-delete       patch-modules_python_CMakeLists.txt.diff
248    configure.args-delete   -DINSTALL_PYTHON_EXAMPLES=OFF \
249                            -DPYTHON_EXECUTABLE=OFF
250    configure.args-append   -DINSTALL_PYTHON_EXAMPLES=ON \
251                            -DPYTHON3_EXECUTABLE=${prefix}/bin/python3.4 \
252                            -DPYTHON3_LIBRARY=${prefix}/lib/libpython3.4.dylib \
253                            -DPYTHON3_INCLUDE_DIR=${frameworks_dir}/Python.framework/Versions/3.4/Headers \
254                            -DPYTHON3_PACKAGES_PATH=${frameworks_dir}/Python.framework/Versions/3.4/lib/python3.4/site-packages
255}
256
257variant python35 conflicts python27 python34 description {Add Python 3.5 bindings.} {
258    depends_lib-append      port:python35 \
259                            port:py35-numpy
260    patchfiles-delete       patch-modules_python_CMakeLists.txt.diff
261    configure.args-delete   -DINSTALL_PYTHON_EXAMPLES=OFF \
262                            -DPYTHON_EXECUTABLE=OFF
263    configure.args-append   -DINSTALL_PYTHON_EXAMPLES=ON \
264                            -DPYTHON3_EXECUTABLE=${prefix}/bin/python3.5 \
265                            -DPYTHON3_LIBRARY=${prefix}/lib/libpython3.5.dylib \
266                            -DPYTHON3_INCLUDE_DIR=${frameworks_dir}/Python.framework/Versions/3.5/Headers \
267                            -DPYTHON3_PACKAGES_PATH=${frameworks_dir}/Python.framework/Versions/3.5/lib/python3.5/site-packages
268}
269
270variant tbb description {Use Intel TBB.} {
271    depends_lib-append      port:tbb
272    configure.args-replace  -DWITH_TBB=OFF \
273                            -DWITH_TBB=ON
274    configure.args-append   -DHAVE_TBB=ON \
275                            -DTBB_INCLUDE_DIRS=${prefix}/include
276    lappend opencv_linker_libs "-ltbb" "-ltbbmalloc"
277}
278
279variant vtk description {Include VTK support.} {
280    depends_lib-append      port:vtk
281    configure.args-replace  -DWITH_VTK=OFF \
282                            -DWITH_VTK=ON
283}
284
285variant gdal description {Include GDAL support.} {
286    depends_lib-append      port:gdal
287    configure.args-replace  -DWITH_GDAL=OFF \
288                            -DWITH_GDAL=ON
289}
290
291variant contrib description {Build OpenCV with extra modules.} {
292    distfiles-append        ${version}.zip:opencv_contrib
293    configure.args-append   -DOPENCV_EXTRA_MODULES_PATH=${workpath}/opencv_contrib-${version}/modules
294    depends_lib-append      port:protobuf-cpp
295}
296
297platform darwin {
298    post-patch {
299        if {${os.major} < 10} {
300            reinplace "s:HAVE_GCD 1:HAVE_GCD 0:" ${worksrcpath}/cmake/OpenCVFindLibsPerf.cmake
301        }
302    }
303}
304
305pre-configure {
306    configure.args-append   -DOPENCV_LINKER_LIBS=\"[join ${opencv_linker_libs} " "]\"
307}
308
309post-destroot {
310    # http://trac.macports.org/ticket/42702
311    reinplace {/Libs: /s:\${exec_prefix}/lib/libopencv_:-lopencv_:g} ${destroot}${prefix}/lib/pkgconfig/opencv.pc
312    reinplace {/Libs: /s:\.a::g} ${destroot}${prefix}/lib/pkgconfig/opencv.pc
313    reinplace {/Libs: /s:\.dylib::g} ${destroot}${prefix}/lib/pkgconfig/opencv.pc
314    reinplace {s|Libs: |Libs: -L\${exec_prefix}/lib |g} ${destroot}${prefix}/lib/pkgconfig/opencv.pc
315    reinplace {s:-l-framework|-framework::g} ${destroot}${prefix}/lib/pkgconfig/opencv.pc
316}
317
318livecheck.type      sourceforge
319livecheck.name      opencvlibrary
320livecheck.regex     {/[Oo]pen[Cc][Vv]-([0-9.]+)[a-z]?\.[tz]}
Note: See TracBrowser for help on using the repository browser.