cmake_minimum_required(VERSION 3.16)
project(phototonic
    VERSION 3.1.0
    LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release)
endif()

find_package(Qt6 COMPONENTS Widgets OpenGLWidgets LinguistTools REQUIRED)
find_package(exiv2 REQUIRED)

set(HEADERS
    Phototonic.h ThumbsViewer.h ImageViewer.h CropRubberband.h
    SettingsDialog.h Settings.h InfoViewer.h FileSystemTree.h
    Bookmarks.h DirCompleter.h Tags.h MetadataCache.h
    ShortcutsTable.h CopyMoveDialog.h CopyMoveToDialog.h
    CropDialog.h ColorsDialog.h ResizeDialog.h
    ExternalAppsDialog.h ImageWidget.h RenameDialog.h
    MessageBox.h GuideWidget.h SmartCrop.h
)

set(SOURCES
    main.cpp Phototonic.cpp ThumbsViewer.cpp ImageViewer.cpp
    CropRubberband.cpp SettingsDialog.cpp Settings.cpp
    InfoViewer.cpp FileSystemTree.cpp Bookmarks.cpp
    DirCompleter.cpp Tags.cpp MetadataCache.cpp
    ShortcutsTable.cpp CopyMoveDialog.cpp CopyMoveToDialog.cpp
    CropDialog.cpp ExternalAppsDialog.cpp ColorsDialog.cpp
    ResizeDialog.cpp ImageWidget.cpp RenameDialog.cpp
    MessageBox.cpp GuideWidget.cpp IconProvider.cpp
    SmartCrop.cpp
)

qt_add_resources(RESOURCES phototonic.qrc)

add_executable(phototonic
    ${SOURCES}
    ${HEADERS}
    ${RESOURCES}
)

target_link_libraries(phototonic
    PRIVATE Qt6::Widgets Qt6::OpenGLWidgets exiv2
)

file(GLOB TRANS_FILES "translations/*.ts")
qt_add_translations(phototonic TS_FILES ${TRANS_FILES}
        QM_FILES_OUTPUT_VARIABLE qm_files
        LUPDATE_OPTIONS "-no-ui-lines -locations none -no-obsolete")
add_dependencies(phototonic "release_translations")

include(GNUInstallDirs)

install(TARGETS phototonic
    RUNTIME DESTINATION bin
)

install(FILES images/phototonic.png
    DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/48x48/apps
)

install(FILES images/icon16/phototonic.png
    DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/16x16/apps
)

install(FILES images/icon16/phototonic.png
    DESTINATION ${CMAKE_INSTALL_DATADIR}/pixmaps
)

install(FILES phototonic.desktop
    DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
)

install(FILES phototonic.appdata.xml
    DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo
)
