cmake_minimum_required(VERSION 3.30)
project(AppStreamQt VERSION 1.0.5 LANGUAGES CXX)
include(GNUInstallDirs)
if(NOT APPSTREAM_SOURCE_DIR)
    message(FATAL_ERROR "Provide the authenticated AppStream source directory")
endif()
find_package(Qt6 6.11.2 EXACT REQUIRED COMPONENTS Core)
find_package(PkgConfig REQUIRED)
pkg_check_modules(NATIVE_APPSTREAM REQUIRED IMPORTED_TARGET appstream=1.0.5)
pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
include(${CMAKE_CURRENT_LIST_DIR}/source-files.cmake)
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD 17)
set(AS_MAJOR_VERSION_CONF 1)
set(AS_MINOR_VERSION_CONF 0)
set(AS_MICRO_VERSION_CONF 5)
configure_file(${APPSTREAM_SOURCE_DIR}/qt/version.h.in version.h @ONLY)
add_library(AppStreamQt SHARED ${asqt_src} ${asqt_pub_headers} ${asqt_priv_headers})
target_compile_definitions(AppStreamQt PRIVATE QT_NO_KEYWORDS)
target_include_directories(AppStreamQt PRIVATE
    ${APPSTREAM_SOURCE_DIR}/qt
    # Upstream pool.cpp uses as-pool-private.h for the exported
    # as_pool_override_cache_locations API in the matching native 1.0.5 core.
    ${APPSTREAM_SOURCE_DIR}/src
    ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(AppStreamQt PUBLIC Qt6::Core PRIVATE PkgConfig::NATIVE_APPSTREAM PkgConfig::GIO)
set_target_properties(AppStreamQt PROPERTIES VERSION 1.0.5 SOVERSION 3 CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN ON)
install(TARGETS AppStreamQt LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES ${asqt_pub_headers} ${CMAKE_CURRENT_BINARY_DIR}/version.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/AppStreamQt)
set(PREFIX ${CMAKE_INSTALL_PREFIX})
set(LIBDIR ${CMAKE_INSTALL_LIBDIR})
set(LIBDIR_FULL ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
set(VERSION ${PROJECT_VERSION})
foreach(name AppStreamQtConfig AppStreamQtConfigVersion)
    configure_file(${APPSTREAM_SOURCE_DIR}/qt/cmake/${name}.cmake.in ${name}.cmake @ONLY)
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/AppStreamQt)
endforeach()
