load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", ) load("@bazel_skylib//lib:selects.bzl", "selects") load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application", "ios_extension", "ios_framework", "ios_unit_test", "ios_ui_test", ) load("@build_bazel_rules_apple//apple:resources.bzl", "swift_intent_library", ) load("@build_bazel_rules_apple//apple:watchos.bzl", "watchos_application", "watchos_extension", ) load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library", ) load( "@rules_xcodeproj//xcodeproj:defs.bzl", "top_level_target", "top_level_targets", "xcodeproj", "xcode_provisioning_profile", ) load("@build_bazel_rules_apple//apple:apple.bzl", "local_provisioning_profile") load("//build-system/bazel-utils:plist_fragment.bzl", "plist_fragment", ) load( "@build_configuration//:variables.bzl", "telegram_bazel_path", "telegram_use_xcode_managed_codesigning", "telegram_bundle_id", "telegram_aps_environment", "telegram_team_id", "telegram_enable_icloud", "telegram_enable_siri", "telegram_enable_watch", ) load("@build_bazel_rules_apple//apple:resources.bzl", "swift_intent_library", ) load("//build-system/bazel-utils:spm.bzl", "generate_spm", ) config_setting( name = "debug", values = { "compilation_mode": "dbg", }, ) bool_flag( name = "disableExtensions", build_setting_default = False, visibility = ["//visibility:public"], ) bool_flag( name = "disableProvisioningProfiles", build_setting_default = False, visibility = ["//visibility:public"], ) bool_flag( name = "projectIncludeRelease", build_setting_default = False, visibility = ["//visibility:public"], ) config_setting( name = "disableExtensionsSetting", flag_values = { ":disableExtensions": "True", }, ) config_setting( name = "disableProvisioningProfilesSetting", flag_values = { ":disableProvisioningProfiles": "True", }, ) config_setting( name = "projectIncludeReleaseSetting", flag_values = { ":projectIncludeRelease": "True", }, ) bool_flag( name = "disableStripping", build_setting_default = False, visibility = ["//visibility:public"], ) config_setting( name = "disableStrippingSetting", flag_values = { ":disableStripping": "True", }, ) genrule( name = "empty", outs = ["empty.swift"], cmd = "touch $(OUTS)", ) genrule( name = "GeneratedPresentationStrings", srcs = [ "//build-system:GenerateStrings/GenerateStrings.py", "Telegram-iOS/en.lproj/Localizable.strings", ], cmd = ''' python3 $(location //build-system:GenerateStrings/GenerateStrings.py) \\ --source=$(location Telegram-iOS/en.lproj/Localizable.strings) \\ --outImplementation=$(location GeneratedPresentationStrings/Sources/PresentationStrings.m) \\ --outHeader=$(location GeneratedPresentationStrings/PublicHeaders/PresentationStrings/PresentationStrings.h) \\ --outData=$(location GeneratedPresentationStrings/Resources/PresentationStrings.data) \\ ''', outs = [ "GeneratedPresentationStrings/PublicHeaders/PresentationStrings/PresentationStrings.h", "GeneratedPresentationStrings/Sources/PresentationStrings.m", "GeneratedPresentationStrings/Resources/PresentationStrings.data", ], # MARK: Swiftgram visibility = [ "//visibility:public", ], ) minimum_os_version = "12.0" minimum_watchos_version="7.0" notificationServiceExtensionVersion = "v1" empty_languages = [ "ar", "be", "ca", "de", "es", "fa", "fr", "id", "it", "ko", "ms", "nl", "pl", "pt", "ru", "tr", "uk", "uz", ] [ genrule( name = "Localizable_{}.strings".format(language), outs = ["{}.lproj/Localizable.strings".format(language)], cmd = "touch $(OUTS)", ) for language in empty_languages ] objc_library( name = "PresentationStrings", enable_modules = True, module_name = "PresentationStrings", srcs = [ "GeneratedPresentationStrings/Sources/PresentationStrings.m", ], hdrs = [ "GeneratedPresentationStrings/PublicHeaders/PresentationStrings/PresentationStrings.h", ], includes = [ "GeneratedPresentationStrings/PublicHeaders", ], sdk_frameworks = [ "Foundation", ], deps = [ "//submodules/NumberPluralizationForm:NumberPluralizationForm", "//submodules/AppBundle:AppBundle", ], visibility = [ "//visibility:public", ], ) swift_library( name = "_LocalDebugOptions", srcs = [":empty"], copts = [ "-Xfrontend", "-serialize-debugging-options", ], deps = [ "//submodules/AsyncDisplayKit:AsyncDisplayKit", "//submodules/AppBundle:AppBundle", "//submodules/ObjCRuntimeUtils:ObjCRuntimeUtils", "//submodules/UIKitRuntimeUtils:UIKitRuntimeUtils", "//submodules/Crc32:Crc32", "//submodules/MurMurHash32:MurMurHash32", "//submodules/StringTransliteration:StringTransliteration", "//submodules/sqlcipher:sqlcipher", "//submodules/NumberPluralizationForm:NumberPluralizationForm", "//submodules/EncryptionProvider:EncryptionProvider", "//submodules/MtProtoKit:MtProtoKit", ], module_name = "_LocalDebugOptions", tags = ["no-remote"], visibility = ["//visibility:public"], ) debug_deps = select({ ":debug": [":_LocalDebugOptions"], "//conditions:default": [], }) selects.config_setting_group( name = "resolvedDisableStrippingSetting", match_any = [":debug", ":disableStrippingSetting"], ) strip_framework = select({ ":resolvedDisableStrippingSetting": None, "//conditions:default": ":StripFramework", }) filegroup( name = "AppResources", srcs = glob([ "Telegram-iOS/Resources/**/*", ], exclude = ["Telegram-iOS/Resources/**/.*"]), ) filegroup( name = "AppStringResources", srcs = [ "Telegram-iOS/en.lproj/Localizable.strings", "//Swiftgram/SGStrings:SGLocalizableStrings", ] + [ "{}.lproj/Localizable.strings".format(language) for language in empty_languages ], # MARK: Swiftgram visibility = ["//visibility:public",], ) filegroup( name = "WatchAppStringResources", srcs = glob([ "Telegram-iOS/*.lproj/Localizable.strings", ], exclude = ["Telegram-iOS/*.lproj/**/.*"]) + ["//Swiftgram/SGStrings:SGLocalizableStrings"], ) filegroup( name = "AppIntentVocabularyResources", srcs = glob([ "Telegram-iOS/*.lproj/AppIntentVocabulary.plist", ], exclude = ["Telegram-iOS/*.lproj/**/.*"]), ) filegroup( name = "InfoPlistStringResources", srcs = glob([ "Telegram-iOS/*.lproj/InfoPlist.strings", ], exclude = ["Telegram-iOS/*.lproj/**/.*"]), ) filegroup( name = "Icons", srcs = glob([ "Telegram-iOS/Icons.xcassets/**/*", ], exclude = ["Telegram-iOS/Icons.xcassets/**/.*"]), ) filegroup( name = "AppIcons", srcs = glob([ "Telegram-iOS/AppIcons.xcassets/**/*", ], exclude = ["Telegram-iOS/AppIcons.xcassets/**/.*"]), ) filegroup( name = "DefaultAppIcon", srcs = glob([ "Telegram-iOS/DefaultAppIcon.xcassets/**/*", ], exclude = ["Telegram-iOS/DefaultAppIcon.xcassets/**/.*"]), ) filegroup( name = "BlackAppIcon", srcs = glob([ "Telegram-iOS/BlackIcon.xcassets/**/*", ], exclude = ["Telegram-iOS/BlackIcon.xcassets/**/.*"]), ) filegroup( name = "DefaultIcon", srcs = glob([ "Telegram-iOS/AppIcons.xcassets/BlueIcon.appiconset/*.png", ]), ) filegroup( name = "AdditionalIcons", srcs = glob([ "Telegram-iOS/*.png", ]), ) # MARK: Swiftgram alternative icons alternate_icon_folders = [ "SGDefault", "SGBlack", "SGLegacy", "SGInverted", "SGWhite", "SGNight", "SGSky", "SGTitanium", "SGNeon", "SGNeonBlue", "SGGlass", "SGSparkling", "SGBeta", "SGPro", "SGGold", "SGDucky", "SGDay" ] [ filegroup( name = "{}".format(name), srcs = glob([ "Telegram-iOS/{}.alticon/*.png".format(name), ]), ) for name in alternate_icon_folders ] filegroup( name = "LaunchScreen", srcs = glob([ "Telegram-iOS/Base.lproj/LaunchScreen.xib", ]), ) objc_library( name = "Main", srcs = [ "Telegram-iOS/main.m" ], ) SGRESOURCES = ["//Swiftgram/SGSettingsUI:SGUIAssets", "//Swiftgram/SGPayWall:SGPayWallAssets"] swift_library( name = "Lib", srcs = glob([ "Telegram-iOS/Application.swift", ]), data = SGRESOURCES + [ ":Icons", ":AppResources", ":AppIntentVocabularyResources", ":InfoPlistStringResources", "//submodules/LegacyComponents:LegacyComponentsResources", "//submodules/LegacyComponents:LegacyComponentsAssets", "//submodules/OverlayStatusController:OverlayStatusControllerResources", "//submodules/PasswordSetupUI:PasswordSetupUIResources", "//submodules/PasswordSetupUI:PasswordSetupUIAssets", "//submodules/PremiumUI:PremiumUIResources", "//submodules/DrawingUI:DrawingUIResources", "//submodules/TelegramUI:TelegramUIResources", "//submodules/TelegramUI:TelegramUIAssets", "//submodules/TelegramUI/Components/Calls/CallScreen:Assets", ":GeneratedPresentationStrings/Resources/PresentationStrings.data", ], deps = [ "//submodules/TelegramUI:TelegramUI", "//third-party/boringssl:crypto", ], ) plist_fragment( name = "BuildNumberInfoPlist", extension = "plist", template = """ CFBundleVersion {buildNumber} """ ) plist_fragment( name = "UrlTypesInfoPlist", extension = "plist", template = """ CFBundleURLTypes CFBundleTypeRole Viewer CFBundleURLName {telegram_bundle_id} CFBundleURLSchemes telegram CFBundleTypeRole Viewer CFBundleURLName {telegram_bundle_id}.compatibility CFBundleURLSchemes tg tonsite CFBundleTypeRole Viewer CFBundleURLName {telegram_bundle_id}.custom CFBundleURLSchemes sg """.format( telegram_bundle_id = telegram_bundle_id, ) ) official_apple_pay_merchants = [ "merchant.ph.telegra.Telegraph", "merchant.sberbank.ph.telegra.Telegraph", "merchant.sberbank.test.ph.telegra.Telegraph", "merchant.privatbank.test.telergramios", "merchant.privatbank.prod.telergram", "merchant.paymaster.test.telegramios", "merchant.paymaster.prod.telegramios", "merchant.smartglocal.prod.telegramios", "merchant.smartglocal.test.telegramios", "merchant.yoomoney.test.telegramios", "merchant.yoomoney.prod.telegramios", "merchant.org.telegram.Best2pay.test", "merchant.psbank.test.telegramios", "merchant.psbank.prod.telegramios", "merchant.org.telegram.billinenet.test", "merchant.org.telegram.billinenet.prod", "merchant.org.telegram.portmone.test", "merchant.org.telegram.portmone.prod", "merchant.org.telegram.ecommpay.test", ] official_bundle_ids = [ "ph.telegra.Telegraph", "org.telegram.Telegram-iOS", ] store_bundle_ids = [ "ph.telegra.Telegraph", ] apple_pay_merchants = official_apple_pay_merchants if telegram_bundle_id == "ph.telegra.Telegraph" else [] apple_pay_merchants_fragment = "" if apple_pay_merchants == [] else """ com.apple.developer.in-app-payments """ + "\n".join([ " {merchant_id}".format(merchant_id=merchant_id) for merchant_id in apple_pay_merchants ]) + "\n" + """ """ official_unrestricted_voip_fragment = """ com.apple.developer.pushkit.unrestricted-voip """ unrestricted_voip_fragment = official_unrestricted_voip_fragment if telegram_bundle_id in official_bundle_ids else "" official_carplay_fragment = """ com.apple.developer.carplay-messaging """ carplay_fragment = official_carplay_fragment if telegram_bundle_id in official_bundle_ids else "" icloud_fragment = "" if not telegram_enable_icloud else """ com.apple.developer.icloud-services CloudKit CloudDocuments com.apple.developer.icloud-container-identifiers iCloud.{telegram_bundle_id} com.apple.developer.ubiquity-kvstore-identifier {telegram_team_id}.* com.apple.developer.icloud-container-environment {telegram_icloud_environment} """.format( telegram_team_id=telegram_team_id, telegram_bundle_id=telegram_bundle_id, telegram_icloud_environment="Production" if telegram_aps_environment == "production" else "Development" ) associated_domains_fragment = "" if telegram_bundle_id not in official_bundle_ids else """ com.apple.developer.associated-domains applinks:telegram.me applinks:t.me applinks:*.t.me applinks:swiftgram.app """ siri_fragment = "" if not telegram_enable_siri else """ com.apple.developer.siri """ aps_fragment = "" if telegram_aps_environment == "" else """ aps-environment {telegram_aps_environment} """.format(telegram_aps_environment=telegram_aps_environment) app_groups_fragment = """ com.apple.security.application-groups group.{telegram_bundle_id} application-identifier {telegram_team_id}.{telegram_bundle_id} """.format( telegram_team_id=telegram_team_id, telegram_bundle_id=telegram_bundle_id ) official_communication_notifications_fragment = """ com.apple.developer.usernotifications.communication """ communication_notifications_fragment = official_communication_notifications_fragment # if telegram_bundle_id in official_bundle_ids else "" store_signin_fragment = """ com.apple.developer.applesignin Default """ signin_fragment = store_signin_fragment if telegram_bundle_id in store_bundle_ids else "" # content_analysis = """ # com.apple.developer.sensitivecontentanalysis.client # # analysis # # """ plist_fragment( name = "TelegramEntitlements", extension = "entitlements", template = "".join([ aps_fragment, app_groups_fragment, siri_fragment, associated_domains_fragment, icloud_fragment, apple_pay_merchants_fragment, unrestricted_voip_fragment, carplay_fragment, communication_notifications_fragment, signin_fragment, # content_analysis ]) ) filegroup( name = "TelegramWatchExtensionResources", srcs = glob([ "Watch/Extension/Resources/**/*", ], exclude = ["Watch/Extension/Resources/**/.*"]), ) filegroup( name = "TelegramWatchAppResources", srcs = glob([ "Watch/Extension/Resources/**/*.png", ], exclude = ["Watch/Extension/Resources/**/.*"]), ) filegroup( name = "TelegramWatchAppAssets", srcs = glob([ "Watch/App/Assets.xcassets/**/*", ], exclude = ["Watch/App/Assets.xcassets/**/.*"]), ) filegroup( name = "TelegramWatchAppInterface", srcs = glob([ "Watch/App/Base.lproj/Interface.storyboard", ]), ) objc_library( name = "TelegramWatchLib", srcs = glob([ "Watch/Extension/**/*.m", "Watch/SSignalKit/**/*.m", "Watch/Bridge/**/*.m", "Watch/WatchCommonWatch/**/*.m", "Watch/App/**/*.m", "Watch/Extension/**/*.h", "Watch/SSignalKit/**/*.h", "Watch/Bridge/**/*.h", "Watch/WatchCommonWatch/**/*.h", ]), copts = [ "-DTARGET_OS_WATCH=1", "-ITelegram/Watch", "-ITelegram/Watch/Extension", "-ITelegram/Watch/Bridge", "-ITelegram/Watch/App", ], sdk_frameworks = [ "WatchKit", "WatchConnectivity", "ClockKit", "UserNotifications", "CoreLocation", "CoreGraphics", ], ) plist_fragment( name = "VersionInfoPlist", extension = "plist", template = """ CFBundleShortVersionString {telegramVersion} """ ) plist_fragment( name = "RequiredDeviceCapabilitiesPlist", extension = "plist", template = """ UIRequiredDeviceCapabilities arm64 """ ) plist_fragment( name = "AppNameInfoPlist", extension = "plist", template = """ CFBundleDisplayName Swiftgram """ ) plist_fragment( name = "WatchAppCompanionInfoPlist", extension = "plist", template = """ WKCompanionAppBundleIdentifier {telegram_bundle_id} """.format( telegram_bundle_id = telegram_bundle_id, ) ) plist_fragment( name = "WatchAppInfoPlist", extension = "plist", template = """ CFBundleDevelopmentRegion en CFBundleIdentifier {telegram_bundle_id}.watchkitapp CFBundleName Swiftgram UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown CFBundlePackageType APPL WKApplication WKCompanionAppBundleIdentifier {telegram_bundle_id} PrincipalClass TGExtensionDelegate """.format( telegram_bundle_id = telegram_bundle_id, ) ) watchos_application( name = "TelegramWatchApp", bundle_id = "{telegram_bundle_id}.watchkitapp".format( telegram_bundle_id = telegram_bundle_id, ), bundle_name = "SwiftgramWatch", infoplists = [ ":WatchAppInfoPlist", ":VersionInfoPlist", ":BuildNumberInfoPlist", ":AppNameInfoPlist", ":WatchAppCompanionInfoPlist", ], minimum_os_version = minimum_watchos_version, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:WatchApp.mobileprovision", }), resources = [ ":TelegramWatchAppResources", ":TelegramWatchAppAssets", ":TelegramWatchExtensionResources", ], storyboards = [ ":TelegramWatchAppInterface", ], strings = [ ":WatchAppStringResources", ], deps = [ ":TelegramWatchLib", ], ) plist_fragment( name = "MtProtoKitInfoPlist", extension = "plist", template = """ CFBundleIdentifier {telegram_bundle_id}.MtProtoKit CFBundleDevelopmentRegion en CFBundleName MtProtoKit CFBundlePackageType FMWK """.format( telegram_bundle_id = telegram_bundle_id, ) ) ios_framework( name = "MtProtoKitFramework", bundle_id = "{telegram_bundle_id}.MtProtoKit".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":MtProtoKitInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ], minimum_os_version = minimum_os_version, extension_safe = True, ipa_post_processor = strip_framework, deps = [ "//submodules/MtProtoKit:MtProtoKit", ], ) plist_fragment( name = "SwiftSignalKitInfoPlist", extension = "plist", template = """ CFBundleIdentifier {telegram_bundle_id}.SwiftSignalKit CFBundleDevelopmentRegion en CFBundleName SwiftSignalKit CFBundlePackageType FMWK """.format( telegram_bundle_id = telegram_bundle_id, ) ) ios_framework( name = "SwiftSignalKitFramework", bundle_id = "{telegram_bundle_id}.SwiftSignalKit".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":SwiftSignalKitInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ], minimum_os_version = minimum_os_version, extension_safe = True, ipa_post_processor = strip_framework, deps = [ "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit", ], ) plist_fragment( name = "PostboxInfoPlist", extension = "plist", template = """ CFBundleIdentifier {telegram_bundle_id}.Postbox CFBundleDevelopmentRegion en CFBundleName Postbox CFBundlePackageType FMWK """.format( telegram_bundle_id = telegram_bundle_id, ) ) ios_framework( name = "PostboxFramework", bundle_id = "{telegram_bundle_id}.Postbox".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":PostboxInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ], frameworks = [ ":SwiftSignalKitFramework", ], minimum_os_version = minimum_os_version, extension_safe = True, ipa_post_processor = strip_framework, deps = [ "//submodules/Postbox:Postbox", ], ) plist_fragment( name = "TelegramApiInfoPlist", extension = "plist", template = """ CFBundleIdentifier {telegram_bundle_id}.TelegramApi CFBundleDevelopmentRegion en CFBundleName TelegramApi CFBundlePackageType FMWK """.format( telegram_bundle_id = telegram_bundle_id, ) ) plist_fragment( name = "TelegramCoreInfoPlist", extension = "plist", template = """ CFBundleIdentifier {telegram_bundle_id}.TelegramCore CFBundleDevelopmentRegion en CFBundleName TelegramCore CFBundlePackageType FMWK """.format( telegram_bundle_id = telegram_bundle_id, ) ) ios_framework( name = "TelegramCoreFramework", bundle_id = "{telegram_bundle_id}.TelegramCore".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":TelegramCoreInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ], frameworks = [ ":MtProtoKitFramework", ":SwiftSignalKitFramework", ":PostboxFramework", ], minimum_os_version = minimum_os_version, extension_safe = True, ipa_post_processor = strip_framework, deps = [ "//submodules/TelegramCore:TelegramCore", ], visibility = [ "//visibility:public", ] ) plist_fragment( name = "AsyncDisplayKitInfoPlist", extension = "plist", template = """ CFBundleIdentifier {telegram_bundle_id}.AsyncDisplayKit CFBundleDevelopmentRegion en CFBundleName AsyncDisplayKit CFBundlePackageType FMWK """.format( telegram_bundle_id = telegram_bundle_id, ) ) plist_fragment( name = "DisplayInfoPlist", extension = "plist", template = """ CFBundleIdentifier {telegram_bundle_id}.Display CFBundleDevelopmentRegion en CFBundleName Display CFBundlePackageType FMWK """.format( telegram_bundle_id = telegram_bundle_id, ) ) genrule( name = "StripFramework", cmd_bash = """ echo 'for f in $$1/*.framework; do binary_name=`echo $$(basename $$f) | sed -e "s/\\\\.framework//"`; strip -ST $$f/$$binary_name; done;' > $(location StripFramework.sh) # MARK: Swiftgram echo 'find "$$1" -type f \\( -perm +111 -o -name "*.dylib" \\) | while read -r bin; do \ if otool -L "$$bin" | grep -q "/usr/lib/swift/libswift_Concurrency.dylib"; then \ echo "Patching concurrency backport in: $$bin"; \ install_name_tool -change /usr/lib/swift/libswift_Concurrency.dylib @rpath/libswift_Concurrency.dylib "$$bin"; \ fi; \ done;' >> $(location StripFramework.sh) echo '' >> $(location StripFramework.sh) """, outs = [ "StripFramework.sh", ], executable = True, visibility = [ "//visibility:public", ] ) genrule( name = "GenerateAddAlternateIcons", srcs = [ "Telegram-iOS/AddAlternateIcons.sh", ], cmd_bash = """ cat $(location Telegram-iOS/AddAlternateIcons.sh) >> $(location AddAlternateIcons.sh) """, outs = [ "AddAlternateIcons.sh", ], executable = True, visibility = [ "//visibility:public", ] ) sh_binary( name = "AddAlternateIcons", data = [ "Telegram-iOS/AlternateIcons.plist", "Telegram-iOS/AlternateIcons-iPad.plist", ], srcs = [":GenerateAddAlternateIcons"], ) plist_fragment( name = "TelegramUIInfoPlist", extension = "plist", template = """ CFBundleIdentifier {telegram_bundle_id}.TelegramUI CFBundleDevelopmentRegion en CFBundleName TelegramUI CFBundlePackageType FMWK """.format( telegram_bundle_id = telegram_bundle_id, ) ) ios_framework( name = "TelegramUIFramework", bundle_id = "{telegram_bundle_id}.TelegramUI".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":TelegramUIInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ], frameworks = [ ":MtProtoKitFramework", ":SwiftSignalKitFramework", ":PostboxFramework", ":TelegramCoreFramework", ], minimum_os_version = minimum_os_version, extension_safe = True, ipa_post_processor = strip_framework, deps = [ "//submodules/TelegramUI:TelegramUI", ] + debug_deps, ) plist_fragment( name = "ShareInfoPlist", extension = "plist", template = """ CFBundleDevelopmentRegion en CFBundleIdentifier {telegram_bundle_id}.Share CFBundleName Swiftgram CFBundlePackageType XPC! NSExtension NSExtensionAttributes IntentsSupported INSendMessageIntent NSExtensionActivationRule SUBQUERY ( extensionItems, $extensionItem, SUBQUERY ( $extensionItem.attachments, $attachment, ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.file-url" || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie" || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.text" || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.audio" || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data" || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.vcard" || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.apple.pkpass" ).@count == $extensionItem.attachments.@count ).@count > 0 NSExtensionPointIdentifier com.apple.share-services NSExtensionPrincipalClass ShareRootController """.format( telegram_bundle_id = telegram_bundle_id, ) ) swift_library( name = "ShareExtensionLib", module_name = "ShareExtensionLib", srcs = glob([ "Share/**/*.swift", ]), copts = [ "-warnings-as-errors", ], deps = [ "//submodules/TelegramUI", "//submodules/TelegramUI/Components/ShareExtensionContext" ], ) ios_extension( name = "ShareExtension", bundle_id = "{telegram_bundle_id}.Share".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":ShareInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":BuildNumberInfoPlist", ":AppNameInfoPlist", ], minimum_os_version = minimum_os_version, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:Share.mobileprovision", }), deps = [":ShareExtensionLib"], frameworks = [ ":TelegramUIFramework" ], ) plist_fragment( name = "NotificationContentInfoPlist", extension = "plist", template = """ CFBundleDevelopmentRegion en CFBundleIdentifier {telegram_bundle_id}.NotificationContent CFBundleName Swiftgram CFBundlePackageType XPC! NSExtension NSExtensionAttributes UNNotificationExtensionCategory withReplyMedia withMuteMedia UNNotificationExtensionInitialContentSizeRatio 0.0001 NSExtensionPointIdentifier com.apple.usernotifications.content-extension NSExtensionPrincipalClass NotificationViewController """.format( telegram_bundle_id = telegram_bundle_id, ) ) objc_library( name = "NotificationContentExtensionLink", srcs = [ "NotificationContent/main.m", ], sdk_frameworks = [ "UserNotificationsUI", ], ) swift_library( name = "NotificationContentExtensionLib", module_name = "NotificationContentExtensionLib", srcs = glob([ "NotificationContent/**/*.swift", ]), copts = [ "-warnings-as-errors", ], deps = [ "//submodules/TelegramUI:TelegramUI", ":NotificationContentExtensionLink", ], ) '''genrule( name = "SetMinOsVersionNotificationContentExtension", cmd_bash = """ name=NotificationContentExtension.appex cat $(location PatchMinOSVersion.source.sh) | sed -e "s/<<>>/10\\.0/g" | sed -e "s/<<>>/$$name/g" > $(location SetMinOsVersionNotificationContentExtension.sh) """, srcs = [ "PatchMinOSVersion.source.sh", ], outs = [ "SetMinOsVersionNotificationContentExtension.sh", ], executable = True, visibility = [ "//visibility:public", ] )''' ios_extension( name = "NotificationContentExtension", bundle_id = "{telegram_bundle_id}.NotificationContent".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":NotificationContentInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":BuildNumberInfoPlist", ":AppNameInfoPlist", ], minimum_os_version = minimum_os_version, # maintain the same minimum OS version across extensions #ipa_post_processor = ":SetMinOsVersionNotificationContentExtension", provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:NotificationContent.mobileprovision", }), deps = [":NotificationContentExtensionLib"], frameworks = [ ":TelegramUIFramework" ], ) plist_fragment( name = "WidgetInfoPlist", extension = "plist", template = """ CFBundleDevelopmentRegion en CFBundleIdentifier {telegram_bundle_id}.Widget CFBundleName Swiftgram CFBundlePackageType XPC! NSExtension NSExtensionPointIdentifier com.apple.widgetkit-extension UIRequiredDeviceCapabilities arm64 """.format( telegram_bundle_id = telegram_bundle_id, ) ) filegroup( name = "WidgetAssets", srcs = glob(["WidgetKitWidget/WidgetImages.xcassets/**"]), visibility = ["//visibility:public"], ) swift_library( name = "WidgetExtensionLib", module_name = "WidgetExtensionLib", srcs = glob([ "WidgetKitWidget/**/*.swift", ]), copts = [ "-warnings-as-errors", ], data = [ ":WidgetAssets", ], deps = [ "//submodules/BuildConfig:BuildConfig", "//submodules/WidgetItems:WidgetItems_iOS14", "//submodules/WidgetItemsUtils:WidgetItemsUtils", "//submodules/AppLockState:AppLockState", "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit", "//submodules/Postbox:Postbox", "//submodules/TelegramCore:TelegramCore", "//submodules/OpenSSLEncryptionProvider:OpenSSLEncryptionProvider", "//Telegram:GeneratedSources", ], ) genrule( name = "SetMinOsVersionWidgetExtension", cmd_bash = """ name=WidgetExtension.appex cat $(location PatchMinOSVersion.source.sh) | sed -e "s/<<>>/14\\.0/g" | sed -e "s/<<>>/$$name/g" > $(location SetMinOsVersionWidgetExtension.sh) """, srcs = [ "PatchMinOSVersion.source.sh", ], outs = [ "SetMinOsVersionWidgetExtension.sh", ], executable = True, visibility = [ "//visibility:public", ] ) ios_extension( name = "WidgetExtension", bundle_id = "{telegram_bundle_id}.Widget".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":WidgetInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":BuildNumberInfoPlist", ":AppNameInfoPlist", ], minimum_os_version = minimum_os_version, # maintain the same minimum OS version across extensions ipa_post_processor = ":SetMinOsVersionWidgetExtension", #provides_main = True, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:Widget.mobileprovision", }), deps = [ ":WidgetExtensionLib", ], frameworks = [ ":SwiftSignalKitFramework", ":PostboxFramework", ":TelegramCoreFramework", ], visibility = [ "//visibility:public", ] ) plist_fragment( name = "IntentsInfoPlist", extension = "plist", template = """ CFBundleDevelopmentRegion en CFBundleIdentifier {telegram_bundle_id}.SiriIntents CFBundleName Swiftgram CFBundlePackageType XPC! NSExtension NSExtensionAttributes IntentsRestrictedWhileLocked IntentsRestrictedWhileProtectedDataUnavailable IntentsSupported INSendMessageIntent INStartAudioCallIntent INSearchForMessagesIntent INSetMessageAttributeIntent INSearchCallHistoryIntent SelectFriendsIntent SelectAvatarFriendsIntent NSExtensionPointIdentifier com.apple.intents-service NSExtensionPrincipalClass IntentHandler """.format( telegram_bundle_id = telegram_bundle_id, ) ) swift_intent_library( name = "GeneratedSources", src = "SiriIntents/en.lproj/Intents.intentdefinition", module_name = "GeneratedSources", visibility = ["//visibility:public"], ) filegroup( name = "IntentsAssets", srcs = glob(["SiriIntents/IntentsImages.xcassets/**"]), visibility = ["//visibility:public"], ) swift_library( name = "IntentsExtensionLib", module_name = "IntentsExtensionLib", srcs = glob([ "SiriIntents/**/*.swift", ]), copts = [ "-warnings-as-errors", ], data = glob([ "SiriIntents/*.lproj/Intents.intentdefinition" ]) + [ ":IntentsAssets" ], deps = [ "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit", "//submodules/Postbox:Postbox", "//submodules/TelegramApi:TelegramApi", "//submodules/TelegramCore:TelegramCore", "//submodules/BuildConfig:BuildConfig", "//submodules/OpenSSLEncryptionProvider:OpenSSLEncryptionProvider", "//submodules/AppLockState:AppLockState", "//Telegram:GeneratedSources", "//submodules/WidgetItems:WidgetItems", ], ) '''genrule( name = "SetMinOsVersionIntentsExtension", cmd_bash = """ name=IntentsExtension.appex cat $(location PatchMinOSVersion.source.sh) | sed -e "s/<<>>/10\\.0/g" | sed -e "s/<<>>/$$name/g" > $(location SetMinOsVersionIntentsExtension.sh) """, srcs = [ "PatchMinOSVersion.source.sh", ], outs = [ "SetMinOsVersionIntentsExtension.sh", ], executable = True, visibility = [ "//visibility:public", ] )''' ios_extension( name = "IntentsExtension", bundle_id = "{telegram_bundle_id}.SiriIntents".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":IntentsInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":BuildNumberInfoPlist", ":AppNameInfoPlist", ], minimum_os_version = minimum_os_version, # maintain the same minimum OS version across extensions #ipa_post_processor = ":SetMinOsVersionIntentsExtension", provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:Intents.mobileprovision", }), deps = [":IntentsExtensionLib"], frameworks = [ ":SwiftSignalKitFramework", ":PostboxFramework", ":TelegramCoreFramework", ], ) # MARK: Swiftgram # TODO(swiftgram): Localize CFBundleDisplayName plist_fragment( name = "SGActionRequestHandlerInfoPlist", extension = "plist", template = """ CFBundleDevelopmentRegion en CFBundleIdentifier {telegram_bundle_id}.SGActionRequestHandler CFBundleName Swiftgram CFBundleDisplayName Open in Swiftgram CFBundlePackageType XPC! NSExtension NSExtensionAttributes NSExtensionActivationRule NSExtensionActivationSupportsFileWithMaxCount 0 NSExtensionActivationSupportsImageWithMaxCount 0 NSExtensionActivationSupportsMovieWithMaxCount 0 NSExtensionActivationSupportsText NSExtensionActivationSupportsWebURLWithMaxCount 1 NSExtensionJavaScriptPreprocessingFile Action NSExtensionServiceAllowsFinderPreviewItem NSExtensionServiceAllowsTouchBarItem NSExtensionServiceFinderPreviewIconName NSActionTemplate NSExtensionServiceTouchBarBezelColorName TouchBarBezel NSExtensionServiceTouchBarIconName NSActionTemplate NSExtensionPointIdentifier com.apple.services NSExtensionPrincipalClass SGActionRequestHandler """.format( telegram_bundle_id = telegram_bundle_id, ) ) # TODO(swiftgram): Proper icon filegroup( name = "SGActionRequestHandlerAssets", srcs = glob(["SGActionRequestHandler/Media.xcassets/**"]), visibility = ["//visibility:public"], ) filegroup( name = "SGActionRequestHandlerScript", srcs = ["SGActionRequestHandler/Action.js"], visibility = ["//visibility:public"], ) swift_library( name = "SGActionRequestHandlerLib", module_name = "SGActionRequestHandlerLib", srcs = glob([ "SGActionRequestHandler/**/*.swift", ]), copts = [ "-warnings-as-errors", ], data = [ ":SGActionRequestHandlerAssets", ":SGActionRequestHandlerScript" ], deps = [ "//submodules/UrlEscaping:UrlEscaping" ], ) genrule( name = "SetMinOsVersionSGActionRequestHandler", cmd_bash = """ name=SGActionRequestHandler.appex cat $(location PatchMinOSVersion.source.sh) | sed -e "s/<<>>/14\\.0/g" | sed -e "s/<<>>/$$name/g" > $(location SetMinOsVersionSGActionRequestHandler.sh) """, srcs = [ "PatchMinOSVersion.source.sh", ], outs = [ "SetMinOsVersionSGActionRequestHandler.sh", ], executable = True, visibility = [ "//visibility:public", ] ) ios_extension( name = "SGActionRequestHandler", bundle_id = "{telegram_bundle_id}.SGActionRequestHandler".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":SGActionRequestHandlerInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":BuildNumberInfoPlist", # ":AppNameInfoPlist", ], minimum_os_version = minimum_os_version, # maintain the same minimum OS version across extensions ipa_post_processor = ":SetMinOsVersionSGActionRequestHandler", #provides_main = True, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:SGActionRequestHandler.mobileprovision", }), deps = [ ":SGActionRequestHandlerLib", ], frameworks = [ ], visibility = [ "//visibility:public", ] ) # plist_fragment( name = "BroadcastUploadInfoPlist", extension = "plist", template = """ CFBundleDevelopmentRegion en CFBundleIdentifier {telegram_bundle_id}.BroadcastUpload CFBundleName Swiftgram CFBundlePackageType XPC! NSExtension NSExtensionPointIdentifier com.apple.broadcast-services-upload NSExtensionPrincipalClass BroadcastUploadSampleHandler RPBroadcastProcessMode RPBroadcastProcessModeSampleBuffer """.format( telegram_bundle_id = telegram_bundle_id, ) ) swift_library( name = "BroadcastUploadExtensionLib", module_name = "BroadcastUploadExtensionLib", srcs = glob([ "BroadcastUpload/**/*.swift", ]), copts = [ "-warnings-as-errors", ], deps = [ "//submodules/TelegramUI:TelegramUI", "//submodules/TelegramVoip:TelegramVoip", "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit", "//submodules/BuildConfig:BuildConfig", "//submodules/WidgetItems:WidgetItems", "//submodules/BroadcastUploadHelpers:BroadcastUploadHelpers", ], ) '''genrule( name = "SetMinOsVersionBroadcastUploadExtension", cmd_bash = """ name=BroadcastUploadExtension.appex cat $(location PatchMinOSVersion.source.sh) | sed -e "s/<<>>/11\\.0/g" | sed -e "s/<<>>/$$name/g" > $(location SetMinOsVersionBroadcastUploadExtension.sh) """, srcs = [ "PatchMinOSVersion.source.sh", ], outs = [ "SetMinOsVersionBroadcastUploadExtension.sh", ], executable = True, visibility = [ "//visibility:public", ] )''' ios_extension( name = "BroadcastUploadExtension", bundle_id = "{telegram_bundle_id}.BroadcastUpload".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":BroadcastUploadInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":BuildNumberInfoPlist", ":AppNameInfoPlist", ], minimum_os_version = minimum_os_version, # maintain the same minimum OS version across extensions #ipa_post_processor = ":SetMinOsVersionBroadcastUploadExtension", provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:BroadcastUpload.mobileprovision", }), deps = [":BroadcastUploadExtensionLib"], frameworks = [ ":TelegramUIFramework", ":SwiftSignalKitFramework", ], ) plist_fragment( name = "NotificationServiceInfoPlist", extension = "plist", template = """ CFBundleDevelopmentRegion en CFBundleIdentifier {telegram_bundle_id}.NotificationService CFBundleName Swiftgram CFBundlePackageType XPC! NSExtension NSExtensionPointIdentifier com.apple.usernotifications.service NSExtensionPrincipalClass NotificationService NSExtensionAttributes IntentsSupported INSendMessageIntent """.format( telegram_bundle_id = telegram_bundle_id ) ) ios_extension( name = "NotificationServiceExtension" + notificationServiceExtensionVersion, bundle_id = "{telegram_bundle_id}.NotificationService".format( telegram_bundle_id = telegram_bundle_id, ), families = [ "iphone", "ipad", ], infoplists = [ ":NotificationServiceInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":BuildNumberInfoPlist", ":AppNameInfoPlist", ], minimum_os_version = minimum_os_version, # maintain the same minimum OS version across extensions provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:NotificationService.mobileprovision", }), deps = ["//Telegram/NotificationService:NotificationServiceExtensionLib"], frameworks = [ ":MtProtoKitFramework", ":SwiftSignalKitFramework", ":PostboxFramework", ":TelegramCoreFramework", ":TelegramUIFramework", ], ) plist_fragment( name = "TelegramInfoPlist", extension = "plist", template = """ BGTaskSchedulerPermittedIdentifiers {telegram_bundle_id}.refresh {telegram_bundle_id}.cleanup CFBundleAllowMixedLocalizations CFBundleDevelopmentRegion en CFBundleDisplayName Swiftgram CFBundleIdentifier {telegram_bundle_id} CFBundleName Swiftgram CFBundlePackageType APPL CFBundleSignature ???? ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes instagram comgooglemaps-x-callback foursquare here-location yandexmaps yandexnavi comgooglemaps youtube twitter vk waze googlechrome firefox touch-http yandexbrowser-open-url vimeo vine coub uber citymapper lyft opera-http firefox-focus ddgQuickLink moovit alook dgis microsoft-edge-http brave onionhttp ucbrowser dolphin instagram-stories yangomaps LSRequiresIPhoneOS NSAppTransportSecurity NSAllowsArbitraryLoads NSCameraUsageDescription We need this so that you can take and share photos and videos. NSContactsUsageDescription Swiftgram stores your contacts heavily encrypted in the Telegram cloud to let you connect with your friends across all your devices. NSFaceIDUsageDescription You can use Face ID to unlock the app. NSLocationAlwaysUsageDescription When you send your location to your friends, Swiftgram needs access to show them a map. You also need this to send locations from an Apple Watch. NSLocationWhenInUseUsageDescription When you send your location to your friends, Swiftgram needs access to show them a map. NSMicrophoneUsageDescription We need this so that you can record and share voice messages and videos with sound. NSMotionUsageDescription When you send your location to your friends, Swiftgram needs access to show them a map. NSPhotoLibraryAddUsageDescription We need this so that you can share photos and videos from your photo library. NSPhotoLibraryUsageDescription We need this so that you can share photos and videos from your photo library. NSSiriUsageDescription You can use Siri to send messages. NSSpeechRecognitionUsageDescription We need this to transcribe audio messages on your request. NSUserActivityTypes INSendMessageIntent RemindAboutChatIntent UIAppFonts SFCompactRounded-Semibold.otf AremacFS-Regular.otf AremacFS-Semibold.otf UIBackgroundModes audio fetch location remote-notification voip processing UIDeviceFamily 1 2 UIFileSharingEnabled UILaunchStoryboardName LaunchScreen UIRequiresPersistentWiFi UIStatusBarStyle UIStatusBarStyleDefault UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIViewControllerBasedStatusBarAppearance UIViewEdgeAntialiasing UIViewGroupOpacity UTImportedTypeDeclarations UTTypeConformsTo public.data UTTypeDescription Telegram iOS Color Theme File UTTypeIconFiles BlueIcon@3x.png UTTypeIdentifier org.telegram.Telegram-iOS.theme UTTypeTagSpecification public.filename-extension tgios-theme CADisableMinimumFrameDurationOnPhone UIApplicationSupportsIndirectInputEvents """.format( telegram_bundle_id = telegram_bundle_id, ) ) local_provisioning_profile( name = "Telegram_local_profile", profile_name = "iOS Team Provisioning Profile: {}".format(telegram_bundle_id), team_id = telegram_team_id, ) xcode_provisioning_profile( name = "Telegram_xcode_profile", managed_by_xcode = True, provisioning_profile = ":Telegram_local_profile", ) ios_application( name = "Swiftgram", bundle_id = "{telegram_bundle_id}".format( telegram_bundle_id = telegram_bundle_id, ), families = ["iphone", "ipad"], minimum_os_version = minimum_os_version, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": ":Telegram_xcode_profile" if telegram_use_xcode_managed_codesigning else "@build_configuration//provisioning:Telegram.mobileprovision", }), entitlements = ":TelegramEntitlements.entitlements", infoplists = [ ":TelegramInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":UrlTypesInfoPlist", ], alternate_icons = [ ":{}".format(name) for name in alternate_icon_folders ], ipa_post_processor = "//Swiftgram/FixConcurrencyBackport:CopyConcurrencyDylib", resources = [ ":LaunchScreen", ":DefaultAppIcon", #":AdditionalIcons", ], frameworks = [ ":MtProtoKitFramework", ":SwiftSignalKitFramework", ":PostboxFramework", ":TelegramCoreFramework", ":TelegramUIFramework", ], strings = [ ":AppStringResources", ], # MARK: Swiftgram settings_bundle = "//Swiftgram/SGSettingsBundle:SGSettingsBundle", extensions = select({ ":disableExtensionsSetting": [], "//conditions:default": [ # ":SGActionRequestHandler", # UX sucks https://t.me/swiftgramchat/7335 ":ShareExtension", ":NotificationContentExtension", ":NotificationServiceExtension" + notificationServiceExtensionVersion, ":IntentsExtension", ":WidgetExtension", ":BroadcastUploadExtension", ], }), watch_application = select({ ":disableExtensionsSetting": None, "//conditions:default": ":TelegramWatchApp", }) if telegram_enable_watch else None, deps = [ ":Main", ":Lib", ], visibility = ["//visibility:public"], ) xcodeproj( name = "Telegram_xcodeproj", build_mode = "bazel", bazel_path = telegram_bazel_path, project_name = "Swiftgram", tags = ["manual"], top_level_targets = top_level_targets( labels = [ ":Swiftgram", ], target_environments = ["device", "simulator"], ), xcode_configurations = { "Debug": { "//command_line_option:compilation_mode": "dbg", }, "Release": { "//command_line_option:compilation_mode": "opt", }, }, default_xcode_configuration = "Debug" ) # Temporary targets used to simplify build tests ios_application( name = "spm_build_app", bundle_id = "{telegram_bundle_id}".format( telegram_bundle_id = telegram_bundle_id, ), families = ["iphone", "ipad"], minimum_os_version = minimum_os_version, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:Telegram.mobileprovision", }), entitlements = ":TelegramEntitlements.entitlements", infoplists = [ ":TelegramInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":UrlTypesInfoPlist", ], deps = [ #"//submodules/MtProtoKit", #"//submodules/SSignalKit/SwiftSignalKit", #"//submodules/Postbox", #"//submodules/TelegramApi", #"//submodules/TelegramCore", #"//submodules/FFMpegBinding", "//submodules/Display", #"//third-party/webrtc", ], ) generate_spm( name = "spm_build_root", deps = [ ":spm_build_app", ] ) ios_application( name = "webrtc_build_test", bundle_id = "{telegram_bundle_id}".format( telegram_bundle_id = telegram_bundle_id, ), families = ["iphone", "ipad"], minimum_os_version = minimum_os_version, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:Telegram.mobileprovision", }), entitlements = ":TelegramEntitlements.entitlements", infoplists = [ ":TelegramInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":UrlTypesInfoPlist", ], deps = [ "//third-party/webrtc:webrtc", ], ) ios_application( name = "libvpx_build_test", bundle_id = "{telegram_bundle_id}".format( telegram_bundle_id = telegram_bundle_id, ), families = ["iphone", "ipad"], minimum_os_version = minimum_os_version, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:Telegram.mobileprovision", }), entitlements = ":TelegramEntitlements.entitlements", infoplists = [ ":TelegramInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":UrlTypesInfoPlist", ], deps = [ "//third-party/libvpx:vpx", ], ) swift_library( name = "TelegramCoreBuildTestLib", module_name = "TelegramCoreBuildTestLib", srcs = glob([ "Tests/TelegramCoreBuildTest/**/*.swift", ]), copts = [ "-warnings-as-errors", ], data = [ ":WidgetAssets", ], deps = [ "//submodules/BuildConfig:BuildConfig", "//submodules/WidgetItems:WidgetItems_iOS14", "//submodules/WidgetItemsUtils:WidgetItemsUtils", "//submodules/AppLockState:AppLockState", "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit", "//submodules/Postbox:Postbox", "//submodules/TelegramCore:TelegramCore", "//submodules/OpenSSLEncryptionProvider:OpenSSLEncryptionProvider", "//Telegram:GeneratedSources", ], ) ios_application( name = "TelegramCoreBuildTest", bundle_id = "{telegram_bundle_id}".format( telegram_bundle_id = telegram_bundle_id, ), families = ["iphone", "ipad"], minimum_os_version = minimum_os_version, provisioning_profile = select({ ":disableProvisioningProfilesSetting": None, "//conditions:default": "@build_configuration//provisioning:Telegram.mobileprovision", }), entitlements = ":TelegramEntitlements.entitlements", infoplists = [ ":TelegramInfoPlist", ":BuildNumberInfoPlist", ":VersionInfoPlist", ":RequiredDeviceCapabilitiesPlist", ":UrlTypesInfoPlist", ], frameworks = [ ":TelegramCoreFramework", ], deps = [":TelegramCoreBuildTestLib"], )