66 lines
3.1 KiB
Ruby
66 lines
3.1 KiB
Ruby
#
|
|
# NetDesk by Akronlogic — CocoaPods spec that links the compiled Rust core
|
|
# (NetDeskCore.xcframework) into the Flutter iOS Runner.
|
|
#
|
|
# This file is a TEMPLATE kept under version control in packaging/ios/.
|
|
# packaging/build-ios.sh copies it to ui/ios/netdesk_core.podspec next to the
|
|
# freshly-assembled NetDeskCore.xcframework, then adds
|
|
# pod 'netdesk_core', :path => '.'
|
|
# to ui/ios/Podfile so `flutter build ipa` links it automatically.
|
|
#
|
|
# The xcframework is a *static* library (libnetdesk_core.a, one slice per
|
|
# platform: ios-arm64 device + ios-arm64-simulator). CocoaPods auto-selects the
|
|
# right slice per build, so there are no hardcoded slice paths here.
|
|
#
|
|
Pod::Spec.new do |s|
|
|
s.name = 'netdesk_core'
|
|
s.version = '0.1.0'
|
|
s.summary = 'NetDesk native Rust core (static) for iOS — Akronlogic.'
|
|
s.description = <<-DESC
|
|
The compiled NetDesk engine: signaling, end-to-end crypto, the media
|
|
transport and VideoToolbox H.264 hardware decode (core/src/decode_vt.rs).
|
|
Vendored as a static xcframework; the Flutter UI binds to it over dart:ffi /
|
|
flutter_rust_bridge in Phase 3.
|
|
DESC
|
|
s.homepage = 'https://akronlogic.com'
|
|
s.license = { :type => 'Proprietary', :text => 'Copyright Akronlogic. All rights reserved.' }
|
|
s.author = { 'Akronlogic' => 'https://akronlogic.com' }
|
|
s.platform = :ios, '13.0'
|
|
s.source = { :path => '.' }
|
|
|
|
# The Rust core, assembled by packaging/build-ios.sh (xcodebuild -create-xcframework).
|
|
s.vendored_frameworks = 'NetDeskCore.xcframework'
|
|
|
|
# System frameworks the VideoToolbox decode path links with
|
|
# #[link(kind = "framework")] in core/src/decode_vt.rs. A static Rust lib
|
|
# records these in its metadata but does NOT pull them in at the final app
|
|
# link, so they must be named here.
|
|
# CoreMedia — CMVideoFormatDescription / CMSampleBuffer / CMBlockBuffer
|
|
# VideoToolbox — VTDecompressionSession*
|
|
# CoreVideo — CVPixelBuffer*
|
|
# CoreFoundation — CFDictionary/CFString/CFRelease (core-foundation-sys)
|
|
s.frameworks = 'VideoToolbox', 'CoreMedia', 'CoreVideo', 'CoreFoundation'
|
|
|
|
# Vendored static xcframework, no public headers yet (the C ABI header is
|
|
# generated with cbindgen when Phase 3's core/src/ffi.rs lands — see
|
|
# docs/build-ios.md). CocoaPods links the archive normally; once the Phase-3
|
|
# Dart bindings reference the symbols they are retained automatically.
|
|
#
|
|
# Before those bindings exist, nothing references the archive, so the linker
|
|
# may drop it. That is harmless for the build. If you want to *prove* the
|
|
# archive links end-to-end before Phase 3, force it in by uncommenting:
|
|
#
|
|
# s.user_target_xcconfig = {
|
|
# 'OTHER_LDFLAGS' => '-force_load "${PODS_XCFRAMEWORKS_BUILD_DIR}/netdesk_core/libnetdesk_core.a"'
|
|
# }
|
|
#
|
|
# (Do not combine -force_load with Phase-3 symbol references, or you may hit
|
|
# duplicate-symbol errors — pick one.)
|
|
|
|
s.pod_target_xcconfig = {
|
|
'DEFINES_MODULE' => 'YES',
|
|
# Keep the Rust/FFI symbols discoverable for dart:ffi lookups.
|
|
'STRIP_STYLE' => 'non-global',
|
|
}
|
|
end
|