Skip to content
Merged
1 change: 1 addition & 0 deletions .Package.swift/executorch_llm/dummy.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions .Package.swift/executorch_llm_debug/dummy.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

5 changes: 5 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ let products = deliverables([
"c++",
],
],
"executorch_llm": [
"targets": [
"executorch",
],
],
"kernels_llm": [:],
"kernels_optimized": [
"frameworks": [
Expand Down
56 changes: 56 additions & 0 deletions scripts/build_apple_frameworks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,29 @@ libextension_module.a,\
libextension_tensor.a,\
:${FRAMEWORK_EXECUTORCH_HEADERS_DIR}:${FRAMEWORK_EXECUTORCH_MODULE_NAME}"

FRAMEWORK_EXECUTORCH_LLM_NAME="executorch_llm"
FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME="ExecuTorchLLM"
FRAMEWORK_EXECUTORCH_LLM_HEADERS_DIR="${FRAMEWORK_EXECUTORCH_LLM_NAME}_include"
FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH="${OUTPUT_DIR}/${FRAMEWORK_EXECUTORCH_LLM_HEADERS_DIR}"
FRAMEWORK_EXECUTORCH_LLM="${FRAMEWORK_EXECUTORCH_LLM_NAME}:\
libabsl_hash.a,\
libabsl_int128.a,\
libabsl_log_initialize.a,\
libabsl_log_internal_format.a,\
libabsl_log_internal_log_sink_set.a,\
libabsl_log_internal_message.a,\
libabsl_spinlock_wait.a,\
libabsl_str_format_internal.a,\
libabsl_strings.a,\
libabsl_strings_internal.a,\
libabsl_time.a,\
libabsl_time_zone.a,\
libextension_llm_runner.a,\
libre2.a,\
libsentencepiece.a,\
libtokenizers.a,\
:${FRAMEWORK_EXECUTORCH_LLM_HEADERS_DIR}"

FRAMEWORK_THREADPOOL="threadpool:\
libcpuinfo.a,\
libextension_threadpool.a,\
Expand Down Expand Up @@ -171,6 +194,8 @@ done

echo "Exporting headers"

# FRAMEWORK_EXECUTORCH

mkdir -p "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME"

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

# FRAMEWORK_EXECUTORCH_LLM

mkdir -p "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME"

"$SOURCE_ROOT_DIR"/scripts/print_exported_headers.py \
--buck2="$(realpath "$BUCK2")" \
--targets //extension/llm/runner:runner_lib \
| tee \
>(
grep '^extension/llm/' \
| rsync -av --files-from=- \
"$SOURCE_ROOT_DIR" \
"$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH"
) \
>(
grep '^pytorch/tokenizers/' \
| rsync -av --files-from=- \
"$SOURCE_ROOT_DIR/extension/llm/tokenizers/include" \
"$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH"
)

cp "$SOURCE_ROOT_DIR/extension/llm/apple/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/Exported/"*.h "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME"

cat > "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/module.modulemap" << EOF
module ${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME} {
umbrella header "${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME}.h"
export *
}
EOF

echo "Creating frameworks"

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

append_framework_flag "" "$FRAMEWORK_EXECUTORCH" "$mode"
append_framework_flag "" "$FRAMEWORK_EXECUTORCH_LLM" "$mode"
append_framework_flag "" "$FRAMEWORK_THREADPOOL" "$mode"
append_framework_flag "EXECUTORCH_BUILD_COREML" "$FRAMEWORK_BACKEND_COREML" "$mode"
append_framework_flag "EXECUTORCH_BUILD_MPS" "$FRAMEWORK_BACKEND_MPS" "$mode"
Expand Down
Loading