76 lines
2.9 KiB
Ruby
76 lines
2.9 KiB
Ruby
require "json"
|
|
|
|
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
|
|
gamma_project_enabled = ENV['RNS_GAMMA_ENABLED'] == '1'
|
|
new_arch_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
|
|
debug_logging = ENV['RNS_DEBUG_LOGGING'] == '1'
|
|
|
|
source_files_exts = new_arch_enabled ? '{h,m,mm,cpp,swift}' : '{h,m,mm,swift}'
|
|
source_files = ["ios/**/*.#{source_files_exts}"]
|
|
|
|
if !new_arch_enabled
|
|
source_files.push("cpp/RNScreensTurboModule.cpp", "cpp/RNScreensTurboModule.h")
|
|
end
|
|
|
|
min_supported_ios_version = new_arch_enabled ? "15.1" : "15.1"
|
|
min_supported_tvos_version = "15.1"
|
|
min_supported_visionos_version = "1.0"
|
|
|
|
rnscreens_cpp_flags = []
|
|
|
|
rnscreens_cpp_flags << "-DRNS_DEBUG_LOGGING=1" if debug_logging
|
|
rnscreens_cpp_flags << "-DRNS_GAMMA_ENABLED=1" if gamma_project_enabled
|
|
|
|
rnscreens_config = {
|
|
'OTHER_CPLUSPLUSFLAGS' => rnscreens_cpp_flags.join(" ")
|
|
}
|
|
|
|
if gamma_project_enabled
|
|
# This setting is required to make Swift code build. However we have
|
|
# dependency on `React-RCTImage` pod, which does not set `DEFINES_MODULE`
|
|
# and therefore it fails to build. Currently we do patch react-native source
|
|
# code to make it work & the fix is already merged, however it'll be most likely released
|
|
# with 0.81. We can not expect users to patch the react-native sources, thus
|
|
# we can not have Swift code in stable package.
|
|
rnscreens_config['DEFINES_MODULE'] = 'YES'
|
|
end
|
|
|
|
Pod::Spec.new do |s|
|
|
s.name = "RNScreens"
|
|
s.version = package["version"]
|
|
s.summary = package["description"]
|
|
s.description = <<-DESC
|
|
RNScreens - first incomplete navigation solution for your React Native app
|
|
DESC
|
|
s.homepage = "https://github.com/software-mansion/react-native-screens"
|
|
s.license = "MIT"
|
|
s.author = { "author" => "author@domain.cn" }
|
|
s.platforms = { :ios => min_supported_ios_version, :tvos => min_supported_tvos_version, :visionos => min_supported_visionos_version }
|
|
s.source = { :git => "https://github.com/software-mansion/react-native-screens.git", :tag => "#{s.version}" }
|
|
s.source_files = source_files
|
|
s.project_header_files = "ios/bridging/Swift-Bridging.h"
|
|
s.requires_arc = true
|
|
|
|
if !gamma_project_enabled
|
|
s.exclude_files = "ios/gamma/**/*.#{source_files_exts}"
|
|
else
|
|
s.exclude_files = "ios/stubs/**/*.#{source_files_exts}"
|
|
Pod::UI.puts "[RNScreens] Gamma project enabled. Including source files."
|
|
end
|
|
|
|
s.pod_target_xcconfig = rnscreens_config
|
|
|
|
install_modules_dependencies(s)
|
|
if new_arch_enabled
|
|
s.subspec "common" do |ss|
|
|
ss.source_files = ["common/cpp/**/*.{cpp,h}", "cpp/**/*.{cpp,h}"]
|
|
ss.project_header_files = "common/cpp/**/*.h", "cpp/**/*.h" # Don't expose C++ headers publicly to allow importing framework into Swift files
|
|
ss.header_dir = "rnscreens"
|
|
ss.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/common/cpp\"" }
|
|
end
|
|
end
|
|
|
|
s.dependency "React-RCTImage"
|
|
end
|