# === This file is part of Calamares - <https://calamares.io> ===
#
#   SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
#   SPDX-License-Identifier: BSD-2-Clause
#
set( CALA_WEBVIEW_INCLUDE_DIRECTORIES ${PROJECT_BINARY_DIR}/src/libcalamaresui )
set( CALA_WEBVIEW_LINK_LIBRARIES calamaresui )

option( WEBVIEW_FORCE_WEBKIT "Always build webview with WebKit instead of WebEngine regardless of Qt version." OFF)

set( _reason "" )

message( STATUS "Found Qt version ${Qt5Core_VERSION}")
if ( Qt5Core_VERSION VERSION_LESS 5.6 OR WEBVIEW_FORCE_WEBKIT )
    message( STATUS " .. using webkit")
    find_package( Qt5 ${QT_VERSION} CONFIG COMPONENTS WebKit WebKitWidgets )

    if ( Qt5WebKit_FOUND AND Qt5WebKitWidgets_FOUND )
        list( APPEND CALA_WEBVIEW_INCLUDE_DIRECTORIES
            ${QT_QTWEBKIT_INCLUDE_DIR}
        )
        list( APPEND CALA_WEBVIEW_LINK_LIBRARIES
            Qt5::WebKit
            Qt5::WebKitWidgets
        )
        set( WEBVIEW_WITH_WEBKIT 1 )
    else()
        set( _reason "No suitable WebKit" )
    endif()
else()
    message( STATUS " .. using webengine")
    find_package( Qt5 ${QT_VERSION} CONFIG COMPONENTS WebEngine WebEngineWidgets )

    if ( Qt5WebEngine_FOUND AND Qt5WebEngineWidgets_FOUND )
        list( APPEND CALA_WEBVIEW_INCLUDE_DIRECTORIES
            ${QT_QTWEBENGINE_INCLUDE_DIR}
        )
        list( APPEND CALA_WEBVIEW_LINK_LIBRARIES
            Qt5::WebEngine
            Qt5::WebEngineWidgets
        )
        set( WEBVIEW_WITH_WEBENGINE 1 )
    else()
        set( _reason "No suitable WebEngine" )
    endif()
endif()

if ( NOT _reason )
    include_directories( ${CALA_WEBVIEW_INCLUDE_DIRECTORIES} )

    configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/WebViewConfig.h.in
                    ${CMAKE_CURRENT_BINARY_DIR}/WebViewConfig.h )

    calamares_add_plugin( webview
        TYPE viewmodule
        EXPORT_MACRO PLUGINDLLEXPORT_PRO
        SOURCES
            WebViewStep.cpp
        LINK_PRIVATE_LIBRARIES
            ${CALA_WEBVIEW_LINK_LIBRARIES}
        SHARED_LIB
    )
else()
    calamares_skip_module( "webview (${_reason})" )
endif()
