Skip to content

Commit 0e331c2

Browse files
authored
Add executorch_llm xcframework bundling extension/llm
1 parent 890a3ab commit 0e331c2

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

scripts/build_apple_frameworks.sh

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,29 @@ libextension_module.a,\
3434
libextension_tensor.a,\
3535
:${FRAMEWORK_EXECUTORCH_HEADERS_DIR}:${FRAMEWORK_EXECUTORCH_MODULE_NAME}"
3636

37+
FRAMEWORK_EXECUTORCH_LLM_NAME="executorch_llm"
38+
FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME="ExecuTorchLLM"
39+
FRAMEWORK_EXECUTORCH_LLM_HEADERS_DIR="${FRAMEWORK_EXECUTORCH_LLM_NAME}_include"
40+
FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH="${OUTPUT_DIR}/${FRAMEWORK_EXECUTORCH_LLM_HEADERS_DIR}"
41+
FRAMEWORK_EXECUTORCH_LLM="${FRAMEWORK_EXECUTORCH_LLM_NAME}:\
42+
libabsl_hash.a,\
43+
libabsl_int128.a,\
44+
libabsl_log_initialize.a,\
45+
libabsl_log_internal_format.a,\
46+
libabsl_log_internal_log_sink_set.a,\
47+
libabsl_log_internal_message.a,\
48+
libabsl_spinlock_wait.a,\
49+
libabsl_str_format_internal.a,\
50+
libabsl_strings.a,\
51+
libabsl_strings_internal.a,\
52+
libabsl_time.a,\
53+
libabsl_time_zone.a,\
54+
libextension_llm_runner.a,\
55+
libre2.a,\
56+
libsentencepiece.a,\
57+
libtokenizers.a,\
58+
:${FRAMEWORK_EXECUTORCH_LLM_HEADERS_DIR}"
59+
3760
FRAMEWORK_THREADPOOL="threadpool:\
3861
libcpuinfo.a,\
3962
libextension_threadpool.a,\
@@ -145,7 +168,7 @@ if [[ ${#MODES[@]} -eq 0 ]]; then
145168
MODES=("Release" "Debug")
146169
fi
147170

148-
echo "Building libraries"
171+
# echo "Building libraries"
149172

150173
rm -rf "${OUTPUT_DIR}"
151174
for preset_index in "${!PRESETS[@]}"; do
@@ -171,6 +194,8 @@ done
171194

172195
echo "Exporting headers"
173196

197+
# FRAMEWORK_EXECUTORCH
198+
174199
mkdir -p "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME"
175200

176201
"$SOURCE_ROOT_DIR"/scripts/print_exported_headers.py --buck2=$(realpath "$BUCK2") --targets \
@@ -202,6 +227,36 @@ module ${FRAMEWORK_EXECUTORCH_MODULE_NAME} {
202227
}
203228
EOF
204229

230+
# FRAMEWORK_EXECUTORCH_LLM
231+
232+
mkdir -p "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME"
233+
234+
"$SOURCE_ROOT_DIR"/scripts/print_exported_headers.py \
235+
--buck2="$(realpath "$BUCK2")" \
236+
--targets //extension/llm/runner:runner_lib \
237+
| tee \
238+
>(
239+
grep '^extension/llm/' \
240+
| rsync -av --files-from=- \
241+
"$SOURCE_ROOT_DIR" \
242+
"$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH"
243+
) \
244+
>(
245+
grep '^pytorch/tokenizers/' \
246+
| rsync -av --files-from=- \
247+
"$SOURCE_ROOT_DIR/extension/llm/tokenizers/include" \
248+
"$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH"
249+
)
250+
251+
cp "$SOURCE_ROOT_DIR/extension/llm/apple/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/Exported/"*.h "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME"
252+
253+
cat > "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/module.modulemap" << EOF
254+
module ${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME} {
255+
umbrella header "${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME}.h"
256+
export *
257+
}
258+
EOF
259+
205260
echo "Creating frameworks"
206261

207262
append_framework_flag() {
@@ -236,6 +291,7 @@ for mode in "${MODES[@]}"; do
236291
done
237292

238293
append_framework_flag "" "$FRAMEWORK_EXECUTORCH" "$mode"
294+
append_framework_flag "" "$FRAMEWORK_EXECUTORCH_LLM" "$mode"
239295
append_framework_flag "" "$FRAMEWORK_THREADPOOL" "$mode"
240296
append_framework_flag "EXECUTORCH_BUILD_COREML" "$FRAMEWORK_BACKEND_COREML" "$mode"
241297
append_framework_flag "EXECUTORCH_BUILD_MPS" "$FRAMEWORK_BACKEND_MPS" "$mode"

0 commit comments

Comments
 (0)