xref: /aosp_15_r20/external/executorch/build/test_ios.sh (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1#!/bin/bash
2# Copyright (c) Meta Platforms, Inc. and affiliates.
3# All rights reserved.
4#
5# This source code is licensed under the BSD-style license found in the
6# LICENSE file in the root directory of this source tree.
7
8# Usage:
9#   ./test_ios.sh [output]
10# Arguments:
11#   output - The directory where the repository will be cloned and built.
12#            Default is 'executorch'.
13
14set -e
15
16OUTPUT="${1:-executorch}"
17EXIT_STATUS=0
18APP_PATH="examples/demo-apps/apple_ios/ExecuTorchDemo/ExecuTorchDemo"
19MODEL_NAME="mv3"
20SIMULATOR_NAME="executorch"
21
22finish() {
23  EXIT_STATUS=$?
24  if xcrun simctl list | grep -q "$SIMULATOR_NAME"; then
25    say "Deleting Simulator"
26    xcrun simctl delete "$SIMULATOR_NAME"
27  fi
28  if [ -d "$OUTPUT" ]; then
29    popd > /dev/null
30    say "Deleting Output Directory"
31    rm -rf "$OUTPUT"
32  fi
33  if [ $EXIT_STATUS -eq 0 ]; then
34    say "SUCCEEDED"
35  else
36    say "FAILED"
37  fi
38  exit $EXIT_STATUS
39}
40
41trap finish EXIT
42
43say() {
44  echo -e "\033[1m\n\t** $1 **\n\033[0m"
45}
46
47say "Cloning the Code"
48
49pushd . > /dev/null
50git clone https://github.com/pytorch/executorch.git "$OUTPUT"
51cd "$OUTPUT"
52
53say "Updating the Submodules"
54
55git submodule update --init
56
57say "Activating a Virtual Environment"
58
59python3 -m venv .venv
60source .venv/bin/activate
61
62say "Installing Requirements"
63
64pip install --upgrade cmake pip setuptools wheel zstd
65
66./install_requirements.sh --pybind coreml mps xnnpack
67export PATH="$(realpath third-party/flatbuffers/cmake-out):$PATH"
68./build/install_flatc.sh
69
70say "Installing CoreML Backend Requirements"
71
72./backends/apple/coreml/scripts/install_requirements.sh
73
74say "Installing MPS Backend Requirements"
75
76./backends/apple/mps/install_requirements.sh
77
78say "Exporting Models"
79
80python3 -m examples.portable.scripts.export --model_name="$MODEL_NAME"
81python3 -m examples.apple.coreml.scripts.export --model_name="$MODEL_NAME"
82python3 -m examples.apple.mps.scripts.mps_example --model_name="$MODEL_NAME"
83python3 -m examples.xnnpack.aot_compiler --model_name="$MODEL_NAME" --delegate
84
85mkdir -p "$APP_PATH/Resources/Models/MobileNet/"
86mv $MODEL_NAME*.pte "$APP_PATH/Resources/Models/MobileNet/"
87
88say "Downloading Labels"
89
90curl https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt \
91  -o "$APP_PATH/Resources/Models/MobileNet/imagenet_classes.txt"
92
93say "Building Frameworks"
94
95./build/build_apple_frameworks.sh --coreml --custom --mps --optimized --portable --quantized --xnnpack
96mv cmake-out "$APP_PATH/Frameworks"
97
98say "Creating Simulator"
99
100xcrun simctl create "$SIMULATOR_NAME" "iPhone 15"
101
102say "Running Tests"
103
104xcodebuild test \
105  -project "$APP_PATH.xcodeproj" \
106  -scheme MobileNetClassifierTest \
107  -destination name="$SIMULATOR_NAME"
108