project(CloudKit)

remove_sdk_framework(CloudKit)

set(DYLIB_COMPAT_VERSION "1.0.0")
set(DYLIB_CURRENT_VERSION "867.0.0")

set(FRAMEWORK_VERSION "A")

generate_sdk_framework(CloudKit
    VERSION ${FRAMEWORK_VERSION}
    HEADER "include/CloudKit"
)

add_framework(CloudKit
    FAT
    CURRENT_VERSION
    VERSION ${FRAMEWORK_VERSION}

    SOURCES
        src/CloudKit.m
        src/CKFlowControl.m
        src/CKRecordZoneID.m
        src/CKRepairAssetsOperation.m
        src/CKRepairAssetsOperationInfo.m
        src/CKDPRecordFieldValueEncryptedValue.m
        src/CKUserNotificationUtilities.m
        src/CKUploadRequestPersistentStore.m
        src/CKMarkAssetBrokenOperation.m
        src/CKMarkAssetBrokenOperationInfo.m
        src/CKLogFacilityWrapper.m
        src/CKModifyRecordZonesOperation.m
        src/CKModifyRecordZonesOperationInfo.m
        src/CKDiscoverAllContactsOperation.m
        src/CKContainerSetupInfo.m
        src/CKContainerOptions.m
        src/CKAccountInfo.m
        src/CKContainerXPCProxy.m
        src/CKContainer.m
        src/CKSyncEngineBatch.m
        src/CKArchiveRecordsOperation.m
        src/CKArchiveRecordsOperationInfo.m
        src/CKQuery.m
        src/CKNotificationListener.m
        src/CKSubscriptionInfo.m
        src/CKRepairZonePCSOperationInfo.m
        src/CKRepairZonePCSOperation.m
        src/CKDPRecordReference.m
        src/CKException.m
        src/CKSQLitePool.m
        src/CKAutoBugCaptureMetadata.m
        src/CKDCancelToken.m
        src/CKFetchRecordZonesOperation.m
        src/CKFetchRecordZonesOperationInfo.m
        src/CKScheduler.m
        src/CKDiscoverAllUserIdentitiesOperation.m
        src/CKZonePCSDiagnosticInformation.m
        src/CKPCSDiagnosticInformation.m
        src/CKFetchShareMetadataOperation.m
        src/CKFetchShareMetadataOperationInfo.m
        src/CKSyncingClientInfo.m
        src/CKSyncRequestOperation.m
        src/CKModifyWebSharingOperation.m
        src/CKModifyWebSharingOperationInfo.m
        src/CKContainerID.m
        src/CKLegacyPredicateValidator.m
        src/CKSQLite.m
        src/CKSQLiteError.m
        src/CKAccountOverrideInfo.m
        src/CKUserIdentity.m
        src/CKSyncEngine.m
        src/CKFetchDatabaseChangesOperation.m
        src/CKFetchDatabaseChangesOperationInfo.m
        src/CKFetchDatabaseChangesOperationResult.m
        src/CKOperationFlowControlInfo.m
        src/CKOperationFlowControlManager.m
        src/CKPackageDB.m
        src/CKPackageSection.m
        src/CKDPRecordZoneIdentifier.m
        src/CKApplicationPermissionGroup.m
        src/CKUploadRequestManager.m
        src/CKUploadRequestManagerInternals.m
        src/CKUploadRequestManagerResponseActionThrottlerMetadata.m
        src/CKUploadRequestManagerResponseActionThrottler.m
        src/CKMarkNotificationsReadOperation.m
        src/CKMarkNotificationsReadOperationInfo.m
        src/CKFetchArchivedRecordsOperation.m
        src/CKFetchArchivedRecordsOptions.m
        src/CKFetchArchivedRecordsOperationInfo.m
        src/CKDPStreamingAssetFooter.m
        src/CKRecordValueStore.m
        src/CKEncryptedRecordValueStore.m
        src/CKRecord.m
        src/CKContactsSupport.m
        src/CKFileOpenInfo.m
        src/CKFileOpenResult.m
        src/CKFileMetadata.m
        src/CKAssetTransferOptions.m
        src/CKAssetReuploadExpectedProperties.m
        src/CKAssetCopyInfo.m
        src/CKAssetRereferenceInfo.m
        src/CKAssetReference.m
        src/CKAsset.m
        src/CKSchedulerActivity.m
        src/CKDiscretionaryOptions.m
        src/CKDPRecordIdentifier.m
        src/CKUserIdentityLookupInfo.m
        src/CKDeviceToDeviceShareInvitationToken.m
        src/CKShare.m
        src/CKBehaviorOptions.m
        src/CKPlaceholderOperation.m
        src/CKOperation.m
        src/CKOperationConfiguration.m
        src/CKOperationInfo.m
        src/CKOperationResult.m
        src/CKOperationMMCSRequestOptions.m
        src/CKDatabaseOperation.m
        src/CKDatabaseOperationInfo.m
        src/CKObjCClass.m
        src/CKAssetRepairScheduler.m
        src/CKRequestAssetOperation.m
        src/CKQueryOperation.m
        src/CKQueryOperationInfo.m
        src/CKQueryOperationResult.m
        src/CKQueryCursor.m
        src/CKUploadRequestManagerStateMachine.m
        src/CKShareParticipant.m
        src/CKDiscoveredUserInfo.m
        src/CKRecordGraphNode.m
        src/CKRecordGraph.m
        src/CKFetchNotificationChangesOperation.m
        src/CKFetchNotificationChangesOperationInfo.m
        src/CKFetchNotificationChangesOperationResult.m
        src/CKFetchWebAuthTokenOperation.m
        src/CKFetchWebAuthTokenOperationResult.m
        src/CKFetchWebAuthTokenOperationInfo.m
        src/CKFetchRecordVersionsOperation.m
        src/CKFetchRecordVersionsOperationInfo.m
        src/CKInitiateParticipantVettingOperation.m
        src/CKInitiateParticipantVettingOperationInfo.m
        src/CKStreamingAssetAppendContext.m
        src/CKDPDate.m
        src/CKAggregateZonePCSOperation.m
        src/CKAggregateZonePCSOperationInfo.m
        src/CKMetric.m
        src/CKOperationMetrics.m
        src/CKPackageItem.m
        src/CKFetchRecordChangesOperation.m
        src/CKFetchRecordChangesOperationResult.m
        src/CKNotificationID.m
        src/CKNotification.m
        src/CKQueryNotification.m
        src/CKRecordZoneNotification.m
        src/CKDatabaseNotification.m
        src/CKDatabase.m
        src/CKAcceptSharesOperation.m
        src/CKAcceptSharesOperationInfo.m
        src/CKReference.m
        src/CKFetchShareParticipantKeyOperation.m
        src/CKFetchShareParticipantKeyOperationInfo.m
        src/CKAPSMachServiceConnectionKey.m
        src/CKAPSMachServiceConnectionDelegate.m
        src/CKOperationGroup.m
        src/CKOperationGroupSystemImposedInfoConfiguration.m
        src/CKOperationGroupSystemImposedInfo.m
        src/CKPublicKey.m
        src/CKDPLocationCoordinate.m
        src/CKDPIdentifier.m
        src/CKSyncEngineFetchChangesOperation.m
        src/CKEncryptedData.m
        src/CKEncryptedString.m
        src/CKEncryptedLongLong.m
        src/CKEncryptedDouble.m
        src/CKEncryptedDate.m
        src/CKEncryptedReference.m
        src/CKEncryptedLocation.m
        src/CKEncryptedStringArray.m
        src/CKEncryptedDoubleArray.m
        src/CKEncryptedLongLongArray.m
        src/CKEncryptedDateArray.m
        src/CKEncryptedLocationArray.m
        src/CKEncryptedEmptyArray.m
        src/CKSQLiteStatementEnumerator.m
        src/CKSyncEngineModifyRecordBatchesOperation.m
        src/CKObjCProperty.m
        src/CKQuerySubscription.m
        src/CKRecordZoneSubscription.m
        src/CKDatabaseSubscription.m
        src/CKSubscription.m
        src/CKNotificationInfo.m
        src/CKModifySubscriptionsOperation.m
        src/CKModifySubscriptionsOperationInfo.m
        src/CKFetchRecordZoneChangesOperation.m
        src/CKFetchRecordZoneChangesOptions.m
        src/CKFetchRecordZoneChangesConfiguration.m
        src/CKFetchRecordZoneChangesOperationInfo.m
        src/CKModifyRecordsOperation.m
        src/CKModifyRecordsOperationInfo.m
        src/CKAssetDownloadPreauthorization.m
        src/CKSignatureGenerator.m
        src/CKSQLiteStatement.m
        src/CKAssetRepairOperationUtilities.m
        src/CKUploadRequestConfiguration.m
        src/CKPublishAssetsOperation.m
        src/CKPublishAssetsOperationInfo.m
        src/CKCompleteParticipantVettingOperation.m
        src/CKCompleteParticipantVettingOperationInfo.m
        src/CKFetchSubscriptionsOperation.m
        src/CKFetchSubscriptionsOperationInfo.m
        src/CKLocationSortDescriptor.m
        src/CKFetchRecordsAssetInfo.m
        src/CKFetchRecordsOperation.m
        src/CKFetchRecordsOperationInfo.m
        src/CKPredicateValidatorInstance.m
        src/CKRecursivePredicateValidator.m
        src/CKAnyPredicateValidator.m
        src/CKAllPredicateValidator.m
        src/CKCompoundTypePredicateValidator.m
        src/CKTruePredicateValidator.m
        src/CKCompoundSubpredicateValidator.m
        src/CKFlipFlopPredicateValidator.m
        src/CKComparisonPredicateValidator.m
        src/CKComparisonOperatorValidator.m
        src/CKComparisonModifierValidator.m
        src/CKComparisonOptionsValidator.m
        src/CKConstantValueExpressionValidator.m
        src/CKKeyPathExpressionValidator.m
        src/CKAggregateExpressionValidator.m
        src/CKFunctionExpressionValidator.m
        src/CKEvaluatedObjectExpressionValidator.m
        src/CKKindOfClassValidator.m
        src/CKKindOfCollectionClassValidator.m
        src/CKStringValueValidator.m
        src/CKCustomBlockValidator.m
        src/CKTrueValidator.m
        src/CKNilValidator.m
        src/CKDeclarativePredicateValidator.m
        src/CKRequestInfo.m
        src/CKBlockingAsyncQueue.m
        src/CKCodeFunctionInvokeOperation.m
        src/CKCodeFunctionInvokeOperationInfo.m
        src/CKModifyRecordAccessOperation.m
        src/CKModifyRecordAccessOperationInfo.m
        src/CKShareMetadata.m
        src/CKDiscoverUserInfosOperation.m
        src/CKPackageDBDelegate.m
        src/CKPackage.m
        src/CKArchivedAnchoredPackage.m
        src/CKObjCType.m
        src/CKModifyBadgeOperation.m
        src/CKModifyBadgeOperationInfo.m
        src/CKUploadRequestMetadata.m
        src/CKAssetUploadRequestMetadata.m
        src/CKPackageUploadRequestMetadata.m
        src/CKPredicateValidator.m
        src/CKPrettyError.m
        src/CKInternalError.m
        src/CKSyncEngineMetadata.m
        src/CKSyncEngineRecordModification.m
        src/CKRecordID.m
        src/CKRecordZone.m
        src/CKStreamingAsset.m
        src/CKFetchShareParticipantsOperation.m
        src/CKFetchShareParticipantsOperationInfo.m
        src/CKFetchUserQuotaOperation.m
        src/CKFetchUserQuotaOperationResult.m
        src/CKFetchWhitelistedBundleIDsOperation.m
        src/CKFetchWhitelistedBundleIDsOperationResult.m
        src/CKServerChangeToken.m
        src/CKEventMetric.m
        src/CKEventOperationInfo.m
        src/CKEventOperationGroupInfo.m
        src/CKEventMetricInfo.m
        src/CKOperationCallbackManager.m
        src/CKObject.m
        src/CKDiscoverUserIdentitiesOperation.m
        src/CKDiscoverUserIdentitiesOperationInfo.m

    DEPENDENCIES
        system
        objc
        Foundation
)
