From 577b30e72f791f8410ab5cd6bfc9766a7c62cf2d Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Mon, 13 Apr 2026 13:40:27 +0000 Subject: [PATCH] nix: strip ios library (#6503) * strip ios like in android * remove strip-unneeded in mac * strip only simplex-chat libs * flake.nix: strip only local symbols in MacOS library * flake.nix: make libs writable * flake.nix: better strip placement * reduce framework size by exporting only public API symbols --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 3 +++ apps/ios/SimpleXChat/exported_symbols.txt | 11 +++++++++++ flake.nix | 1 + 3 files changed, 15 insertions(+) create mode 100644 apps/ios/SimpleXChat/exported_symbols.txt diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index c977f5709c..ef37f26097 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -2319,6 +2319,9 @@ SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + EXPORTED_SYMBOLS_FILE = "$(PROJECT_DIR)/SimpleXChat/exported_symbols.txt"; + STRIP_INSTALLED_PRODUCT = YES; + STRIP_STYLE = "non-global"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; diff --git a/apps/ios/SimpleXChat/exported_symbols.txt b/apps/ios/SimpleXChat/exported_symbols.txt new file mode 100644 index 0000000000..52c3bf83e9 --- /dev/null +++ b/apps/ios/SimpleXChat/exported_symbols.txt @@ -0,0 +1,11 @@ +# Swift mangled symbols (Swift 5+ ABI stable prefix) +_$s* + +# ObjC class/metaclass symbols (for NSObject subclasses) +_OBJC_CLASS_$_* +_OBJC_METACLASS_$_* + +# C API (SimpleX.h bridging header) +_chat_* +_haskell_init* +_hs_init* diff --git a/flake.nix b/flake.nix index c130e1a1fd..43f4e8912a 100644 --- a/flake.nix +++ b/flake.nix @@ -93,6 +93,7 @@ for pkg in $out/_pkg/*.a; do chmod +w $pkg ${mac2ios.packages.${system}.mac2ios}/bin/mac2ios $pkg + [[ "$pkg" == *simplex-chat* ]] && ${pkgs.stdenv.cc.targetPrefix}strip -x $pkg chmod -w $pkg done