1# Copyright (c) Meta Platforms, Inc. and affiliates. 2# 3# This source code is licensed under the MIT license found in the 4# LICENSE file in the root directory of this source tree. 5 6# Default versions of Flipper and related dependencies. 7# Update this map to bump the dependencies. 8$flipper_default_versions = { 9 'Flipper' => '0.125.0', 10 'Flipper-Boost-iOSX' => '1.76.0.1.11', 11 'Flipper-DoubleConversion' => '3.2.0.1', 12 'Flipper-Fmt' => '7.1.7', 13 'Flipper-Folly' => '2.6.10', 14 'Flipper-Glog' => '0.5.0.5', 15 'Flipper-PeerTalk' => '0.0.4', 16 'Flipper-RSocket' => '1.4.3', 17 'OpenSSL-Universal' => '1.1.1100', 18} 19 20# This function installs the `React-Core/DevSupport` subpods 21# when the dependencies are installed for a non production app. 22# 23# @parameter production: a boolean that indicates whether we are in production or not. 24# @parameter pathToReactNative: the path to the React Native installation 25def install_flipper_dependencies(pathToReactNative) 26 pod 'ABI47_0_0React-Core/DevSupport', :path => "#{pathToReactNative}/", :project_name => 'ABI47_0_0' 27end 28 29 30# This function installs all the dependencies required by flipper. 31# 32# @parameter versions: a dictionary to specify a version of a dependencies. Default versions will be used if not specified 33# @parameter configurations: an array of configurations to install the flipper dependencies. Defaults to ['Debug']. 34def use_flipper_pods(versions = {}, configurations: ['Debug']) 35 versions['Flipper'] ||= $flipper_default_versions['Flipper'] 36 versions['Flipper-Boost-iOSX'] ||= $flipper_default_versions['Flipper-Boost-iOSX'] 37 versions['Flipper-DoubleConversion'] ||= $flipper_default_versions['Flipper-DoubleConversion'] 38 versions['Flipper-Fmt'] ||= $flipper_default_versions['Flipper-Fmt'] 39 versions['Flipper-Folly'] ||= $flipper_default_versions['Flipper-Folly'] 40 versions['Flipper-Glog'] ||= $flipper_default_versions['Flipper-Glog'] 41 versions['Flipper-PeerTalk'] ||= $flipper_default_versions['Flipper-PeerTalk'] 42 versions['Flipper-RSocket'] ||= $flipper_default_versions['Flipper-RSocket'] 43 versions['OpenSSL-Universal'] ||= $flipper_default_versions['OpenSSL-Universal'] 44 pod 'ABI47_0_0FlipperKit', versions['Flipper'], :configurations => configurations 45 pod 'ABI47_0_0FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configurations => configurations 46 pod 'ABI47_0_0FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configurations => configurations 47 pod 'ABI47_0_0FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configurations => configurations 48 pod 'ABI47_0_0FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configurations => configurations 49 # List all transitive dependencies for FlipperKit pods 50 # to avoid them being linked in Release builds 51 pod 'ABI47_0_0Flipper', versions['Flipper'], :configurations => configurations 52 pod 'ABI47_0_0Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX'], :configurations => configurations 53 pod 'ABI47_0_0Flipper-DoubleConversion', versions['Flipper-DoubleConversion'], :configurations => configurations 54 pod 'ABI47_0_0Flipper-Fmt', versions['Flipper-Fmt'], :configurations => configurations 55 pod 'ABI47_0_0Flipper-Folly', versions['Flipper-Folly'], :configurations => configurations 56 pod 'ABI47_0_0Flipper-Glog', versions['Flipper-Glog'], :configurations => configurations 57 pod 'ABI47_0_0Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configurations => configurations 58 pod 'ABI47_0_0Flipper-RSocket', versions['Flipper-RSocket'], :configurations => configurations 59 pod 'ABI47_0_0FlipperKit/Core', versions['Flipper'], :configurations => configurations 60 pod 'ABI47_0_0FlipperKit/CppBridge', versions['Flipper'], :configurations => configurations 61 pod 'ABI47_0_0FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configurations => configurations 62 pod 'ABI47_0_0FlipperKit/FBDefines', versions['Flipper'], :configurations => configurations 63 pod 'ABI47_0_0FlipperKit/FKPortForwarding', versions['Flipper'], :configurations => configurations 64 pod 'ABI47_0_0FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configurations => configurations 65 pod 'ABI47_0_0FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configurations => configurations 66 pod 'ABI47_0_0FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configurations => configurations 67 pod 'ABI47_0_0OpenSSL-Universal', versions['OpenSSL-Universal'], :configurations => configurations 68end 69 70# Applies some changes to some pods of the project: 71# * it sets the Swift version for Yoga kit to 4.1 72# * it sets the sonar-kit flag to React-Core pod 73# 74# @parameter installer: the installer object used to install the pods. 75def flipper_post_install(installer) 76 installer.pods_project.targets.each do |target| 77 if target.name == 'YogaKit' 78 target.build_configurations.each do |config| 79 config.build_settings['SWIFT_VERSION'] = '4.1' 80 end 81 end 82 83 # Enable flipper for React-Core Debug configuration 84 if target.name == 'React-Core' 85 target.build_configurations.each do |config| 86 if config.name == 'Debug' 87 config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = ['$(inherited)', 'FB_SONARKIT_ENABLED=1'] 88 end 89 end 90 end 91 end 92end 93 94class FlipperConfiguration 95 attr_reader :flipper_enabled 96 attr_reader :configurations 97 attr_reader :versions 98 99 def initialize(flipper_enabled, configurations, versions) 100 @flipper_enabled = flipper_enabled 101 @configurations = configurations 102 @versions = versions 103 end 104 105 def self.enabled(configurations = ["Debug"], versions = {}) 106 FlipperConfiguration.new(true, configurations, versions) 107 end 108 109 def self.disabled 110 FlipperConfiguration.new(false, [], {}) 111 end 112 113 def == (other) 114 return @flipper_enabled == other.flipper_enabled && 115 @configurations == other.configurations && 116 @versions == other.versions 117 end 118end 119