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 = ":AddAlternateIcons",
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"],
)