opencv updates for lbann (#6502)
Add variants to control building of many 3rd-party modules in opencv. They are enabled by default, which matches the defaults chosen by opencv when these options are not set explicitly. This also updates the lbann opencv dependency to disable most of these new variants by default in order to build faster.
This commit is contained in:
parent
b4859e10e2
commit
a9e47b763e
@ -59,7 +59,16 @@ class Lbann(CMakePackage):
|
|||||||
depends_on('cub', when='+gpu')
|
depends_on('cub', when='+gpu')
|
||||||
depends_on('mpi')
|
depends_on('mpi')
|
||||||
depends_on('hwloc ~pci ~libxml2')
|
depends_on('hwloc ~pci ~libxml2')
|
||||||
depends_on('opencv@3.2.0: +openmp +core +highgui +imgproc +jpeg +png +tiff +zlib ~eigen', when='+opencv')
|
# LBANN wraps OpenCV calls in OpenMP parallel loops, build without OpenMP
|
||||||
|
# Additionally disable video related options, they incorrectly link in a
|
||||||
|
# bad OpenMP library when building with clang or Intel compilers
|
||||||
|
depends_on('opencv@3.2.0: +core +highgui +imgproc +jpeg +png +tiff +zlib '
|
||||||
|
'+fast-math +powerpc +vsx ~calib3d ~cuda ~dnn ~eigen'
|
||||||
|
'~features2d ~flann ~gtk ~ipp ~ipp_iw ~jasper ~java ~lapack ~ml'
|
||||||
|
'~openmp ~opencl ~opencl_svm ~openclamdblas ~openclamdfft'
|
||||||
|
'~pthreads_pf ~python ~qt ~stitching ~superres ~ts ~video'
|
||||||
|
'~videostab ~videoio ~vtk', when='+opencv')
|
||||||
|
|
||||||
depends_on('protobuf@3.0.2:')
|
depends_on('protobuf@3.0.2:')
|
||||||
depends_on('cnpy')
|
depends_on('cnpy')
|
||||||
depends_on('nccl', when='+gpu +nccl')
|
depends_on('nccl', when='+gpu +nccl')
|
||||||
|
@ -44,6 +44,8 @@ class Opencv(CMakePackage):
|
|||||||
|
|
||||||
version('master', git="https://github.com/opencv/opencv.git", branch="master")
|
version('master', git="https://github.com/opencv/opencv.git", branch="master")
|
||||||
version('3.4.1', 'a0b7a47899e67b3490ea31edc4f6e8e6')
|
version('3.4.1', 'a0b7a47899e67b3490ea31edc4f6e8e6')
|
||||||
|
version('3.4.0', '170732dc760e5f7ddeccbe53ba5d16a6')
|
||||||
|
version('3.3.1', 'b1ed9aea030bb5bd9df28524d97de84c')
|
||||||
version('3.3.0', '98a4e4c6f23ec725e808a891dc11eec4')
|
version('3.3.0', '98a4e4c6f23ec725e808a891dc11eec4')
|
||||||
version('3.2.0', 'a43b65488124ba33dde195fea9041b70')
|
version('3.2.0', 'a43b65488124ba33dde195fea9041b70')
|
||||||
version('3.1.0', '70e1dd07f0aa06606f1bc0e3fa15abd3')
|
version('3.1.0', '70e1dd07f0aa06606f1bc0e3fa15abd3')
|
||||||
@ -54,29 +56,54 @@ class Opencv(CMakePackage):
|
|||||||
version('2.4.12.2', 'bc0c60c2ea1cf4078deef99569912fc7')
|
version('2.4.12.2', 'bc0c60c2ea1cf4078deef99569912fc7')
|
||||||
version('2.4.12.1', '7192f51434710904b5e3594872b897c3')
|
version('2.4.12.1', '7192f51434710904b5e3594872b897c3')
|
||||||
|
|
||||||
|
# Standard variants
|
||||||
variant('shared', default=True,
|
variant('shared', default=True,
|
||||||
description='Enables the build of shared libraries')
|
description='Enables the build of shared libraries')
|
||||||
|
variant('lapack', default=True, description='Include Lapack library support')
|
||||||
|
variant('powerpc', default=False, description='Enable PowerPC for GCC')
|
||||||
|
variant('vsx', default=False, description='Enable POWER8 and above VSX (64-bit little-endian)')
|
||||||
|
variant('fast-math', default=False,
|
||||||
|
description='Enable -ffast-math (not recommended for GCC 4.6.x)')
|
||||||
|
|
||||||
|
# OpenCV modules
|
||||||
|
variant('calib3d', default=True, description='calib3d module')
|
||||||
|
variant('core', default=True, description='Include opencv_core module into the OpenCV build')
|
||||||
|
variant('dnn', default=True, description='Build DNN support')
|
||||||
|
variant('features2d', default=True, description='features2d module')
|
||||||
|
variant('flann', default=True, description='flann module')
|
||||||
|
variant('highgui', default=True, description='Include opencv_highgui module into the OpenCV build')
|
||||||
|
variant('imgproc', default=True, description='Include opencv_imgproc module into the OpenCV build')
|
||||||
|
variant('java', default=True,
|
||||||
|
description='Activates support for Java')
|
||||||
|
variant('ml', default=True, description='Build ML support')
|
||||||
|
variant('python', default=True,
|
||||||
|
description='Enables the build of Python extensions')
|
||||||
|
variant('stitching', default=True, description='stitching module')
|
||||||
|
variant('superres', default=True, description='superres module')
|
||||||
|
variant('ts', default=True, description='Include opencv_ts module into the OpenCV build')
|
||||||
|
variant('video', default=True, description='video module')
|
||||||
|
variant('videostab', default=True, description='videostab module')
|
||||||
|
variant('videoio', default=True, description='videoio module')
|
||||||
|
|
||||||
|
# Optional 3rd party components
|
||||||
|
variant('cuda', default=True, description='Activates support for CUDA')
|
||||||
variant('eigen', default=True, description='Activates support for eigen')
|
variant('eigen', default=True, description='Activates support for eigen')
|
||||||
variant('ipp', default=True, description='Activates support for IPP')
|
variant('ipp', default=True, description='Activates support for IPP')
|
||||||
|
variant('ipp_iw', default=True, description='Build IPP IW from source')
|
||||||
variant('jasper', default=True, description='Activates support for JasPer')
|
variant('jasper', default=True, description='Activates support for JasPer')
|
||||||
variant('cuda', default=False, description='Activates support for CUDA')
|
variant('jpeg', default=True, description='Include JPEG support')
|
||||||
variant('gtk', default=False, description='Activates support for GTK')
|
variant('opencl', default=True, description='Include OpenCL Runtime support')
|
||||||
variant('vtk', default=False, description='Activates support for VTK')
|
variant('opencl_svm', default=True, description='Include OpenCL Shared Virtual Memory support')
|
||||||
|
variant('openclamdfft', default=True, description='Include OpenCL AMD OpenCL FFT library support')
|
||||||
|
variant('openclamdblas', default=True, description='Include OpenCL AMD OpenCL BLAS library support')
|
||||||
|
variant('openmp', default=True, description='Activates support for OpenMP threads')
|
||||||
|
variant('pthreads_pf', default=True, description='Use pthreads-based parallel_for')
|
||||||
|
variant('png', default=True, description='Include PNG support')
|
||||||
variant('qt', default=False, description='Activates support for QT')
|
variant('qt', default=False, description='Activates support for QT')
|
||||||
variant('python', default=False,
|
variant('gtk', default=True, description='Activates support for GTK')
|
||||||
description='Enables the build of Python extensions')
|
variant('tiff', default=True, description='Include TIFF support')
|
||||||
variant('java', default=False,
|
variant('vtk', default=True, description='Activates support for VTK')
|
||||||
description='Activates support for Java')
|
variant('zlib', default=True, description='Build zlib from source')
|
||||||
variant('openmp', default=False, description='Activates support for OpenMP threads')
|
|
||||||
variant('core', default=True, description='Include opencv_core module into the OpenCV build')
|
|
||||||
variant('highgui', default=False, description='Include opencv_highgui module into the OpenCV build')
|
|
||||||
variant('imgproc', default=False, description='Include opencv_imgproc module into the OpenCV build')
|
|
||||||
variant('jpeg', default=False, description='Include JPEG support')
|
|
||||||
variant('png', default=False, description='Include PNG support')
|
|
||||||
variant('tiff', default=False, description='Include TIFF support')
|
|
||||||
variant('zlib', default=False, description='Build zlib from source')
|
|
||||||
variant('dnn', default=False, description='Build DNN support')
|
|
||||||
|
|
||||||
depends_on('eigen~mpfr', when='+eigen', type='build')
|
depends_on('eigen~mpfr', when='+eigen', type='build')
|
||||||
|
|
||||||
@ -94,44 +121,98 @@ class Opencv(CMakePackage):
|
|||||||
depends_on('py-numpy', when='+python', type=('build', 'run'))
|
depends_on('py-numpy', when='+python', type=('build', 'run'))
|
||||||
depends_on('protobuf@3.1.0', when='@3.3.0: +dnn')
|
depends_on('protobuf@3.1.0', when='@3.3.0: +dnn')
|
||||||
|
|
||||||
|
depends_on('ffmpeg', when='+videoio')
|
||||||
|
depends_on('mpi', when='+videoio')
|
||||||
|
|
||||||
extends('python', when='+python')
|
extends('python', when='+python')
|
||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
|
|
||||||
|
# Standard variants
|
||||||
args = [
|
args = [
|
||||||
'-DBUILD_SHARED_LIBS:BOOL={0}'.format((
|
'-DBUILD_SHARED_LIBS:BOOL={0}'.format((
|
||||||
'ON' if '+shared' in spec else 'OFF')),
|
'ON' if '+shared' in spec else 'OFF')),
|
||||||
'-DENABLE_PRECOMPILED_HEADERS:BOOL=OFF',
|
'-DENABLE_PRECOMPILED_HEADERS:BOOL=OFF',
|
||||||
'-DWITH_IPP:BOOL={0}'.format((
|
'-DWITH_LAPACK={0}'.format((
|
||||||
'ON' if '+ipp' in spec else 'OFF')),
|
'ON' if '+lapack' in spec else 'OFF')),
|
||||||
'-DWITH_CUDA:BOOL={0}'.format((
|
'-DENABLE_POWERPC={0}'.format((
|
||||||
'ON' if '+cuda' in spec else 'OFF')),
|
'ON' if '+powerpc' in spec else 'OFF')),
|
||||||
'-DWITH_QT:BOOL={0}'.format((
|
'-DENABLE_VSX={0}'.format((
|
||||||
'ON' if '+qt' in spec else 'OFF')),
|
'ON' if '+vsx' in spec else 'OFF')),
|
||||||
'-DWITH_VTK:BOOL={0}'.format((
|
'-DENABLE_FAST_MATH={0}'.format((
|
||||||
'ON' if '+vtk' in spec else 'OFF')),
|
'ON' if '+fast-math' in spec else 'OFF')),
|
||||||
'-DBUILD_opencv_java:BOOL={0}'.format((
|
]
|
||||||
'ON' if '+java' in spec else 'OFF')),
|
|
||||||
|
# modules
|
||||||
|
args.extend([
|
||||||
|
'-DBUILD_opencv_calib3d={0}'.format((
|
||||||
|
'ON' if '+calib3d' in spec else 'OFF')),
|
||||||
'-DBUILD_opencv_core:BOOL={0}'.format((
|
'-DBUILD_opencv_core:BOOL={0}'.format((
|
||||||
'ON' if '+core' in spec else 'OFF')),
|
'ON' if '+core' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_dnn:BOOL={0}'.format((
|
||||||
|
'ON' if '+dnn' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_features2d={0}'.format((
|
||||||
|
'ON' if '+features2d' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_flann={0}'.format((
|
||||||
|
'ON' if '+flann' in spec else 'OFF')),
|
||||||
'-DBUILD_opencv_highgui:BOOL={0}'.format((
|
'-DBUILD_opencv_highgui:BOOL={0}'.format((
|
||||||
'ON' if '+highgui' in spec else 'OFF')),
|
'ON' if '+highgui' in spec else 'OFF')),
|
||||||
'-DBUILD_opencv_imgproc:BOOL={0}'.format((
|
'-DBUILD_opencv_imgproc:BOOL={0}'.format((
|
||||||
'ON' if '+imgproc' in spec else 'OFF')),
|
'ON' if '+imgproc' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_java:BOOL={0}'.format((
|
||||||
|
'ON' if '+java' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_ml={0}'.format((
|
||||||
|
'ON' if '+ml' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_stitching={0}'.format((
|
||||||
|
'ON' if '+stitching' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_superres={0}'.format((
|
||||||
|
'ON' if '+superres' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_ts={0}'.format((
|
||||||
|
'ON' if '+ts' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_video={0}'.format((
|
||||||
|
'ON' if '+video' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_videostab={0}'.format((
|
||||||
|
'ON' if '+videostab' in spec else 'OFF')),
|
||||||
|
'-DBUILD_opencv_videoio={0}'.format((
|
||||||
|
'ON' if '+videoio' in spec else 'OFF')),
|
||||||
|
])
|
||||||
|
|
||||||
|
# 3rd party components
|
||||||
|
args.extend([
|
||||||
|
'-DWITH_CUDA:BOOL={0}'.format((
|
||||||
|
'ON' if '+cuda' in spec else 'OFF')),
|
||||||
|
'-DWITH_EIGEN={0}'.format((
|
||||||
|
'ON' if '+eigen' in spec else 'OFF')),
|
||||||
|
'-DWITH_IPP:BOOL={0}'.format((
|
||||||
|
'ON' if '+ipp' in spec else 'OFF')),
|
||||||
|
'-DBUILD_IPP_IW:BOOL={0}'.format((
|
||||||
|
'ON' if '+ipp_iw' in spec else 'OFF')),
|
||||||
'-DWITH_JPEG:BOOL={0}'.format((
|
'-DWITH_JPEG:BOOL={0}'.format((
|
||||||
'ON' if '+jpeg' in spec else 'OFF')),
|
'ON' if '+jpeg' in spec else 'OFF')),
|
||||||
'-DWITH_PNG:BOOL={0}'.format((
|
'-DWITH_OPENCL={0}'.format((
|
||||||
'ON' if '+png' in spec else 'OFF')),
|
'ON' if '+opencl' in spec else 'OFF')),
|
||||||
'-DWITH_TIFF:BOOL={0}'.format((
|
'-DWITH_OPENCL_SVM={0}'.format((
|
||||||
'ON' if '+tiff' in spec else 'OFF')),
|
'ON' if '+opencl_svm' in spec else 'OFF')),
|
||||||
'-DWITH_ZLIB:BOOL={0}'.format((
|
'-DWITH_OPENCLAMDFFT={0}'.format((
|
||||||
'ON' if '+zlib' in spec else 'OFF')),
|
'ON' if '+openclamdfft' in spec else 'OFF')),
|
||||||
|
'-DWITH_OPENCLAMDBLAS={0}'.format((
|
||||||
|
'ON' if '+openclamdblas' in spec else 'OFF')),
|
||||||
'-DWITH_OPENMP:BOOL={0}'.format((
|
'-DWITH_OPENMP:BOOL={0}'.format((
|
||||||
'ON' if '+openmp' in spec else 'OFF')),
|
'ON' if '+openmp' in spec else 'OFF')),
|
||||||
'-DBUILD_opencv_dnn:BOOL={0}'.format((
|
'-DWITH_PTHREADS_PF={0}'.format((
|
||||||
'ON' if '+dnn' in spec else 'OFF')),
|
'ON' if '+pthreads_pf' in spec else 'OFF')),
|
||||||
]
|
'-DWITH_PNG:BOOL={0}'.format((
|
||||||
|
'ON' if '+png' in spec else 'OFF')),
|
||||||
|
'-DWITH_QT:BOOL={0}'.format((
|
||||||
|
'ON' if '+qt' in spec else 'OFF')),
|
||||||
|
'-DWITH_TIFF:BOOL={0}'.format((
|
||||||
|
'ON' if '+tiff' in spec else 'OFF')),
|
||||||
|
'-DWITH_VTK:BOOL={0}'.format((
|
||||||
|
'ON' if '+vtk' in spec else 'OFF')),
|
||||||
|
'-DWITH_ZLIB:BOOL={0}'.format((
|
||||||
|
'ON' if '+zlib' in spec else 'OFF')),
|
||||||
|
])
|
||||||
|
|
||||||
# Media I/O
|
# Media I/O
|
||||||
if '+zlib' in spec:
|
if '+zlib' in spec:
|
||||||
|
Loading…
Reference in New Issue
Block a user