cmake_minimum_required(VERSION 3.8)

project(ilr-demo VERSION 1.0 LANGUAGES CXX)			# Название проекта

option(USE_SHARED_ILR "Create with shared ILReaders otherwise static" ON)
option(USE_PKGCONFIG "Use PkgConfig to connect the library" OFF)

set(SOURCE_FILES 
    main.cpp 
    CMainWindow.cpp 
    CAppSettings.cpp
    CProgressDialog.cpp
    CReaderDialog.cpp
    CMifareReaderSettings.cpp
    CTemicReaderSettings.cpp
    CReaderMcKeysDialog.cpp
    CReaderMpKeysDialog.cpp
    CMfSecurityLevelDialog.cpp
    CMfClassicKeysDialog.cpp
    CMifareClassicDialog.cpp
    CMfClassicKeysSettings.cpp
    CMfPlusKeysDialog.cpp
    CMifarePlusDialog.cpp
    CMfPlusKeysSettings.cpp
    CTemicPasswordsDialog.cpp
    CTemicPasswordsSettings.cpp
    CMfUltralightDialog.cpp
    CTemicDialog.cpp
    CErrorsDialog.cpp
    CCardDataGrid.cpp
    utils.cpp
    ../ilr_cpp_helpers.cpp)

add_executable(${PROJECT_NAME} ${SOURCE_FILES})

include(GNUInstallDirs)

set(CMAKE_INSTALL_PREFIX "/usr" CACHE STRING " " FORCE )

find_package(PkgConfig REQUIRED)
# pkg_check_modules(GTKMM gtkmm-4.0)
pkg_check_modules(GTKMM REQUIRED IMPORTED_TARGET gtkmm-4.0)

# Find and link library
# find_library(ILREADERS NAMES ilreaders PATHS ${CMAKE_BINARY_DIR})
if(USE_PKGCONFIG)
    if(PROJECT_IS_TOP_LEVEL)
        find_package(PkgConfig REQUIRED)

        if(USE_SHARED_ILR)
            pkg_check_modules(ILREADERS REQUIRED IMPORTED_TARGET ilreaders)
        else()
            # pkg_check_modules(ILREADERS STATIC REQUIRED IMPORTED_TARGET ilreaders)
            # Включаем режим статики для pkg_check_modules
            set(old_static ${PKG_CONFIG_ARGN})
            set(PKG_CONFIG_ARGN "--static") # Добавляет флаг --static ко всем вызовам
            pkg_check_modules(ILREADERS REQUIRED IMPORTED_TARGET ilreaders)
            # Возвращаем настройки обратно
            set(PKG_CONFIG_ARGN ${old_static})
        endif(USE_SHARED_ILR)
    endif(PROJECT_IS_TOP_LEVEL)
    target_link_libraries(${PROJECT_NAME} PRIVATE 
        PkgConfig::ILREADERS
        PkgConfig::GTKMM)
else()
    if(PROJECT_IS_TOP_LEVEL)
        find_package(ilreaders REQUIRED)
    endif()
    target_link_libraries(${PROJECT_NAME} 
        ilreaders::ilreaders
        PkgConfig::GTKMM)
endif(USE_PKGCONFIG)

target_compile_definitions(${PROJECT_NAME} PRIVATE $<$<CONFIG:DEBUG>:_DEBUG>)
if(NOT USE_SHARED_ILR)
    target_compile_definitions(${PROJECT_NAME} PRIVATE ILR_STATIC_DEFINE)
endif()
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)

if(PROJECT_IS_TOP_LEVEL)
    install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
    # Настройка и установка ярлыка в меню приложений (название ярлыка должно совпадать с id приложения)
    configure_file(org.ilreaders.Demo.desktop.in org.ilreaders.Demo.desktop @ONLY)
    install(
        FILES "${CMAKE_CURRENT_BINARY_DIR}/org.ilreaders.Demo.desktop" 
        DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")

    # Общие данные
    set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
    set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
    # Название поставщика пакета
    set(CPACK_PACKAGE_VENDOR "Iron Logic")
    set(CPACK_PACKAGE_DESCRIPTION "Демонстрационная программа SDK Readers")
    set(CPACK_PACKAGE_HOMEPAGE_URL "https://ironlogic.ru/il_new.nsf/htm/ru_sdk-readers")
    set(CPACK_PACKAGE_CONTACT "Поддержка SDK Readers <support@ironlogic.ru>")
    set(CPACK_PROJECT_NAME "SDK Readers")

    set(CPACK_DEBIAN_PACKAGE_DEPENDS "libilreaders1, libgtkmm-4.0-0 (>= 4.8.0)")
    set(CPACK_RPM_PACKAGE_REQUIRES "libilreaders1, gtkmm4.0 >= 4.8.0")

    set(CPACK_GENERATOR "DEB;RPM"  CACHE STRING "Default packaging generators.")

    include(CPack)
endif()