# IT4Innovations
# LK 2022

name = 'OpenCV'
version = '4.5.5'
versionsuffix = '-CUDA-%(cudaver)s-contrib'

# the hash is version dependent! see 3rdparty/ippicv/ippicv.cmake
local_ippicv_hash = 'a56b6ac6f030c312b2dce17430eef13aed9af274'

homepage = 'https://opencv.org/'
description = """OpenCV (Open Source Computer Vision Library) is an open source computer vision
 and machine learning software library. OpenCV was built to provide
 a common infrastructure for computer vision applications and to accelerate
 the use of machine perception in the commercial products.
 Includes extra modules for OpenCV from the contrib repository."""

toolchain = {'name': 'foss', 'version': '2021a'}

sources = [
    {'source_urls': ['https://github.com/opencv/opencv/archive/'],
     'download_filename': '%(version)s.zip', 'filename': SOURCELOWER_ZIP},
    {'source_urls': ['https://github.com/opencv/opencv_contrib/archive/'],
     'download_filename': '%(version)s.zip', 'filename': '%(namelower)s_contrib-%(version)s.zip'},
    {'source_urls': ['https://raw.githubusercontent.com/opencv/opencv_3rdparty/%s/ippicv' % local_ippicv_hash],
     'filename': 'ippicv_2020_lnx_intel64_20191018_general.tgz', 'extract_cmd': "cp %s %(builddir)s"},
]

builddependencies = [
    ('CMake', '3.20.1'),
]

dependencies = [
    ('Python', '3.9.5'),
    ('SciPy-bundle', '2021.05'),  # for numpy
    ('zlib', '1.2.11'),
    ('FFmpeg', '4.3.2'),
    ('freetype', '2.10.4'),
    ('HarfBuzz', '2.8.1'),
    ('libjpeg-turbo', '2.0.6'),
    ('libpng', '1.6.37'),
    ('LibTIFF', '4.2.0'),
    ('libwebp', '1.2.0'),
    ('OpenEXR', '3.0.1'),
    ('JasPer', '2.0.28'),
    ('Java', '11', '', True),
    ('ant', '1.10.9', '-Java-%(javaver)s', True),
    ('GLib', '2.68.2'),
    ('GTK3', '3.24.29'),
    ('HDF5', '1.10.7'),  # needed by hdf from contrib
    ('CUDA', '11.4.1', '', True),
    ('cuDNN', '8.2.2.26', '-CUDA-%(cudaver)s', True),
]

# XXXX in configurations is a bug fix in OpenCV because ocv_check_modules is not able to recognize freetype and harfbuzz
# ref: https://github.com/opencv/opencv/blob/6e8daaec0f46aaba9ea22e2afce47307b1dbff9f/cmake/OpenCVUtils.cmake#L861
configopts = '-DOPENCV_EXTRA_MODULES_PATH=%(builddir)s/%(namelower)s_contrib-%(version)s/modules '
configopts += '-DFREETYPE_FOUND=ON '
configopts += '-DFREETYPE_INCLUDE_DIRS=$EBROOTFREETYPE/include/freetype2/ '
configopts += '-DFREETYPE_LIBRARIES=$EBROOTFREETYPE/lib64/libfreetype.so '
configopts += '-DFREETYPE_LINK_LIBRARIES=$EBROOTFREETYPE/lib64/libfreetype.so '
configopts += '-DFREETYPE_LINK_LIBRARIES_XXXXX=ON '
configopts += '-DHARFBUZZ_FOUND=ON '
configopts += '-DHARFBUZZ_INCLUDE_DIRS=$EBROOTHARFBUZZ/include/harfbuzz '
configopts += '-DHARFBUZZ_LIBRARIES=$EBROOTHARFBUZZ/lib64/libharfbuzz.so '
configopts += '-DHARFBUZZ_LINK_LIBRARIES=$EBROOTHARFBUZZ/lib64/libharfbuzz.so '
configopts += '-DHARFBUZZ_LINK_LIBRARIES_XXXXX=ON '
configopts += '-DBUILD_opencv_python2=OFF '

enhance_sanity_check = True

local_contrib_libs = [
    'aruco', 'bgsegm', 'bioinspired', 'ccalib', 'datasets', 'dnn_objdetect', 'dnn_superres', 'dpm', 'face', 'freetype',
    'fuzzy', 'hdf', 'hfs', 'img_hash', 'line_descriptor', 'optflow', 'phase_unwrapping', 'plot', 'quality', 'reg',
    'rgbd', 'saliency', 'shape', 'stereo', 'structured_light', 'superres', 'surface_matching', 'text', 'tracking',
    'videostab', 'xfeatures2d', 'ximgproc', 'xobjdetect', 'xphoto'
]

sanity_check_paths = {
    'files': ['lib64/libopencv_%s.%s' % (l, SHLIB_EXT) for l in local_contrib_libs],
    'dirs': [],
}

moduleclass = 'vis'