I am trying to cross compile Tensorflow Lite (2.5, nightly build) for iOS. I would like to build a static framework. Here is the build command I used:
bazel build --config=ios_arm64 -c opt //tensorflow/lite/ios:TensorFlowLiteC_framework
The TensorFlowLiteC_framework target is defined in tensorflow/tensorflow/lite/ios/BUILD.apple as
tflite_ios_static_framework( name = "TensorFlowLiteC_framework", hdrs = [ ":c_api.h", ":common.h", ":xnnpack_delegate.h", "//tensorflow/lite/c:c_api_types.h", ], allowlist_symbols_file = ":allowlist_TensorFlowLiteC.txt", bundle_name = "TensorFlowLiteC", minimum_os_version = TFL_MINIMUM_OS_VERSION, deps = [ ":tensorflow_lite_c", ], )
I had expected the resulting framework to be a static framework, but it appears to be a dynamic framework instead. Inside the
TensorFlowLiteC.framework folder, there is a binary file
TensorFlowLiteC. If I do
file TensorFlowLiteC, I get:
TensorFlowLiteC: Mach-O universal binary with 1 architecture: [arm64:Mach-O 64-bit object arm64] TensorFlowLiteC (for architecture arm64): Mach-O 64-bit object arm64
This appears to be a dynamic lib file to me. As far as I know, if this was a static archive, I should have gotten:
current ar archive.
Is there a way to actually build Tensorflow Lite into an actual static framework for iOS?