cmake_minimum_required(VERSION 3.16.3)

SET_POLICIES()

project(quentier_update)

set(HEADERS
    GitHubUpdateChecker.h
    IUpdateChecker.h
    IUpdateProvider.h
    UpdateManager.h)

set(SOURCES
    GitHubUpdateChecker.cpp
    IUpdateChecker.cpp
    IUpdateProvider.cpp
    UpdateManager.cpp)

if(USE_APP_IMAGE_UPDATER_BRIDGE)
  list(APPEND HEADERS AppImageUpdateChecker.h)
  list(APPEND HEADERS AppImageUpdateProvider.h)
  list(APPEND SOURCES AppImageUpdateChecker.cpp)
  list(APPEND SOURCES AppImageUpdateProvider.cpp)
endif()

string(TIMESTAMP BUILD_TIMESTAMP "%Y-%m-%dT%H:%M:%SZ")

if(NOT GIT_FOUND)
  set(QUENTIER_GIT_BRANCH "")
  set(QUENTIER_GIT_REVISION "")
endif()

set(QUENTIER_DEFAULT_UPDATE_CHANNEL  "#define QUENTIER_DEFAULT_UPDATE_CHANNEL \"${DEFAULT_UPDATE_CHANNEL}\"")
set(QUENTIER_DEFAULT_UPDATE_PROVIDER "#define QUENTIER_DEFAULT_UPDATE_PROVIDER UpdateProvider::${DEFAULT_UPDATE_PROVIDER}")
set(QUENTIER_BUILD_TIMESTAMP         "#define QUENTIER_BUILD_TIMESTAMP QStringLiteral(\"${BUILD_TIMESTAMP}\")")
set(QUENTIER_BUILD_GIT_BRANCH        "#define QUENTIER_BUILD_GIT_BRANCH QStringLiteral(\"${QUENTIER_GIT_BRANCH}\")")
set(QUENTIER_BUILD_GIT_COMMIT        "#define QUENTIER_BUILD_GIT_COMMIT QStringLiteral(\"${QUENTIER_GIT_REVISION}\")")

set(QUENTIER_UPDATE_INFO_HEADER
    "${CMAKE_CURRENT_BINARY_DIR}/UpdateInfo.h"
    CACHE INTERNAL "QUENTIER_UPDATE_INFO_HEADER")
configure_file(UpdateInfo.h.in
               ${QUENTIER_UPDATE_INFO_HEADER} @ONLY)
list(APPEND HEADERS ${QUENTIER_UPDATE_INFO_HEADER})
set(QUENTIER_UPDATE_INFO_HEADER_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE INTERNAL "UpdateInfo.h dir")
include_directories(${CMAKE_CURRENT_BINARY_DIR})

add_library(${PROJECT_NAME} STATIC ${HEADERS} ${SOURCES})

target_link_libraries(${PROJECT_NAME} ${quentier_network})

set_target_properties(${PROJECT_NAME} PROPERTIES
  CXX_STANDARD 14
  CXX_EXTENSIONS OFF)

set(quentier_update ${PROJECT_NAME} CACHE INTERNAL "quentier_update")

set(TRANSLATABLE_SOURCES
    ${HEADERS}
    ${SOURCES})

COLLECT_SOURCES_FOR_TRANSLATION(TRANSLATABLE_SOURCES, "")

COLLECT_SOURCES_FOR_CPPCHECK(SOURCES)

COLLECT_INCLUDE_DIRS(${PROJECT_SOURCE_DIR})

QUENTIER_COLLECT_HEADERS(HEADERS)
QUENTIER_COLLECT_SOURCES(SOURCES)
QUENTIER_COLLECT_INCLUDE_DIRS(${PROJECT_SOURCE_DIR})
