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

set(CMAKE_CXX_STANDARD 11)
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 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 TS_FILES "translations/*.ts")
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
qt6_add_lrelease(phototonic
    TS_FILES ${TS_FILES}
    QM_FILES_OUTPUT_VARIABLE QM_FILES
)

include(GNUInstallDirs)

install(TARGETS phototonic
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

if(UNIX AND NOT APPLE)
    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
    )

    install(FILES ${QM_FILES}
        DESTINATION "${CMAKE_INSTALL_DATADIR}/phototonic/lang"
    )
endif()