mxinden / if-watch

Cross platform asynchronous network watcher
28 stars 26 forks source link

Linking failing on iOS through Unity #36

Open Larkooo opened 8 months ago

Larkooo commented 8 months ago

Linking seems to be failing exclusively on iOS when attempting to build our Unity project to iOS (through xcode), here's the log output;

I have a rust FFI library which uses libp2p that we compile to various platforms for Unity, it is compiled as a staticlib for iOS

Ld /Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Products/ReleaseForRunning-iphoneos/UnityFramework.framework/UnityFramework normal (in target 'UnityFramework' from project 'Unity-iPhone')
    cd /Users/nasr/Dojo/dojo-webgl/dojo-ios
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -Xlinker -reproducible -target arm64-apple-ios12.0 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.2.sdk -Os -L/Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Intermediates.noindex/EagerLinkingTBDs/ReleaseForRunning-iphoneos -L/Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Products/ReleaseForRunning-iphoneos -L/Users/nasr/Dojo/dojo-webgl/dojo-ios/Libraries -L/Users/nasr/Dojo/dojo-webgl/dojo-ios/Libraries/Dojo/Plugins/iOS -F/Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Intermediates.noindex/EagerLinkingTBDs/ReleaseForRunning-iphoneos -F/Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Products/ReleaseForRunning-iphoneos -filelist /Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Intermediates.noindex/Unity-iPhone.build/ReleaseForRunning-iphoneos/UnityFramework.build/Objects-normal/arm64/UnityFramework.LinkFileList -install_name @rpath/UnityFramework.framework/UnityFramework -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -map -Xlinker /Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Intermediates.noindex/Unity-iPhone.build/ReleaseForRunning-iphoneos/UnityFramework.build/UnityFramework-LinkMap-normal-arm64.txt -dead_strip -Xlinker -object_path_lto -Xlinker /Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Intermediates.noindex/Unity-iPhone.build/ReleaseForRunning-iphoneos/UnityFramework.build/Objects-normal/arm64/UnityFramework_lto.o -stdlib\=libc++ -fobjc-arc -fobjc-link-runtime -weak_framework CoreMotion -weak-lSystem -liPhone-lib -framework Metal -framework Security -framework MediaToolbox -framework CoreText -framework AudioToolbox -weak_framework AVFoundation -framework AVKit -framework CFNetwork -framework CoreGraphics -framework CoreMedia -weak_framework CoreMotion -framework CoreVideo -framework Foundation -framework OpenAL -framework QuartzCore -framework SystemConfiguration -framework UIKit -lGameAssembly -liconv.2 -ldojo_c -lil2cpp /Users/nasr/Dojo/dojo-webgl/dojo-ios/Libraries/baselib.a -weak_framework GameController -Xlinker -dependency_info -Xlinker /Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Intermediates.noindex/Unity-iPhone.build/ReleaseForRunning-iphoneos/UnityFramework.build/Objects-normal/arm64/UnityFramework_dependency_info.dat -o /Users/nasr/Library/Developer/Xcode/DerivedData/Unity-iPhone-frevwvwahjowpucoixhprxwxzpzx/Build/Products/ReleaseForRunning-iphoneos/UnityFramework.framework/UnityFramework

This seems to be ok ^ the SystemConfiguration framework is getting linked.

ld: Undefined symbols:
  _kSCNetworkInterfaceTypeIrDA, referenced from:
      system_configuration::network_configuration::SCNetworkInterfaceType::from_cfstring::h7ee7b9e19efb0829 in libdojo_c.a[568](system_configuration-aed9a593acad74b5.system_configuration.fbf71c411ff7febe-cgu.0.rcgu.o)
clang: error: linker command failed with exit code 1 (use -v to see invocation)

However, this interface seems to be undefined. I looked it up and it seems like it's deprecated, maybe it has something to do with that?

xtwist commented 7 months ago

It appears to be caused by the version of the system-configuration crate. Check this reply