# IT4Innovations
# LK 2024

easyblock = 'CMakeNinja'

name = 'Qt6'
version = '6.6.3'

homepage = 'https://qt.io/'
description = "Qt is a comprehensive cross-platform C++ application framework."

toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
# disabling use of -ftree-vectorize is required to avoid compilation failures on some systems (e.g. Intel Skylake X)
toolchainopts = {'vectorize': False}

source_urls = [
    'https://download.qt.io/official_releases/qt/%(version_major_minor)s/%(version)s/single/',
    'https://download.qt.io/archive/qt/%(version_major_minor)s/%(version)s/single/',
    'https://download.qt.io/new_archive/qt/%(version_major_minor)s/%(version)s/single/',
]
sources = ['qt-everywhere-src-%(version)s.tar.xz']
patches = [
    'Qt6-6.6.3_fix_OF-Gentoo.patch',
]
checksums = [
    {'qt-everywhere-src-6.6.3.tar.xz': '69d0348fef415da98aa890a34651e9cfb232f1bffcee289b7b4e21386bf36104'},
    {'Qt6-6.6.3_fix_OF-Gentoo.patch': 'd4d4878ac76cb985e45eb3b6e90ba2233f65807d6bd9bbe2b71365b181347b7b'},
]

builddependencies = [
    ('binutils', '2.40'),
    ('pkgconf', '2.0.3'),
    ('CMake', '3.27.6'),
    ('Ninja', '1.11.1'),
    # deps for QtWebEngine
    ('Bison', '3.8.2'),
    ('flex', '2.6.4'),
    ('gperf', '3.1'),
    ('re2c', '3.1'),
]

dependencies = [
    ('double-conversion', '3.3.0'),
    ('GLib', '2.78.1'),
    ('PCRE2', '10.42'),
    ('libpng', '1.6.40'),
    ('LibTIFF', '4.6.0'),
    ('libwebp', '1.3.2'),
    ('JasPer', '4.0.0'),
    ('HarfBuzz', '8.2.2'),
    ('SQLite', '3.43.1'),
    ('graphite2', '1.3.14'),
    ('assimp', '5.3.1'),  # for Qt 3D
    ('FFmpeg', '6.0'),
    ('X11', '20231019'),
    ('fontconfig', '2.14.2'),
    ('zlib', '1.2.13'),
    ('Python', '3.11.5'),
    ('Python-bundle-PyPI', '2023.10'),  # WebEngine
    ('freetype', '2.13.2'),  # WebEngine
    ('DBus', '1.15.8'),
    ('libevent', '2.1.12'),  # WebEngine
    ('libGLU', '9.0.3'),
    ('libjpeg-turbo', '3.0.1'),  # WebEngine
    ('NSS', '3.94'),  # WebEngine, required
    ('snappy', '1.1.10'),  # WebEngine
    ('ICU', '74.1'),  # WebEngine, optional
    ('nodejs', '20.9.0'),  # WebEngine, required
    # ('gRPC', '1.52.2'),  # WebEngine needs older Abseil/gRPC/protobuf
]

preconfigopts = 'sed -i "s/MultiMedia/Multimedia/g" ../qt-everywhere-src-%(version)s/qtcharts/CMakeLists.txt &&'  # Typo
preconfigopts += 'sed -i "23i set(Python3_ROOT_DIR \\$ENV{EBROOTPYTHON})" ' \
                 '../qt-everywhere-src-6.6.3/qtwebengine/src/gn/CMakeLists.txt &&'

configopts = '-Wno-dev '
configopts += '-DFEATURE_qtpdf_build=OFF '  # Requires CUPS
configopts += '-DQT_AVOID_CMAKE_ARCHIVING_API=ON '
configopts += '-DPython3_ROOT_DIR=$EBROOTPYTHON '
configopts += '-DBUILD_qtwayland=OFF '  # Does not work on CentOS 7
# Removed from Qt6.0.0 but may be added back in the future
# configopts += '-DBUILD_qtgamepad=OFF '  # Does not work on CentOS 7

sanity_check_paths = {
    'files': ['bin/qmake6', 'lib/libQt6Core.%s' % SHLIB_EXT, 'lib/libQt6WebEngineCore.%s' % SHLIB_EXT],
    'dirs': ['include/QtCore', 'include/QtWebEngineCore'],
}

sanity_check_commands = ['qmake6 --help']

moduleclass = 'devel'
