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.182.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 'OpenSSL-Universal' => '1.1.1100', 17} 18 19# This function installs the `React-Core/DevSupport` subpods 20# when the dependencies are installed for a non production app. 21# 22# @parameter production: a boolean that indicates whether we are in production or not. 23# @parameter pathToReactNative: the path to the React Native installation 24def install_flipper_dependencies(pathToReactNative) 25 pod 'ABI49_0_0React-Core/DevSupport', :path => "#{pathToReactNative}/", :project_name => 'ABI49_0_0' 26end 27 28 29# This function installs all the dependencies required by flipper. 30# 31# @parameter versions: a dictionary to specify a version of a dependencies. Default versions will be used if not specified 32# @parameter configurations: an array of configurations to install the flipper dependencies. Defaults to ['Debug']. 33def use_flipper_pods(versions = {}, configurations: ['Debug']) 34 versions['Flipper'] ||= $flipper_default_versions['Flipper'] 35 versions['Flipper-Boost-iOSX'] ||= $flipper_default_versions['Flipper-Boost-iOSX'] 36 versions['Flipper-DoubleConversion'] ||= $flipper_default_versions['Flipper-DoubleConversion'] 37 versions['Flipper-Fmt'] ||= $flipper_default_versions['Flipper-Fmt'] 38 versions['Flipper-Folly'] ||= $flipper_default_versions['Flipper-Folly'] 39 versions['Flipper-Glog'] ||= $flipper_default_versions['Flipper-Glog'] 40 versions['Flipper-PeerTalk'] ||= $flipper_default_versions['Flipper-PeerTalk'] 41 versions['OpenSSL-Universal'] ||= $flipper_default_versions['OpenSSL-Universal'] 42 pod 'ABI49_0_0FlipperKit', versions['Flipper'], :configurations => configurations 43 pod 'ABI49_0_0FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configurations => configurations 44 pod 'ABI49_0_0FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configurations => configurations 45 pod 'ABI49_0_0FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configurations => configurations 46 pod 'ABI49_0_0FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configurations => configurations 47 # List all transitive dependencies for FlipperKit pods 48 # to avoid them being linked in Release builds 49 pod 'ABI49_0_0Flipper', versions['Flipper'], :configurations => configurations 50 pod 'ABI49_0_0Flipper-Boost-iOSX', versions['Flipper-Boost-iOSX'], :configurations => configurations 51 pod 'ABI49_0_0Flipper-DoubleConversion', versions['Flipper-DoubleConversion'], :configurations => configurations 52 pod 'ABI49_0_0Flipper-Fmt', versions['Flipper-Fmt'], :configurations => configurations 53 pod 'ABI49_0_0Flipper-Folly', versions['Flipper-Folly'], :configurations => configurations 54 pod 'ABI49_0_0Flipper-Glog', versions['Flipper-Glog'], :configurations => configurations 55 pod 'ABI49_0_0Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configurations => configurations 56 pod 'ABI49_0_0FlipperKit/Core', versions['Flipper'], :configurations => configurations 57 pod 'ABI49_0_0FlipperKit/CppBridge', versions['Flipper'], :configurations => configurations 58 pod 'ABI49_0_0FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configurations => configurations 59 pod 'ABI49_0_0FlipperKit/FBDefines', versions['Flipper'], :configurations => configurations 60 pod 'ABI49_0_0FlipperKit/FKPortForwarding', versions['Flipper'], :configurations => configurations 61 pod 'ABI49_0_0FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configurations => configurations 62 pod 'ABI49_0_0FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configurations => configurations 63 pod 'ABI49_0_0FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configurations => configurations 64 pod 'ABI49_0_0OpenSSL-Universal', versions['OpenSSL-Universal'], :configurations => configurations 65end 66 67# Applies some changes to some pods of the project: 68# * it sets the Swift version for Yoga kit to 4.1 69# * it sets the sonar-kit flag to React-Core pod 70# 71# @parameter installer: the installer object used to install the pods. 72def flipper_post_install(installer) 73 installer.pods_project.targets.each do |target| 74 if target.name == 'YogaKit' 75 target.build_configurations.each do |config| 76 config.build_settings['SWIFT_VERSION'] = '4.1' 77 end 78 end 79 80 # Enable flipper for React-RCTAppDelegate Debug configuration 81 if target.name == 'React-RCTAppDelegate' 82 target.build_configurations.each do |config| 83 if config.debug? 84 config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = ['$(inherited)', 'FB_SONARKIT_ENABLED=1'] 85 end 86 end 87 end 88 end 89end 90 91class FlipperConfiguration 92 attr_reader :flipper_enabled 93 attr_reader :configurations 94 attr_reader :versions 95 96 def initialize(flipper_enabled, configurations, versions) 97 @flipper_enabled = flipper_enabled 98 @configurations = configurations 99 @versions = versions 100 end 101 102 def self.enabled(configurations = ["Debug"], versions = {}) 103 FlipperConfiguration.new(true, configurations, versions) 104 end 105 106 def self.disabled 107 FlipperConfiguration.new(false, [], {}) 108 end 109 110 def == (other) 111 return @flipper_enabled == other.flipper_enabled && 112 @configurations == other.configurations && 113 @versions == other.versions 114 end 115end 116