1d1194e24SŁukasz Kosmatyrequire "json" 2d1194e24SŁukasz Kosmaty 3d1194e24SŁukasz Kosmatypackage = JSON.parse(File.read(File.join(__dir__, "package.json"))) 4d1194e24SŁukasz Kosmaty 5d1194e24SŁukasz KosmatyPod::Spec.new do |s| 6d1194e24SŁukasz Kosmaty s.name = 'expo-dev-launcher' 7d1194e24SŁukasz Kosmaty s.version = package['version'] 8d1194e24SŁukasz Kosmaty s.summary = package['description'] 9d1194e24SŁukasz Kosmaty s.description = package['description'] 10d1194e24SŁukasz Kosmaty s.license = package['license'] 11d1194e24SŁukasz Kosmaty s.author = package['author'] 12d1194e24SŁukasz Kosmaty s.homepage = package['homepage'] 13c88b85cfSTomasz Sapeta s.platform = :ios, '13.0' 14d1194e24SŁukasz Kosmaty s.swift_version = '5.2' 15d1194e24SŁukasz Kosmaty s.source = { :git => 'https://github.com/github_account/expo-development-client.git', :tag => "#{s.version}" } 16d1194e24SŁukasz Kosmaty s.static_framework = true 17e3d19369SGabriel Donadel Dall'Agnol s.source_files = 'ios/**/*.{h,m,mm,swift,cpp}' 18e3d19369SGabriel Donadel Dall'Agnol s.preserve_paths = 'ios/**/*.{h,m,mm,swift}' 19d1194e24SŁukasz Kosmaty s.exclude_files = 'ios/Unsafe/**/*.{h,m,mm,swift,cpp}', 'ios/Tests/**/*.{h,m,swift}' 20d1194e24SŁukasz Kosmaty s.requires_arc = true 21d1194e24SŁukasz Kosmaty s.header_dir = 'EXDevLauncher' 22d1194e24SŁukasz Kosmaty 23d1194e24SŁukasz Kosmaty s.resource_bundles = { 24d1194e24SŁukasz Kosmaty 'EXDevLauncher' => [ 25d1194e24SŁukasz Kosmaty 'ios/assets', 26d1194e24SŁukasz Kosmaty 'ios/main.jsbundle', 27d1194e24SŁukasz Kosmaty 'ios/Views/EXDevLauncherErrorView.storyboard' 28d1194e24SŁukasz Kosmaty ] 29d1194e24SŁukasz Kosmaty } 30d1194e24SŁukasz Kosmaty 31e3d19369SGabriel Donadel Dall'Agnol new_arch_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1' 32d1194e24SŁukasz Kosmaty 336f74b01fSKudo Chien other_c_flags = '$(inherited)' 340fb6c935SDouglas Lowder dev_launcher_url = ENV['EX_DEV_LAUNCHER_URL'] || "" 350fb6c935SDouglas Lowder if dev_launcher_url != "" 360fb6c935SDouglas Lowder escaped_dev_launcher_url = Shellwords.escape(dev_launcher_url).gsub('/','\\/') 376f74b01fSKudo Chien other_c_flags += " -DEX_DEV_LAUNCHER_URL=\"\\\"" + escaped_dev_launcher_url + "\\\"\"" 386f74b01fSKudo Chien end 396f74b01fSKudo Chien other_swift_flags = "$(inherited)" 40adae5ee7SKudo Chien unless ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] == 'false' 416f74b01fSKudo Chien other_swift_flags += ' -DEX_DEV_CLIENT_NETWORK_INSPECTOR' 426f74b01fSKudo Chien end 436f74b01fSKudo Chien 44e3d19369SGabriel Donadel Dall'Agnol if new_arch_enabled 45e3d19369SGabriel Donadel Dall'Agnol other_c_flags += ' -DRN_FABRIC_ENABLED -DRCT_NEW_ARCH_ENABLED' 46e3d19369SGabriel Donadel Dall'Agnol end 47e3d19369SGabriel Donadel Dall'Agnol 48e3d19369SGabriel Donadel Dall'Agnol s.xcconfig = { 49e3d19369SGabriel Donadel Dall'Agnol 'GCC_PREPROCESSOR_DEFINITIONS' => "EX_DEV_LAUNCHER_VERSION=#{s.version}", 50e3d19369SGabriel Donadel Dall'Agnol 'OTHER_CFLAGS' => other_c_flags, 51e3d19369SGabriel Donadel Dall'Agnol } 52e3d19369SGabriel Donadel Dall'Agnol 53*a61b5e5aSKudo Chien header_search_paths = [ 54*a61b5e5aSKudo Chien '"$(PODS_ROOT)/Headers/Private/React-Core"', 55*a61b5e5aSKudo Chien '"${PODS_ROOT}/Headers/Public/RNReanimated"', 56*a61b5e5aSKudo Chien '"$(PODS_CONFIGURATION_BUILD_DIR)/EXManifests/Swift Compatibility Header"', 57*a61b5e5aSKudo Chien '"$(PODS_CONFIGURATION_BUILD_DIR)/EXUpdatesInterface/Swift Compatibility Header"', 58*a61b5e5aSKudo Chien ] 59*a61b5e5aSKudo Chien 606f74b01fSKudo Chien # Swift/Objective-C compatibility 610fb6c935SDouglas Lowder s.pod_target_xcconfig = { 620fb6c935SDouglas Lowder 'DEFINES_MODULE' => 'YES', 636f74b01fSKudo Chien 'OTHER_CFLAGS[config=Debug]' => other_c_flags, 646f74b01fSKudo Chien 'OTHER_SWIFT_FLAGS[config=Debug]' => other_swift_flags, 65*a61b5e5aSKudo Chien 'HEADER_SEARCH_PATHS' => header_search_paths.join(' '), 6657b8f373SKudo Chien 'FRAMEWORK_SEARCH_PATHS' => '"${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated"', 67e3d19369SGabriel Donadel Dall'Agnol "CLANG_CXX_LANGUAGE_STANDARD" => "c++17", 680fb6c935SDouglas Lowder } 690fb6c935SDouglas Lowder 70b41c14ccSKudo Chien s.user_target_xcconfig = { 71*a61b5e5aSKudo Chien 'HEADER_SEARCH_PATHS' => '"${PODS_CONFIGURATION_BUILD_DIR}/expo-dev-launcher/Swift Compatibility Header"', 72b41c14ccSKudo Chien } 73d1194e24SŁukasz Kosmaty 74d1194e24SŁukasz Kosmaty s.dependency "React-Core" 75e3d19369SGabriel Donadel Dall'Agnol s.dependency 'React-RCTAppDelegate' 76d1194e24SŁukasz Kosmaty s.dependency "expo-dev-menu-interface" 77d1194e24SŁukasz Kosmaty s.dependency "EXManifests" 78d1194e24SŁukasz Kosmaty s.dependency "EXUpdatesInterface" 79d1194e24SŁukasz Kosmaty s.dependency "expo-dev-menu" 8055a0565eSEric Samelson s.dependency "ExpoModulesCore" 81d1194e24SŁukasz Kosmaty 82c0a96678SKudo Chien unless defined?(install_modules_dependencies) 83c0a96678SKudo Chien # `install_modules_dependencies` is defined from react_native_pods.rb. 84c0a96678SKudo Chien # when running with `pod ipc spec`, this method is not defined and we have to require manually. 85c0a96678SKudo Chien require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") 86c0a96678SKudo Chien end 87c0a96678SKudo Chien install_modules_dependencies(s) 88c0a96678SKudo Chien 89d1194e24SŁukasz Kosmaty s.subspec 'Unsafe' do |unsafe| 90d1194e24SŁukasz Kosmaty unsafe.source_files = 'ios/Unsafe/**/*.{h,m,mm,swift,cpp}' 91d1194e24SŁukasz Kosmaty unsafe.compiler_flags = '-x objective-c++ -std=c++1z -fno-objc-arc' # Disable Automatic Reference Counting 92d1194e24SŁukasz Kosmaty end 93d1194e24SŁukasz Kosmaty 94d1194e24SŁukasz Kosmaty s.subspec 'Main' do |main| 95d1194e24SŁukasz Kosmaty main.dependency "expo-dev-launcher/Unsafe" 96d1194e24SŁukasz Kosmaty end 97d1194e24SŁukasz Kosmaty 98d1194e24SŁukasz Kosmaty s.test_spec 'Tests' do |test_spec| 99e3d19369SGabriel Donadel Dall'Agnol test_spec.source_files = 'ios/Tests/**/*.{h,m,mm,swift}' 100d1194e24SŁukasz Kosmaty test_spec.dependency 'Quick' 101d1194e24SŁukasz Kosmaty test_spec.dependency 'Nimble' 102d1194e24SŁukasz Kosmaty test_spec.dependency "React-CoreModules" 103d1194e24SŁukasz Kosmaty test_spec.dependency "OHHTTPStubs" 10484f418d7SKudo Chien # ExpoModulesCore requires React-hermes or React-jsc in tests, add ExpoModulesTestCore for the underlying dependencies 10584f418d7SKudo Chien test_spec.dependency 'ExpoModulesTestCore' 106d1194e24SŁukasz Kosmaty end 107d1194e24SŁukasz Kosmaty 108d1194e24SŁukasz Kosmaty s.default_subspec = 'Main' 1090fb6c935SDouglas Lowder 110d1194e24SŁukasz Kosmatyend 111