project(tesseract)

PKG_CHECK_MODULES(TESSERACT REQUIRED tesseract)
PKG_CHECK_MODULES(DDJVUAPI REQUIRED ddjvuapi)
PKG_CHECK_MODULES(PODOFO libpodofo)
PKG_SEARCH_MODULE(ENCHANT REQUIRED enchant-2 enchant)
PKG_CHECK_MODULES(QTSPELL REQUIRED QtSpell-qt5>=0.8.0)
PKG_CHECK_MODULES(POPPLER REQUIRED poppler-qt5)

# translations
file(GLOB TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts)
SET_SOURCE_FILES_PROPERTIES(${TS_FILES} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/translations)
QT5_ADD_TRANSLATION(QM_FILES ${TS_FILES})

#QuaZip5
FIND_PATH(QUAZIP_INCLUDE_DIR NAME quazipfile.h PATHS /usr/include  PATH_SUFFIXES quazip5 quazip)
FIND_LIBRARY(QUAZIP_LIBRARIES NAMES quazip5 quazip1-qt5)
IF(NOT QUAZIP_INCLUDE_DIR OR NOT QUAZIP_LIBRARIES)
    MESSAGE(FATAL_ERROR "QuaZip5 is required but was not found")
ENDIF()

IF(ENCHANT_FOUND AND (${ENCHANT_VERSION} VERSION_GREATER_EQUAL 2))
    ADD_DEFINITIONS(-DHAVE_ENCHANT2)
ENDIF()

IF(NOT PODOFO_FOUND)
    MESSAGE(WARNING "Using hardcoded cflags and ldflags for podofo")
    SET(PODOFO_INCLUDE_DIRS /usr/include/)
    SET(PODOFO_LDFLAGS -lpodofo)
ENDIF(NOT PODOFO_FOUND)

# translations
#file(GLOB TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/translations/*.ts)
#SET_SOURCE_FILES_PROPERTIES(${TS_FILES} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/translations)
#QT5_ADD_TRANSLATION(QM_FILES ${TS_FILES})

SET(tesseract_SRCS
    tesseractfactory.cpp
    tesseractengine.cpp
    translations/translations.qrc
)

SET(tesseract_UIS
    
)

SET_SOURCE_FILES_PROPERTIES(translations/translations.qrc PROPERTIES OBJECT_DEPENDS ${QM_FILES})

QT5_WRAP_UI(tesseract_UIS_H ${tesseract_UIS})

INCLUDE_DIRECTORIES(
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/../../
    ${CMAKE_CURRENT_BINARY_DIR}
)

INCLUDE_DIRECTORIES(
    SYSTEM
    ${DDJVUAPI_INCLUDE_DIRS}
    ${TESSERACT_INCLUDE_DIRS}
    ${ENCHANT_INCLUDE_DIRS}
    ${PODOFO_INCLUDE_DIRS}
    ${POPPLER_INCLUDE_DIRS}
    ${QTSPELL_INCLUDE_DIRS}
    ${QUAZIP_INCLUDE_DIR}
)

LINK_DIRECTORIES(
    ${DDJVUAPI_LIBRARY_DIRS}
    ${TESSERACT_LIBRARY_DIRS}
    ${ENCHANT_LIBRARY_DIRS}
    ${PODOFO_LIBRARY_DIRS}
    ${POPPLER_LIBRARY_DIRS}
    ${QTSPELL_LIBRARY_DIRS}
)

ADD_DEFINITIONS(
    ${DDJVUAPI_CFLAGS}
    ${TESSERACT_CFLAGS}
    ${ENCHANT_CFLAGS}
    ${PODOFO_CFLAGS}
    ${POPPLER_CFLAGS}
    ${QTSPELL_CFLAGS}
)

ADD_LIBRARY(tesseract MODULE ${tesseract_SRCS} ${tesseract_UIS_H})
TARGET_LINK_LIBRARIES(tesseract PRIVATE Qt5::Widgets libfly-ocr
    ${DDJVUAPI_LDFLAGS}
    ${TESSERACT_LDFLAGS}
    ${ENCHANT_LDFLAGS}
    ${PODOFO_LDFLAGS}
    ${POPPLER_LDFLAGS}
    ${QTSPELL_LDFLAGS}
    ${QUAZIP_LIBRARIES}
)
ADD_DEPENDENCIES(tesseract libfly-ocr)
INSTALL(TARGETS tesseract DESTINATION ${PLUGIN_DIR})
