file(CREATE_LINK ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../LomiriMetricsQt6 SYMBOLIC)

set(QML_PLUGIN_DIR "${QML_PLUGIN_BASE_DIR}/PerformanceMetrics")

set(LomiriMetrics_EXTRA_HEADERS
    applicationmonitor.h
    events.h
    logger.h
    lomirimetricsglobal.h
)

add_library(LomiriMetrics SHARED
    applicationmonitor.cpp applicationmonitor_p.h
    bitmaptext.cpp bitmaptext_p.h
    bitmaptextfont_p.h
    events.cpp events_p.h
    gputimer.cpp gputimer_p.h
    logger.cpp logger_p.h
    lomirimetricsglobal.cpp lomirimetricsglobal_p.h
    overlay.cpp overlay_p.h
    ${LomiriMetrics_EXTRA_HEADERS}
)
add_library(LomiriMetrics::LomiriMetrics ALIAS LomiriMetrics)

target_compile_definitions(LomiriMetrics PRIVATE
    EGL_NO_X11
    MESA_EGL_NO_X11_HEADERS
)

set_target_properties(LomiriMetrics PROPERTIES
    VERSION     ${LOMIRI_UI_TOOLKIT_VERSION}
    SOVERSION   ${LOMIRI_UI_TOOLKIT_SOVERSION}
    OUTPUT_NAME "LomiriMetricsQt6"
    EXPORT_NAME "LomiriMetricsQt6"
)

target_link_libraries(LomiriMetrics PRIVATE
    Qt::CorePrivate
    Qt::GuiPrivate
    Qt::QuickPrivate
    dl
    ${EGL_LIBRARIES}
)

ecm_generate_export_header(LomiriMetrics
    VERSION ${LOMIRI_UI_TOOLKIT_VERSION}
    BASE_NAME LomiriMetrics
)

# FIXME
#ecm_generate_headers(LomiriMetrics_HEADERS
#    HEADER_NAMES
#    REQUIRED_HEADERS LomiriMetrics_HEADERS
#)

if(LTTngUST_FOUND)
    target_compile_definitions(LomiriMetrics PRIVATE
        LTTNG_PLUGIN_BUILD_PATH=\"${CMAKE_CURRENT_BINARY_DIR}/lttng/libumlttng.so\"
        LTTNG_PLUGIN_INSTALL_PATH=\"${QT_INSTALL_PLUGINS}/lomiri/metrics/libumlttng.so\"
    )

    add_subdirectory(lttng)
endif()

# install
install(TARGETS LomiriMetrics
    EXPORT LomiriMetricsTargets
    LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}
)

set(CMAKECONFIG_INSTALL_DIR "${LOMIRI_INSTALL_CMAKEPACKAGEDIR}/LomiriMetricsQt6")

ecm_setup_version(
    PROJECT
    VARIABLE_PREFIX LomiriMetrics
    VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/lomirimetricsqt6version.h"
    PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/LomiriMetricsQt6ConfigVersion.cmake"
    SOVERSION ${LOMIRI_UI_TOOLKIT_SOVERSION}
)

install(FILES
        ${LomiriMetrics_HEADERS}
        ${LomiriMetrics_EXTRA_HEADERS}
        "${CMAKE_CURRENT_BINARY_DIR}/lomirimetricsqt6version.h"
    DESTINATION ${QT_INSTALL_INCLUDEDIR}/LomiriMetricsQt6
    COMPONENT Devel
)

ecm_generate_pkgconfig_file(BASE_NAME LomiriMetricsQt6
    INCLUDE_INSTALL_DIR ${QT_INSTALL_INCLUDEDIR}/LomiriMetricsQt6
    DEPS "Qt6CorePrivate Qt6GuiPrivate Qt6QuickPrivate dl egl"
    INSTALL
)

configure_package_config_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/LomiriMetricsQt6Config.cmake.in"
    "${CMAKE_CURRENT_BINARY_DIR}/LomiriMetricsQt6Config.cmake"
    INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
    PATH_VARS CMAKE_INSTALL_PREFIX
)

install(FILES
    "${CMAKE_CURRENT_BINARY_DIR}/LomiriMetricsQt6Config.cmake"
    "${CMAKE_CURRENT_BINARY_DIR}/LomiriMetricsQt6ConfigVersion.cmake"
    DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
    COMPONENT Devel
)

install(EXPORT LomiriMetricsTargets
    DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
    FILE LomiriMetricsQt6Targets.cmake
    NAMESPACE LomiriMetrics::
)
