Skip to content

Commit ffdd82e

Browse files
committed
feat: build MLC for both iOS sim & device
1 parent 1f8d700 commit ffdd82e

2 files changed

Lines changed: 49 additions & 13 deletions

File tree

packages/mlc/react-native-ai-mlc.podspec

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,28 @@ Pod::Spec.new do |s|
4747

4848
# User target configuration to ensure static libraries are force loaded
4949
s.user_target_xcconfig = {
50-
'OTHER_LDFLAGS' => [
50+
'OTHER_LDFLAGS[sdk=iphoneos*]' => [
5151
'$(inherited)',
5252
'-ObjC',
53-
"-force_load \"#{package_path}/prebuilt/ios/lib/libmodel_iphone.a\"",
54-
"-force_load \"#{package_path}/prebuilt/ios/lib/libmlc_llm.a\"",
55-
"-force_load \"#{package_path}/prebuilt/ios/lib/libtvm_runtime.a\"",
56-
"-force_load \"#{package_path}/prebuilt/ios/lib/libtvm_ffi_static.a\"",
57-
"-force_load \"#{package_path}/prebuilt/ios/lib/libsentencepiece.a\"",
58-
"-force_load \"#{package_path}/prebuilt/ios/lib/libtokenizers_cpp.a\"",
59-
"-force_load \"#{package_path}/prebuilt/ios/lib/libtokenizers_c.a\""
60-
].join(' ')
53+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphone/libmodel_iphone.a\"",
54+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphone/libmlc_llm.a\"",
55+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphone/libtvm_runtime.a\"",
56+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphone/libtvm_ffi_static.a\"",
57+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphone/libsentencepiece.a\"",
58+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphone/libtokenizers_cpp.a\"",
59+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphone/libtokenizers_c.a\""
60+
].join(' '),
61+
'OTHER_LDFLAGS[sdk=iphonesimulator*]' => [
62+
'$(inherited)',
63+
'-ObjC',
64+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphonesim/libmodel_iphone.a\"",
65+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphonesim/libmlc_llm.a\"",
66+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphonesim/libtvm_runtime.a\"",
67+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphonesim/libtvm_ffi_static.a\"",
68+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphonesim/libsentencepiece.a\"",
69+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphonesim/libtokenizers_cpp.a\"",
70+
"-force_load \"#{package_path}/prebuilt/ios/lib_iphonesim/libtokenizers_c.a\""
71+
].join(' '),
6172
}
6273

6374
# Framework dependencies

packages/mlc/scripts/build-runtime.sh

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,10 +278,35 @@ fi
278278
mkdir -p "$OUTPUT_DIR"
279279

280280
# Run MLC package command
281-
echo "Building runtime..."
282-
python3 -m mlc_llm package \
283-
--package-config "$CONFIG_FILE" \
284-
--output "$OUTPUT_DIR"
281+
if [ "$PLATFORM" = "ios" ]; then
282+
for is_simulator in false true; do
283+
echo "Preparing libs (is_simulator=$is_simulator)..."
284+
PREPARE_LIBS_PATH="$MLC_LLM_SOURCE_DIR/ios/prepare_libs.sh"
285+
if [ -f "$PREPARE_LIBS_PATH" ]; then
286+
sed -i '' "s/^is_simulator=.*/is_simulator=\"$is_simulator\"/" "$PREPARE_LIBS_PATH"
287+
fi
288+
289+
echo "Building runtime (is_simulator=$is_simulator)..."
290+
python3 -m mlc_llm package \
291+
--package-config "$CONFIG_FILE" \
292+
--output "$OUTPUT_DIR"
293+
294+
if [ -d "$OUTPUT_DIR/lib" ]; then
295+
if [ "$is_simulator" = "true" ]; then
296+
lib_suffix="iphonesim"
297+
else
298+
lib_suffix="iphone"
299+
fi
300+
rm -rf "$OUTPUT_DIR/lib_$lib_suffix"
301+
mv "$OUTPUT_DIR/lib" "$OUTPUT_DIR/lib_$lib_suffix"
302+
fi
303+
done
304+
else
305+
echo "Building runtime..."
306+
python3 -m mlc_llm package \
307+
--package-config "$CONFIG_FILE" \
308+
--output "$OUTPUT_DIR"
309+
fi
285310

286311
# Copy necessary headers for iOS
287312
if [ "$PLATFORM" = "ios" ]; then

0 commit comments

Comments
 (0)