# SPDX-FileCopyrightText: 2026 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause

cmake_minimum_required(VERSION 3.18)

project(amberpdfqmlplugin DESCRIPTION "AmberPDF QML Plugin")

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_FLAGS "-Wall -Wextra")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
set(CMAKE_AUTOMOC ON)
set(PLUGIN_INSTALL_DIR "ru/auroraos/amberpdf")

include(FindPkgConfig)
include(ProcessorCount)

find_package(Qt5 COMPONENTS Core Gui Quick REQUIRED)
find_package(amberpdf)

ProcessorCount(NCPU)
message(STATUS "Number of threads: ${NCPU}")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    set(_LIB_DIR "lib64")
else()
    set(_LIB_DIR "lib")
endif()
message(STATUS "Library directory name: ${_LIB_DIR}")

file(GLOB_RECURSE SOURCES_FILES "plugin/src/*.cpp")

file(GLOB_RECURSE HEADER_FILES "plugin/src/*.h")

file(GLOB QML_FILES "plugin/*.qml")

file(GLOB QMLDIR_FILE "plugin/qmldir")

file(GLOB QMLTYPES_FILE "plugin/*.qmltypes")

qt5_add_resources(RESOURCES plugin/resources.qrc)

add_library(${PROJECT_NAME}
    SHARED
    ${SOURCES_FILES}
    ${RESOURCES}
    ${HEADER_FILES}
    ${QML_FILES}
    ${QMLDIR_FILE}
    ${QMLTYPES_FILE}
)

target_link_libraries(${PROJECT_NAME}
    Qt5::Core
    Qt5::Gui
    Qt5::Quick
    amberpdf::amberpdf
)

target_include_directories(${PROJECT_NAME}
    PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/plugin/src
    ${CMAKE_CURRENT_SOURCE_DIR}/plugin/src/interface
    ${CMAKE_CURRENT_SOURCE_DIR}/plugin/src/pdfium-provider
)

target_compile_definitions(${PROJECT_NAME}
    PRIVATE
    TASK_PRIORITY_RATIO=10
    PRELOAD_PAGES_COUNT=10
    HIGHLIGHT_OPACITY_ANNOT_ON=178
    HIGHLIGHT_OPACITY_ANNOT_OFF=42
    HIGHLIGHT_OPACITY_NOTE_ON=198
    HIGHLIGHT_OPACITY_NOTE_OFF=100
)

install(TARGETS ${PROJECT_NAME}
    LIBRARY
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PLUGIN_INSTALL_DIR}
    PERMISSIONS OWNER_WRITE OWNER_READ
)

install(FILES ${HEADER_FILES}
    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
)

install(FILES ${QML_FILES}
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PLUGIN_INSTALL_DIR}
)

install(FILES ${QMLDIR_FILE}
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PLUGIN_INSTALL_DIR}
)

install(FILES ${QMLTYPES_FILE}
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PLUGIN_INSTALL_DIR}
)

install(TARGETS amberpdfqmlplugin
  RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}
)

