166 lines
5.2 KiB
Ruby
166 lines
5.2 KiB
Ruby
# Resolve react_native_pods.rb with node to allow for hoisting.
|
|
require Pod::Executable.execute_command('node', ['-p',
|
|
'require.resolve(
|
|
"react-native/scripts/react_native_pods.rb",
|
|
{paths: [process.argv[1]]},
|
|
)', __dir__]).strip
|
|
|
|
platform :ios, '15.1'
|
|
workspace 'jitsi-meet'
|
|
|
|
ENV['RCT_NEW_ARCH_ENABLED'] = '1'
|
|
ENV['RCT_HERMES_V1_ENABLED'] = '0'
|
|
|
|
# Build RN deps and Core from source so we don't depend on the prebuilt RN xcframeworks.
|
|
ENV['RCT_USE_RN_DEP'] = '0'
|
|
ENV['RCT_USE_PREBUILT_RNCORE'] = '0'
|
|
|
|
# hermes-engine bakes an absolute path into HERMES_CLI_PATH, which makes the
|
|
# Podfile.lock SPEC CHECKSUM differ on every machine. Rewrite it to a relative
|
|
# path so the lockfile is portable (e.g. `pod install --deployment` in CI).
|
|
module HermesCliPathRelativizer
|
|
def store_attribute(name, value, platform_name = nil)
|
|
if name == :user_target_xcconfig &&
|
|
value.is_a?(Hash) &&
|
|
value['HERMES_CLI_PATH'] &&
|
|
self.name.to_s.start_with?('hermes-engine')
|
|
value = value.merge(
|
|
'HERMES_CLI_PATH' => '${REACT_NATIVE_PATH}/../hermes-compiler/hermesc/osx-bin/hermesc'
|
|
)
|
|
end
|
|
super
|
|
end
|
|
end
|
|
Pod::Specification.prepend(HermesCliPathRelativizer)
|
|
|
|
install! 'cocoapods', :deterministic_uuids => false
|
|
|
|
def cocoa_utilities
|
|
pod 'CocoaLumberjack', '3.7.4'
|
|
end
|
|
|
|
# Giphy is excluded from iOS autolinking to keep it out of the lite SDK,
|
|
# but the full SDK needs its TurboModule spec
|
|
# and we re-add it to autolinking.json so react native codegen generates it.
|
|
def include_giphy_in_codegen!
|
|
require 'json'
|
|
autolinking_json = File.join(
|
|
Pod::Config.instance.installation_root.to_s,
|
|
'build/generated/autolinking/autolinking.json'
|
|
)
|
|
return unless File.exist?(autolinking_json)
|
|
|
|
json = JSON.parse(File.read(autolinking_json))
|
|
giphy_root = File.expand_path('../node_modules/@giphy/react-native-sdk', __dir__)
|
|
json['dependencies'] ||= {}
|
|
json['dependencies']['@giphy/react-native-sdk'] = {
|
|
'name' => '@giphy/react-native-sdk',
|
|
'root' => giphy_root,
|
|
'platforms' => {
|
|
'ios' => {
|
|
'podspecPath' => File.join(giphy_root, 'giphy-react-native-sdk.podspec'),
|
|
'scriptPhases' => [],
|
|
'configurations' => []
|
|
}
|
|
}
|
|
}
|
|
File.write(autolinking_json, JSON.pretty_generate(json))
|
|
end
|
|
|
|
target 'JitsiMeet' do
|
|
project 'app/app.xcodeproj'
|
|
|
|
pod 'Firebase/Analytics', '~> 8.0'
|
|
pod 'Firebase/Crashlytics', '~> 8.0'
|
|
end
|
|
|
|
target 'JitsiMeetSDK' do
|
|
project 'sdk/sdk.xcodeproj'
|
|
|
|
# React Native and its dependencies
|
|
#
|
|
|
|
config = use_native_modules!
|
|
include_giphy_in_codegen!
|
|
use_react_native!(
|
|
:path => config[:reactNativePath],
|
|
# An absolute path to your application root.
|
|
:app_path => "#{Pod::Config.instance.installation_root}/.."
|
|
)
|
|
|
|
# We use auto linking, but some dependencies are excluded from the lite build
|
|
# (see react-native.config.js) so we add them here.
|
|
|
|
pod 'giphy-react-native-sdk', :path => '../node_modules/@giphy/react-native-sdk'
|
|
pod 'RNCalendarEvents', :path => '../node_modules/react-native-calendar-events'
|
|
pod 'RNGoogleSignin', :path => '../node_modules/@react-native-google-signin/google-signin'
|
|
|
|
# Native pod dependencies
|
|
#
|
|
|
|
cocoa_utilities
|
|
pod 'ObjectiveDropboxOfficial', '6.2.3'
|
|
end
|
|
|
|
target 'JitsiMeetSDKLite' do
|
|
project 'sdk/sdk.xcodeproj'
|
|
|
|
# This is a more lightweight target, which removes some functionality.
|
|
# Check the react-native.config.js for the list of excluded packages.
|
|
|
|
# React Native and its dependencies
|
|
#
|
|
|
|
config = use_native_modules!
|
|
use_react_native!(
|
|
:path => config[:reactNativePath],
|
|
# An absolute path to your application root.
|
|
:app_path => "#{Pod::Config.instance.installation_root}/.."
|
|
)
|
|
|
|
# Native pod dependencies
|
|
#
|
|
|
|
cocoa_utilities
|
|
end
|
|
|
|
post_install do |installer|
|
|
|
|
react_native_post_install(
|
|
installer,
|
|
use_native_modules![:reactNativePath],
|
|
:mac_catalyst_enabled => false,
|
|
# :ccache_enabled => true
|
|
)
|
|
installer.pods_project.targets.each do |target|
|
|
# https://github.com/CocoaPods/CocoaPods/issues/11402
|
|
if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
|
|
target.build_configurations.each do |config|
|
|
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
|
|
end
|
|
end
|
|
|
|
target.build_configurations.each do |config|
|
|
config.build_settings['SUPPORTS_MACCATALYST'] = 'NO'
|
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.1'
|
|
config.build_settings['OTHER_SWIFT_FLAGS'] = '$(inherited) -no-verify-emitted-module-interface'
|
|
end
|
|
end
|
|
|
|
# Patch SocketRocket to support TLS 1.3
|
|
%x(patch Pods/SocketRocket/SocketRocket/SRSecurityPolicy.m -N < patches/ws-tls13.diff)
|
|
|
|
# GiphyUISDK.xcframework already embeds libwebp; Giphy's podspec also
|
|
# declares libwebp as a dependency, which makes CocoaPods statically link
|
|
# libwebp into JitsiMeetSDK as well. The two copies trigger a duplicate
|
|
# `PodsDummy_libwebp` warning at runtime. Drop the redundant link.
|
|
['Pods-JitsiMeetSDK', 'Pods-JitsiMeet'].each do |aggregate_name|
|
|
Dir.glob("Pods/Target Support Files/#{aggregate_name}/*.xcconfig").each do |path|
|
|
contents = File.read(path)
|
|
patched = contents.gsub(/ -l"?libwebp"?/, '')
|
|
File.write(path, patched) if patched != contents
|
|
end
|
|
end
|
|
|
|
end
|