mirror of
https://github.com/minibits-cash/minibits_wallet.git
synced 2026-07-22 07:48:28 +00:00
92 lines
4.4 KiB
Ruby
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
|