Files
minibits_wallet/ios/Podfile
2026-06-01 13:21:37 +02:00

92 lines
4.4 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, min_ios_version_supported
prepare_react_native_project!
# Workaround: react-native-firebase references legacy React headers not exposed
# in RN 0.84's precompiled iOS binaries. Build RN core from source instead.
ENV['RCT_USE_PREBUILT_RNCORE'] = '0'
linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
use_frameworks! :linkage => linkage.to_sym
end
target 'minibits_wallet' do
config = use_native_modules!
# Minibts - firebase start
use_frameworks! :linkage => :static
$RNFirebaseAsStaticFramework = true
# RCT-Folly and its transitive deps are no longer in the CocoaPods specs repo
# — point to the local podspecs shipped with react-native (needed by react-native-exit-app)
pod 'RCT-Folly', :podspec => '../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec'
pod 'boost', :podspec => '../node_modules/react-native/third-party-podspecs/boost.podspec'
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'fast_float', :podspec => '../node_modules/react-native/third-party-podspecs/fast_float.podspec'
pod 'fmt', :podspec => '../node_modules/react-native/third-party-podspecs/fmt.podspec'
# Minibits - firebase end
use_react_native!(
:path => config[:reactNativePath],
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
post_install do |installer|
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false,
# :ccache_enabled => true
)
# fmt 11.0.2 (pinned by RN) has a broken consteval path that newer Clang
# (Xcode 26+) rejects with "Call to consteval function ... is not a constant
# expression" in fmt/format-inl.h. Force the non-consteval fallback that fmt
# already uses for older/buggy compilers, via a -DFMT_USE_CONSTEVAL=0 flag on
# every target (fmt headers are included transitively, so applying it project-
# wide avoids an ODR mismatch between translation units).
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
defs = Array(config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'])
defs << '$(inherited)' if defs.empty?
defs << 'FMT_USE_CONSTEVAL=0'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = defs
end
# react-native-quick-crypto cross-includes headers across cpp/ subdirs by
# bare filename (e.g. cpp/Sig/*.cpp does #include "logs.h" living in
# cpp/Utils/). Xcode 26's stricter header lookup no longer resolves these
# via the implicit header map, so add cpp/** to the search path recursively.
if target.name == 'react-native-quick-crypto'
target.build_configurations.each do |config|
paths = Array(config.build_settings['HEADER_SEARCH_PATHS'])
paths << '$(inherited)' if paths.empty?
paths << '"$(PODS_TARGET_SRCROOT)/cpp/**"'
config.build_settings['HEADER_SEARCH_PATHS'] = paths
end
end
end
# base.h unconditionally #defines FMT_USE_CONSTEVAL from its own compiler
# detection, which overrides the -D flag above. Patch it to honor an
# externally-provided value so the flag actually takes effect. Idempotent.
fmt_base = File.join(installer.sandbox.root, 'fmt', 'include', 'fmt', 'base.h')
if File.exist?(fmt_base)
contents = File.read(fmt_base)
anchor = "// Detect consteval, C++20 constexpr extensions and std::is_constant_evaluated.\n#if !defined(__cpp_lib_is_constant_evaluated)"
if contents.include?(anchor)
contents.sub!(anchor,
"// Detect consteval, C++20 constexpr extensions and std::is_constant_evaluated.\n#ifdef FMT_USE_CONSTEVAL\n// Honor an externally-provided value (e.g. -DFMT_USE_CONSTEVAL=0 from build settings).\n#elif !defined(__cpp_lib_is_constant_evaluated)")
File.write(fmt_base, contents)
end
end
end
end