cmake_minimum_required(VERSION 3.16)
project(ArchiveManager VERSION 0.1.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTORCC ON)
find_package(Qt6 REQUIRED COMPONENTS Widgets Network)
add_executable(archive-manager main.cpp update_checker.cpp appimage_updater.cpp icons.qrc)
set(ARCHIVE_UPDATE_VERSION "1.0.0b2" CACHE STRING "Internal version of the app")
set(ARCHIVE_UPDATE_FEED "https://devside.nl/archive-manager/updates/beta.json" CACHE STRING "Signed feed URL")
target_compile_definitions(archive-manager PRIVATE "ARCHIVE_UPDATE_FEED=\"${ARCHIVE_UPDATE_FEED}\"")
target_compile_definitions(archive-manager PRIVATE "ARCHIVE_UPDATE_VERSION=\"${ARCHIVE_UPDATE_VERSION}\"")
target_link_libraries(archive-manager PRIVATE Qt6::Widgets Qt6::Network)
install(TARGETS archive-manager RUNTIME DESTINATION bin)
install(FILES archive-manager-classic.desktop DESTINATION share/applications)
install(FILES icons/app/archive-manager-classic.svg DESTINATION share/icons/hicolor/scalable/apps)
foreach(ICON_SIZE 16 32 48 64 128 256 512)
  install(FILES icons/app/archive-manager-classic-${ICON_SIZE}.png
          DESTINATION share/icons/hicolor/${ICON_SIZE}x${ICON_SIZE}/apps
          RENAME archive-manager-classic.png)
endforeach()

install(FILES icons/7ZIP-LICENSE.txt icons/LGPL-2.1.txt DESTINATION share/doc/archive-manager)

include(CTest)
if(BUILD_TESTING)
  find_package(Qt6 COMPONENTS Test QUIET)
  if(TARGET Qt6::Test)
    add_executable(sort_navigation_test tests/sort_navigation.cpp icons.qrc)
    target_sources(sort_navigation_test PRIVATE update_checker.cpp appimage_updater.cpp)
    target_link_libraries(sort_navigation_test PRIVATE Qt6::Widgets Qt6::Network Qt6::Test)
    add_executable(dnd_peer tests/dnd_peer.cpp)
    target_link_libraries(dnd_peer PRIVATE Qt6::Widgets)
    add_executable(nested_archive_test tests/nested_archive.cpp icons.qrc)
    target_sources(nested_archive_test PRIVATE update_checker.cpp appimage_updater.cpp)
    target_link_libraries(nested_archive_test PRIVATE Qt6::Widgets Qt6::Network Qt6::Test)
    add_test(NAME nested_archive COMMAND nested_archive_test)
    set_tests_properties(nested_archive PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen")
    add_executable(menu_functions_test tests/menu_functions.cpp icons.qrc)
    target_sources(menu_functions_test PRIVATE update_checker.cpp appimage_updater.cpp)
    target_link_libraries(menu_functions_test PRIVATE Qt6::Widgets Qt6::Network Qt6::Test)
    add_test(NAME menu_functions COMMAND menu_functions_test)
    set_tests_properties(menu_functions PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen")
    add_test(NAME sort_navigation COMMAND sort_navigation_test)
    set_tests_properties(sort_navigation PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen")
  endif()
endif()
