We still need the AxolotlKit model classes to migrate old sessions,
but we don't need any of the actual protocol support. This also
means we can drop HKDFKit.
Additionally, we do still use some utilities from AxolotlKit:
- AxolotlExceptions.h: NSException names, should eventually be
replaced by NSErrors everywhere
- NSData+keyVersionByte.h: prepend/remove public key type byte,
should eventually be replaced by strong types (ECPublicKey)
- SPKProtocolContext.h: defines the SPKProtocol{Read,Write}Context
marker protocols, should be replaced by direct use of
SDSAny{Read,Write}Transaction
219 lines
8.7 KiB
Ruby
219 lines
8.7 KiB
Ruby
platform :ios, '11.0'
|
|
plugin 'cocoapods-binary'
|
|
|
|
use_frameworks!
|
|
|
|
###
|
|
# OWS Pods
|
|
###
|
|
|
|
pod 'SwiftProtobuf', "1.7.0"
|
|
|
|
pod 'SignalCoreKit', git: 'https://github.com/signalapp/SignalCoreKit.git', testspecs: ["Tests"]
|
|
# pod 'SignalCoreKit', path: '../SignalCoreKit', testspecs: ["Tests"]
|
|
|
|
pod 'SignalClient', git: 'https://github.com/signalapp/libsignal-client.git', testspecs: ["Tests"]
|
|
# pod 'SignalClient', path: '../libsignal-client', testspecs: ["Tests"]
|
|
|
|
pod 'Curve25519Kit', git: 'ssh://git@github.com/signalapp/Curve25519Kit', testspecs: ["Tests"], branch: 'feature/SignalClient-adoption'
|
|
# pod 'Curve25519Kit', path: '../Curve25519Kit', testspecs: ["Tests"]
|
|
|
|
pod 'SignalMetadataKit', git: 'ssh://git@github.com/signalapp/SignalMetadataKit', testspecs: ["Tests"], branch: 'feature/SignalClient-adoption'
|
|
# pod 'SignalMetadataKit', path: '../SignalMetadataKit', testspecs: ["Tests"]
|
|
|
|
pod 'blurhash', git: 'https://github.com/signalapp/blurhash', branch: 'signal-master'
|
|
# pod 'blurhash', path: '../blurhash'
|
|
|
|
pod 'SignalServiceKit', path: '.', testspecs: ["Tests"]
|
|
|
|
pod 'ZKGroup', git: 'https://github.com/signalapp/signal-zkgroup-swift', testspecs: ["Tests"]
|
|
|
|
pod 'SignalArgon2', git: 'https://github.com/signalapp/Argon2.git', submodules: true, testspecs: ["Tests"]
|
|
# pod 'SignalArgon2', path: '../Argon2', testspecs: ["Tests"]
|
|
|
|
pod 'PromiseKit'
|
|
|
|
# pod 'GRDB.swift/SQLCipher', path: '../GRDB.swift'
|
|
pod 'GRDB.swift/SQLCipher'
|
|
|
|
pod 'SQLCipher', ">= 4.0.1"
|
|
|
|
###
|
|
# forked third party pods
|
|
###
|
|
|
|
# Forked for performance optimizations that are not likely to be upstreamed as they are specific
|
|
# to our limited use of Mantle
|
|
pod 'Mantle', git: 'https://github.com/signalapp/Mantle', branch: 'signal-master'
|
|
# pod 'Mantle', path: '../Mantle'
|
|
|
|
# Forked for compatibily with the ShareExtension, changes have an open PR, but have not been merged.
|
|
pod 'YapDatabase/SQLCipher', :git => 'https://github.com/signalapp/YapDatabase.git', branch: 'signal-release'
|
|
# pod 'YapDatabase/SQLCipher', path: '../YapDatabase'
|
|
|
|
# Forked to incorporate our self-built binary artifact.
|
|
pod 'GRKOpenSSLFramework', git: 'https://github.com/signalapp/GRKOpenSSLFramework', branch: 'mkirk/1.0.2t'
|
|
#pod 'GRKOpenSSLFramework', path: '../GRKOpenSSLFramework'
|
|
|
|
pod 'Starscream', git: 'https://github.com/signalapp/Starscream.git', branch: 'signal-release'
|
|
# pod 'Starscream', path: '../Starscream'
|
|
|
|
pod 'libPhoneNumber-iOS', git: 'https://github.com/signalapp/libPhoneNumber-iOS', branch: 'signal-master'
|
|
# pod 'libPhoneNumber-iOS', path: '../libPhoneNumber-iOS'
|
|
|
|
pod 'YYImage', git: 'https://github.com/signalapp/YYImage', :inhibit_warnings => true
|
|
# pod 'YYImage', path: '../YYImage'
|
|
|
|
###
|
|
# third party pods
|
|
####
|
|
|
|
pod 'AFNetworking/NSURLSession', inhibit_warnings: true
|
|
pod 'PureLayout', :inhibit_warnings => true
|
|
pod 'Reachability', :inhibit_warnings => true
|
|
pod 'lottie-ios', :inhibit_warnings => true
|
|
pod 'BonMot', inhibit_warnings: true
|
|
|
|
# For catalyst we need to be on master until 3.6.7 or later is released
|
|
pod 'ZXingObjC', git: 'https://github.com/zxingify/zxingify-objc.git', inhibit_warnings: true, binary: true
|
|
|
|
target 'Signal' do
|
|
project 'Signal.xcodeproj', 'Debug' => :debug, 'Release' => :release
|
|
|
|
# Pods only available inside the main Signal app
|
|
pod 'SSZipArchive', :inhibit_warnings => true
|
|
pod 'SignalRingRTC', path: 'ThirdParty/SignalRingRTC.podspec', inhibit_warnings: true
|
|
|
|
target 'SignalTests' do
|
|
inherit! :search_paths
|
|
end
|
|
|
|
target 'SignalPerformanceTests' do
|
|
inherit! :search_paths
|
|
end
|
|
end
|
|
|
|
# These extensions inherit all of the pods
|
|
target 'SignalShareExtension'
|
|
target 'SignalMessaging'
|
|
target 'NotificationServiceExtension'
|
|
|
|
post_install do |installer|
|
|
enable_strip(installer)
|
|
enable_extension_support_for_purelayout(installer)
|
|
configure_warning_flags(installer)
|
|
configure_testable_build(installer)
|
|
disable_bitcode(installer)
|
|
disable_non_development_pod_warnings(installer)
|
|
copy_acknowledgements
|
|
end
|
|
|
|
# Works around CocoaPods behavior designed for static libraries.
|
|
# See https://github.com/CocoaPods/CocoaPods/issues/10277
|
|
def enable_strip(installer)
|
|
installer.pods_project.build_configurations.each do |build_configuration|
|
|
build_configuration.build_settings['STRIP_INSTALLED_PRODUCT'] = 'YES'
|
|
end
|
|
end
|
|
|
|
# PureLayout by default makes use of UIApplication, and must be configured to be built for an extension.
|
|
def enable_extension_support_for_purelayout(installer)
|
|
installer.pods_project.targets.each do |target|
|
|
if target.name.end_with? "PureLayout"
|
|
target.build_configurations.each do |build_configuration|
|
|
build_configuration.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= '$(inherited)'
|
|
build_configuration.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << ' PURELAYOUT_APP_EXTENSIONS=1'
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
# We want some warning to be treated as errors.
|
|
#
|
|
# NOTE: We have to manually keep this list in sync with what's in our
|
|
# Signal.xcodeproj config in Xcode go to:
|
|
# Signal Project > Build Settings > Other Warning Flags
|
|
def configure_warning_flags(installer)
|
|
installer.pods_project.targets.each do |target|
|
|
target.build_configurations.each do |build_configuration|
|
|
build_configuration.build_settings['WARNING_CFLAGS'] = ['$(inherited)',
|
|
'-Werror=incompatible-pointer-types',
|
|
'-Werror=protocol',
|
|
'-Werror=incomplete-implementation',
|
|
'-Werror=objc-literal-conversion',
|
|
'-Werror=objc-property-synthesis',
|
|
'-Werror=objc-protocol-property-synthesis']
|
|
end
|
|
end
|
|
end
|
|
|
|
def configure_testable_build(installer)
|
|
installer.pods_project.targets.each do |target|
|
|
target.build_configurations.each do |build_configuration|
|
|
next unless ["Testable Release", "Debug", "Profiling"].include?(build_configuration.name)
|
|
build_configuration.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
|
|
|
|
next unless ["Testable Release", "Debug"].include?(build_configuration.name)
|
|
build_configuration.build_settings['OTHER_CFLAGS'] ||= '$(inherited)'
|
|
build_configuration.build_settings['OTHER_CFLAGS'] << ' -DTESTABLE_BUILD'
|
|
|
|
build_configuration.build_settings['OTHER_SWIFT_FLAGS'] ||= '$(inherited)'
|
|
build_configuration.build_settings['OTHER_SWIFT_FLAGS'] << ' -DTESTABLE_BUILD'
|
|
if target.name.end_with? "PureLayout"
|
|
# Avoid overwriting the PURELAYOUT_APP_EXTENSIONS.
|
|
else
|
|
build_configuration.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= '$(inherited)'
|
|
build_configuration.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << ' TESTABLE_BUILD=1'
|
|
end
|
|
build_configuration.build_settings['ENABLE_TESTABILITY'] = 'YES'
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
def disable_bitcode(installer)
|
|
installer.pods_project.targets.each do |target|
|
|
target.build_configurations.each do |config|
|
|
config.build_settings['ENABLE_BITCODE'] = 'NO'
|
|
end
|
|
end
|
|
end
|
|
|
|
# Disable warnings on any Pod not currently being modified
|
|
def disable_non_development_pod_warnings(installer)
|
|
non_development_targets = installer.pod_targets.select do |target|
|
|
!installer.development_pod_targets.include?(target)
|
|
end
|
|
|
|
# ZKGroup is security sensitive and is going to be around for the foreseeable
|
|
# future. Let's always warn for it to keep an eye on the warnings
|
|
# (and also fix the warnings)
|
|
always_warn_names = ['ZKGroup']
|
|
|
|
installer.pods_project.targets.each do |target|
|
|
target.build_configurations.each do |build_configuration|
|
|
# Only suppress warnings for the debug configuration
|
|
# If we're building for release, continue to display warnings for all projects
|
|
next if build_configuration.name != "Debug"
|
|
|
|
next unless non_development_targets.any? do |non_dev_target|
|
|
target.name.include?(non_dev_target.name)
|
|
end
|
|
|
|
next if always_warn_names.any? do |warnable_target_name|
|
|
target.name.include?(warnable_target_name)
|
|
end
|
|
|
|
build_configuration.build_settings['GCC_WARN_INHIBIT_ALL_WARNINGS'] = 'YES'
|
|
build_configuration.build_settings['OTHER_SWIFT_FLAGS'] ||= '$(inherited)'
|
|
build_configuration.build_settings['OTHER_SWIFT_FLAGS'] << ' -suppress-warnings'
|
|
end
|
|
end
|
|
end
|
|
|
|
def copy_acknowledgements
|
|
raw_acknowledgements = File.read('Pods/Target Support Files/Pods-Signal/Pods-Signal-Acknowledgements.plist')
|
|
formatted_acknowledgements = raw_acknowledgements.gsub(/(?<!>)(?<!\n)\n( *)(?![ \*])(?![ -])(?!\n)(?!<)/, ' ')
|
|
File.open('Signal/Settings.bundle/Acknowledgements.plist', "w") { |file| file.puts formatted_acknowledgements }
|
|
end
|