Skip to content

Commit 40f4216

Browse files
authored
Add executorch_llm xcframework bundling extension/llm (#12606)
1 parent afb26e9 commit 40f4216

File tree

4 files changed

+76
-0
lines changed

4 files changed

+76
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

Package.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ let products = deliverables([
6969
"c++",
7070
],
7171
],
72+
"executorch_llm": [
73+
"targets": [
74+
"executorch",
75+
],
76+
],
7277
"kernels_llm": [:],
7378
"kernels_optimized": [
7479
"frameworks": [

scripts/build_apple_frameworks.sh

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,58 @@ 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_base.a,\
43+
libabsl_city.a,\
44+
libabsl_decode_rust_punycode.a,\
45+
libabsl_demangle_internal.a,\
46+
libabsl_demangle_rust.a,\
47+
libabsl_examine_stack.a,\
48+
libabsl_graphcycles_internal.a,\
49+
libabsl_hash.a,\
50+
libabsl_int128.a,\
51+
libabsl_kernel_timeout_internal.a,\
52+
libabsl_leak_check.a,\
53+
libabsl_log_globals.a,\
54+
libabsl_log_internal_check_op.a,\
55+
libabsl_log_internal_format.a,\
56+
libabsl_log_internal_globals.a,\
57+
libabsl_log_internal_log_sink_set.a,\
58+
libabsl_log_internal_message.a,\
59+
libabsl_log_internal_nullguard.a,\
60+
libabsl_log_internal_proto.a,\
61+
libabsl_log_severity.a,\
62+
libabsl_log_sink.a,\
63+
libabsl_low_level_hash.a,\
64+
libabsl_malloc_internal.a,\
65+
libabsl_raw_hash_set.a,\
66+
libabsl_raw_logging_internal.a,\
67+
libabsl_spinlock_wait.a,\
68+
libabsl_stacktrace.a,\
69+
libabsl_str_format_internal.a,\
70+
libabsl_strerror.a,\
71+
libabsl_strings.a,\
72+
libabsl_strings_internal.a,\
73+
libabsl_symbolize.a,\
74+
libabsl_synchronization.a,\
75+
libabsl_throw_delegate.a,\
76+
libabsl_time.a,\
77+
libabsl_time_zone.a,\
78+
libabsl_tracing_internal.a,\
79+
libabsl_utf8_for_code_point.a,\
80+
libextension_llm_apple.a,\
81+
libextension_llm_runner.a,\
82+
libpcre2-8.a,\
83+
libre2.a,\
84+
libregex_lookahead.a,\
85+
libsentencepiece.a,\
86+
libtokenizers.a,\
87+
:${FRAMEWORK_EXECUTORCH_LLM_HEADERS_DIR}"
88+
3789
FRAMEWORK_THREADPOOL="threadpool:\
3890
libcpuinfo.a,\
3991
libextension_threadpool.a,\
@@ -171,6 +223,8 @@ done
171223

172224
echo "Exporting headers"
173225

226+
# FRAMEWORK_EXECUTORCH
227+
174228
mkdir -p "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME"
175229

176230
"$SOURCE_ROOT_DIR"/scripts/print_exported_headers.py --buck2=$(realpath "$BUCK2") --targets \
@@ -202,6 +256,19 @@ module ${FRAMEWORK_EXECUTORCH_MODULE_NAME} {
202256
}
203257
EOF
204258

259+
# FRAMEWORK_EXECUTORCH_LLM
260+
261+
mkdir -p "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME"
262+
263+
cp "$SOURCE_ROOT_DIR/extension/llm/apple/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/Exported/"*.h "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME"
264+
265+
cat > "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/module.modulemap" << EOF
266+
module ${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME} {
267+
umbrella header "${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME}.h"
268+
export *
269+
}
270+
EOF
271+
205272
echo "Creating frameworks"
206273

207274
append_framework_flag() {
@@ -236,6 +303,7 @@ for mode in "${MODES[@]}"; do
236303
done
237304

238305
append_framework_flag "" "$FRAMEWORK_EXECUTORCH" "$mode"
306+
append_framework_flag "" "$FRAMEWORK_EXECUTORCH_LLM" "$mode"
239307
append_framework_flag "" "$FRAMEWORK_THREADPOOL" "$mode"
240308
append_framework_flag "EXECUTORCH_BUILD_COREML" "$FRAMEWORK_BACKEND_COREML" "$mode"
241309
append_framework_flag "EXECUTORCH_BUILD_MPS" "$FRAMEWORK_BACKEND_MPS" "$mode"
@@ -255,6 +323,7 @@ for preset_out_dir in "${PRESETS_RELATIVE_OUT_DIR[@]}"; do
255323
done
256324

257325
rm -rf "$FRAMEWORK_EXECUTORCH_HEADERS_PATH"
326+
rm -rf "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH"
258327

259328
echo "Running tests"
260329

0 commit comments

Comments
 (0)