# SPDX-License-Identifier: BSD-3-Clause
# SPDX-FileCopyrightText: 2023-2025 Laurent Montel <montel@kde.org>
if(0)
    include(ExternalProject)
    include_directories(${CMAKE_CURRENT_BINARY_DIR}/)
    kde_enable_exceptions()
    set(COMPILE_CUDA OFF CACHE BOOL "Compile GPU version")
    set(USE_SENTENCEPIECE ON CACHE BOOL "Download and compile SentencePiece")
    set(USE_STATIC_LIBS ON CACHE BOOL "Link statically against non-system libs")
    set(USE_WASM_COMPATIBLE_SOURCE OFF CACHE BOOL "Don't build wasm compatible sources")

    add_definitions(-DPHF_NO_LIBCXX=0)
    #add_definitions(-DCUDA_FOUND=0)
    add_definitions(-D__STDC_VERSION__=0)
    if(0)
        include_directories(${CMAKE_CURRENT_BINARY_DIR}/bergamot-translator/3rd_party/marian-dev/src/)
        include_directories(
            ${CMAKE_CURRENT_BINARY_DIR}/bergamot-translator/3rd_party/marian-dev/src/3rd_party/spdlog/include/
        )
        include_directories(${CMAKE_CURRENT_BINARY_DIR}/bergamot-translator/3rd_party/marian-dev/src/3rd_party)
        include_directories(${CMAKE_CURRENT_BINARY_DIR}/bergamot-translator/)
        include_directories(${CMAKE_CURRENT_BINARY_DIR}/bergamot-translator/3rd_party/ssplit-cpp/src/ssplit/)
        include_directories(${CMAKE_CURRENT_BINARY_DIR}/bergamot-translator/src/)
        set(ext_source_dir ${CMAKE_CURRENT_BINARY_DIR}/bergamot-translator)
        ExternalProject_Add(
            3rdparty_bergamot
            #PREFIX ${ext_source_dir}/build
            GIT_REPOSITORY "https://github.com/browsermt/bergamot-translator.git"
            GIT_TAG "main"
            SOURCE_DIR ${ext_source_dir}
            BUILD_IN_SOURCE ON
            CMAKE_ARGS
                -DBLA_PREFER_PKGCONFIG:BOOL=ON -DBLA_PKGCONFIG_BLAS:STRING=openblas -Dcblas_cblas_LIBRARY:STRING=cblas
        )
    endif()

    add_subdirectory(bergamot-translator EXCLUDE_FROM_ALL)
endif()
add_library(libbergamot)

target_sources(
    libbergamot
    PRIVATE
        begamotenginedialog.h
        begamotenginedialog.cpp
        bergamotenginewidget.h
        bergamotenginewidget.cpp
        managermodeltranslator.h
        managermodeltranslator.cpp
        translator.h
        translator.cpp
        bergamotengineutils.h
        bergamotengineutils.cpp
        translatormodel.h
        translatormodel.cpp
        bergamotenginelanguagewidget.h
        bergamotenginelanguagewidget.cpp
        bergamotenginesettingswidget.h
        bergamotenginesettingswidget.cpp
        libbergamot_private_export.h
        translatorproxymodel.h
        translatorproxymodel.cpp
        bergamotmarianinterface.h
        bergamotmarianinterface.cpp
        extractlanguagejob.h
        extractlanguagejob.cpp
        downloadlanguagejob.h
        downloadlanguagejob.cpp
        translation.cpp
        translation.h
)

generate_export_header(libbergamot BASE_NAME libbergamot)

ecm_qt_declare_logging_category(libbergamot HEADER libbergamot_debug.h IDENTIFIER TRANSLATOR_LIBBERGAMOT_LOG
    CATEGORY_NAME org.kde.libbergamottranslator DESCRIPTION "lib bergamot translator" EXPORT KTEXTADDONS
)

target_link_libraries(
    libbergamot
    Qt::Widgets
    KF6::I18n
    KF6::ConfigCore
    KF6::ConfigGui
    KF6::TextTranslator
    KF6::TextAddonsWidgets
    KF6::WidgetsAddons
    KF6::Archive
    slimt::slimt-shared
)

set_target_properties(
    libbergamot
    PROPERTIES
        OUTPUT_NAME
            libbergamot
        VERSION
            ${TEXTTRANSLATE_VERSION}
        SOVERSION
            ${TEXTTRANSLATE_SOVERSION}
)

install(
    TARGETS
        libbergamot
        ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}
    LIBRARY
        NAMELINK_SKIP
)

add_library(translator_bergamot MODULE)
ecm_qt_declare_logging_category(translator_debug_bergamot_SRCS
    HEADER bergamottranslator_debug.h
    IDENTIFIER TRANSLATOR_BERGAMOT_LOG
    CATEGORY_NAME org.kde.kf.texttranslator.bergamot
    DESCRIPTION "bergamot translator"
    EXPORT KTEXTADDONS
)

target_sources(
    translator_bergamot
    PRIVATE
        ${translator_debug_bergamot_SRCS}
        bergamotengineplugin.cpp
        bergamotengineplugin.h
        bergamotengineclient.cpp
        bergamotengineclient.h
)

target_link_libraries(
    translator_bergamot
    PRIVATE
        KF6::TextTranslator
        KF6::I18n
        libbergamot
)

install(TARGETS translator_bergamot DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf6/translator/)

if(BUILD_TESTING)
    add_subdirectory(autotests)
    add_subdirectory(tests)
endif()
