cmake_minimum_required(VERSION 3.14)
project(ukui-file-metadata LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(FeatureSummary)
include(GNUInstallDirs)
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

include(CheckStructHasMember)

#Define QT_MAJOR_VERSION
if (DEFINED QT_MAJOR_VERSION)
    return()
endif()

if (TARGET Qt5::Core)
    set(QT_MAJOR_VERSION 5)
elseif (TARGET Qt6::Core)
    set(QT_MAJOR_VERSION 6)
else()
    option(BUILD_WITH_QT6 "Build against Qt 6" OFF)

    if (BUILD_WITH_QT6)
        set(QT_MAJOR_VERSION 6)
    else()
        set(QT_MAJOR_VERSION 5)
    endif()
endif()

# Dependencies
set(REQUIRED_QT_VERSION 5.12.8)
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Gui Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets REQUIRED)


set(QUAZIP_LIB "")
set(POPPLER_LIB "")
if(QT_VERSION_MAJOR EQUAL 5)
    set(QUAZIP_LIB quazip)
    set(POPPLER_LIB poppler-qt5)
elseif (QT_VERSION_MAJOR EQUAL 6)
    set(QUAZIP_LIB quazip1-qt6)
    set(POPPLER_LIB poppler-qt6)
endif ()

find_package(PkgConfig REQUIRED)

set(UKUI_FILE_METADATA_EXTERNAL_LIBS "")
set(UKUI_FILE_METADATA_PC_PKGS uchardet libavcodec libavformat libavutil libswscale taglib ${POPPLER_LIB} ${QUAZIP_LIB})
foreach(PC_LIB IN ITEMS ${UKUI_FILE_METADATA_PC_PKGS})
    string(TOUPPER "${PC_LIB}" UPPER_PC_LIB)
    pkg_check_modules(${UPPER_PC_LIB} REQUIRED IMPORTED_TARGET ${PC_LIB})
    if(${${UPPER_PC_LIB}_FOUND})
        include_directories(${${UPPER_PC_LIB}_INCLUDE_DIRS})
        link_directories(${${UPPER_PC_LIB}_LIBRARY_DIRS})
        list(APPEND UKUI_FILE_METADATA_LIBS PkgConfig::${PC_LIB})
    endif()
endforeach()

string(TOUPPER "${QUAZIP_LIB}" QUAZIP_NAME)
string(TOUPPER "${POPPLER_LIB}" POPPLER_NAME)

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

feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)

