cmake_minimum_required(VERSION 3.16.3)

set(LIBRARY_NAME ${LIBNAME}_synchronization)

add_library(${LIBRARY_NAME} STATIC)

target_sources(${LIBRARY_NAME}
  PRIVATE
  AccountSyncPersistenceDirProvider.cpp
  AccountSyncPersistenceDirProvider.h
  AccountSynchronizer.cpp
  AccountSynchronizer.h
  AccountSynchronizerFactory.cpp
  AccountSynchronizerFactory.h
  AuthenticationInfoProvider.cpp
  AuthenticationInfoProvider.h
  Authenticator.cpp
  Authenticator.h
  Downloader.cpp
  Downloader.h
  Fwd.h
  FullSyncStaleDataExpunger.cpp
  FullSyncStaleDataExpunger.h
  IAccountSyncPersistenceDirProvider.h
  IAccountSynchronizer.h
  IAccountSynchronizerFactory.h
  IAuthenticationInfoProvider.cpp
  IAuthenticationInfoProvider.h
  IDownloader.h
  IFullSyncStaleDataExpunger.cpp
  IFullSyncStaleDataExpunger.h
  IInkNoteImageDownloaderFactory.h
  ILinkedNotebookFinder.h
  ILinkedNotebookTagsCleaner.h
  InkNoteImageDownloaderFactory.cpp
  InkNoteImageDownloaderFactory.h
  INoteStoreProvider.h
  INoteThumbnailDownloaderFactory.h
  IProtocolVersionChecker.h
  ISender.cpp
  ISender.h
  IUserInfoProvider.h
  LinkedNotebookFinder.cpp
  LinkedNotebookFinder.h
  LinkedNotebookTagsCleaner.cpp
  LinkedNotebookTagsCleaner.h
  NotebookFinder.cpp
  NotebookFinder.h
  NoteStoreFactory.cpp
  NoteStoreFactory.h
  NoteStoreProvider.cpp
  NoteStoreProvider.h
  NoteThumbnailDownloaderFactory.cpp
  NoteThumbnailDownloaderFactory.h
  ProtocolVersionChecker.cpp
  ProtocolVersionChecker.h
  Sender.cpp
  Sender.h
  SynchronizationMode.cpp
  SynchronizationMode.h
  Synchronizer.cpp
  Synchronizer.h
  SyncEventsNotifier.cpp
  SyncEventsNotifier.h
  UserInfoProvider.cpp
  UserInfoProvider.h
  UserStoreFactory.cpp
  UserStoreFactory.h
  Utils.cpp
  Utils.h
  conflict_resolvers/Factory.cpp
  conflict_resolvers/Factory.h
  conflict_resolvers/ISimpleNotebookSyncConflictResolver.h
  conflict_resolvers/ISimpleNoteSyncConflictResolver.h
  conflict_resolvers/ISimpleSavedSearchSyncConflictResolver.h
  conflict_resolvers/ISimpleTagSyncConflictResolver.h
  conflict_resolvers/SimpleGenericSyncConflictResolver.h
  conflict_resolvers/SimpleNotebookSyncConflictResolver.cpp
  conflict_resolvers/SimpleNotebookSyncConflictResolver.h
  conflict_resolvers/SimpleNoteSyncConflictResolver.cpp
  conflict_resolvers/SimpleNoteSyncConflictResolver.h
  conflict_resolvers/SimpleSavedSearchSyncConflictResolver.cpp
  conflict_resolvers/SimpleSavedSearchSyncConflictResolver.h
  conflict_resolvers/SimpleSyncConflictResolver.cpp
  conflict_resolvers/SimpleSyncConflictResolver.h
  conflict_resolvers/SimpleTagSyncConflictResolver.cpp
  conflict_resolvers/SimpleTagSyncConflictResolver.h
  conflict_resolvers/Utils.cpp
  conflict_resolvers/Utils.h
  processors/DurableNotesProcessor.cpp
  processors/DurableNotesProcessor.h
  processors/IDurableNotesProcessor.h
  processors/DurableResourcesProcessor.cpp
  processors/DurableResourcesProcessor.h
  processors/IDurableResourcesProcessor.h
  processors/ILinkedNotebooksProcessor.h
  processors/INotebooksProcessor.h
  processors/INoteFullDataDownloader.h
  processors/INotesProcessor.h
  processors/IResourceFullDataDownloader.h
  processors/IResourcesProcessor.h
  processors/ISavedSearchesProcessor.h
  processors/ITagsProcessor.h
  processors/LinkedNotebooksProcessor.cpp
  processors/LinkedNotebooksProcessor.h
  processors/NotebooksProcessor.cpp
  processors/NotebooksProcessor.h
  processors/NoteFullDataDownloader.cpp
  processors/NoteFullDataDownloader.h
  processors/NotesProcessor.cpp
  processors/NotesProcessor.h
  processors/ResourceFullDataDownloader.cpp
  processors/ResourceFullDataDownloader.h
  processors/ResourcesProcessor.cpp
  processors/ResourcesProcessor.h
  processors/SavedSearchesProcessor.cpp
  processors/SavedSearchesProcessor.h
  processors/TagsProcessor.cpp
  processors/TagsProcessor.h
  processors/Utils.cpp
  processors/Utils.h
  sync_chunks/ISyncChunksDownloader.cpp
  sync_chunks/ISyncChunksDownloader.h
  sync_chunks/ISyncChunksProvider.h
  sync_chunks/ISyncChunksStorage.h
  sync_chunks/SyncChunksDownloader.cpp
  sync_chunks/SyncChunksDownloader.h
  sync_chunks/SyncChunksProvider.cpp
  sync_chunks/SyncChunksProvider.h
  sync_chunks/SyncChunksStorage.cpp
  sync_chunks/SyncChunksStorage.h
  sync_chunks/Utils.cpp
  sync_chunks/Utils.h
  types/AuthenticationInfo.cpp
  types/AuthenticationInfo.h
  types/AuthenticationInfoBuilder.cpp
  types/AuthenticationInfoBuilder.h
  types/DownloadNotesStatus.cpp
  types/DownloadNotesStatus.h
  types/DownloadResourcesStatus.cpp
  types/DownloadResourcesStatus.h
  types/ExceptionUtils.cpp
  types/ExceptionUtils.h
  types/Fwd.h
  types/SendStatus.cpp
  types/SendStatus.h
  types/SyncChunksDataCounters.cpp
  types/SyncChunksDataCounters.h
  types/SyncOptions.cpp
  types/SyncOptions.h
  types/SyncOptionsBuilder.cpp
  types/SyncOptionsBuilder.h
  types/SyncResult.cpp
  types/SyncResult.h
  types/SyncState.cpp
  types/SyncState.h
  types/SyncStateBuilder.cpp
  types/SyncStateBuilder.h
  types/serialization/Utils.cpp
  types/serialization/Utils.h
  types/serialization/json/SerializationUtils.cpp
  types/serialization/json/SerializationUtils.h)

target_link_libraries(${LIBRARY_NAME}
  PUBLIC
    ${LIBNAME}_private
    ${LIBNAME}_threading
    Qt${LIBQUENTIER_QT_VERSION}::Core)

if(GMOCK_FOUND AND GTEST_FOUND)
  add_subdirectory(tests)
endif()
