xref: /aosp_15_r20/external/executorch/.ci/scripts/build-qnn-sdk.sh (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker#!/bin/bash
2*523fa7a6SAndroid Build Coastguard Worker# Copyright (c) Meta Platforms, Inc. and affiliates.
3*523fa7a6SAndroid Build Coastguard Worker# All rights reserved.
4*523fa7a6SAndroid Build Coastguard Worker#
5*523fa7a6SAndroid Build Coastguard Worker# This source code is licensed under the BSD-style license found in the
6*523fa7a6SAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree.
7*523fa7a6SAndroid Build Coastguard Worker
8*523fa7a6SAndroid Build Coastguard Workerset -eux
9*523fa7a6SAndroid Build Coastguard Workerset -o xtrace
10*523fa7a6SAndroid Build Coastguard Worker
11*523fa7a6SAndroid Build Coastguard Workerbuild_qnn_backend() {
12*523fa7a6SAndroid Build Coastguard Worker  echo "Start building qnn backend."
13*523fa7a6SAndroid Build Coastguard Worker  export ANDROID_NDK_ROOT=/opt/ndk
14*523fa7a6SAndroid Build Coastguard Worker  export QNN_SDK_ROOT=/tmp/qnn/2.25.0.240728
15*523fa7a6SAndroid Build Coastguard Worker  export EXECUTORCH_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
16*523fa7a6SAndroid Build Coastguard Worker
17*523fa7a6SAndroid Build Coastguard Worker  bash backends/qualcomm/scripts/build.sh --skip_aarch64 --job_number 2 --release
18*523fa7a6SAndroid Build Coastguard Worker}
19*523fa7a6SAndroid Build Coastguard Worker
20*523fa7a6SAndroid Build Coastguard Workerset_up_aot() {
21*523fa7a6SAndroid Build Coastguard Worker  cd $EXECUTORCH_ROOT
22*523fa7a6SAndroid Build Coastguard Worker  if [ ! -d "cmake-out" ]; then
23*523fa7a6SAndroid Build Coastguard Worker      mkdir cmake-out
24*523fa7a6SAndroid Build Coastguard Worker  fi
25*523fa7a6SAndroid Build Coastguard Worker  pushd cmake-out
26*523fa7a6SAndroid Build Coastguard Worker  cmake .. \
27*523fa7a6SAndroid Build Coastguard Worker      -DCMAKE_INSTALL_PREFIX=$PWD \
28*523fa7a6SAndroid Build Coastguard Worker      -DEXECUTORCH_BUILD_QNN=ON \
29*523fa7a6SAndroid Build Coastguard Worker      -DQNN_SDK_ROOT=${QNN_SDK_ROOT} \
30*523fa7a6SAndroid Build Coastguard Worker      -DEXECUTORCH_BUILD_DEVTOOLS=ON \
31*523fa7a6SAndroid Build Coastguard Worker      -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \
32*523fa7a6SAndroid Build Coastguard Worker      -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \
33*523fa7a6SAndroid Build Coastguard Worker      -DEXECUTORCH_ENABLE_EVENT_TRACER=ON \
34*523fa7a6SAndroid Build Coastguard Worker      -DPYTHON_EXECUTABLE=python3 \
35*523fa7a6SAndroid Build Coastguard Worker      -DEXECUTORCH_SEPARATE_FLATCC_HOST_PROJECT=OFF
36*523fa7a6SAndroid Build Coastguard Worker  cmake --build $PWD --target "PyQnnManagerAdaptor" "PyQnnWrapperAdaptor" -j$(nproc)
37*523fa7a6SAndroid Build Coastguard Worker  # install Python APIs to correct import path
38*523fa7a6SAndroid Build Coastguard Worker  # The filename might vary depending on your Python and host version.
39*523fa7a6SAndroid Build Coastguard Worker  cp -f backends/qualcomm/PyQnnManagerAdaptor.cpython-310-x86_64-linux-gnu.so $EXECUTORCH_ROOT/backends/qualcomm/python
40*523fa7a6SAndroid Build Coastguard Worker  cp -f backends/qualcomm/PyQnnWrapperAdaptor.cpython-310-x86_64-linux-gnu.so $EXECUTORCH_ROOT/backends/qualcomm/python
41*523fa7a6SAndroid Build Coastguard Worker  popd
42*523fa7a6SAndroid Build Coastguard Worker
43*523fa7a6SAndroid Build Coastguard Worker  # Workaround for fbs files in exir/_serialize
44*523fa7a6SAndroid Build Coastguard Worker  cp schema/program.fbs exir/_serialize/program.fbs
45*523fa7a6SAndroid Build Coastguard Worker  cp schema/scalar_type.fbs exir/_serialize/scalar_type.fbs
46*523fa7a6SAndroid Build Coastguard Worker}
47*523fa7a6SAndroid Build Coastguard Worker
48*523fa7a6SAndroid Build Coastguard Workerbuild_qnn_backend
49*523fa7a6SAndroid Build Coastguard Workerset_up_aot
50