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 8set -eux 9set -o xtrace 10 11build_qnn_backend() { 12 echo "Start building qnn backend." 13 export ANDROID_NDK_ROOT=/opt/ndk 14 export QNN_SDK_ROOT=/tmp/qnn/2.25.0.240728 15 export EXECUTORCH_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)" 16 17 bash backends/qualcomm/scripts/build.sh --skip_aarch64 --job_number 2 --release 18} 19 20set_up_aot() { 21 cd $EXECUTORCH_ROOT 22 if [ ! -d "cmake-out" ]; then 23 mkdir cmake-out 24 fi 25 pushd cmake-out 26 cmake .. \ 27 -DCMAKE_INSTALL_PREFIX=$PWD \ 28 -DEXECUTORCH_BUILD_QNN=ON \ 29 -DQNN_SDK_ROOT=${QNN_SDK_ROOT} \ 30 -DEXECUTORCH_BUILD_DEVTOOLS=ON \ 31 -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ 32 -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ 33 -DEXECUTORCH_ENABLE_EVENT_TRACER=ON \ 34 -DPYTHON_EXECUTABLE=python3 \ 35 -DEXECUTORCH_SEPARATE_FLATCC_HOST_PROJECT=OFF 36 cmake --build $PWD --target "PyQnnManagerAdaptor" "PyQnnWrapperAdaptor" -j$(nproc) 37 # install Python APIs to correct import path 38 # The filename might vary depending on your Python and host version. 39 cp -f backends/qualcomm/PyQnnManagerAdaptor.cpython-310-x86_64-linux-gnu.so $EXECUTORCH_ROOT/backends/qualcomm/python 40 cp -f backends/qualcomm/PyQnnWrapperAdaptor.cpython-310-x86_64-linux-gnu.so $EXECUTORCH_ROOT/backends/qualcomm/python 41 popd 42 43 # Workaround for fbs files in exir/_serialize 44 cp schema/program.fbs exir/_serialize/program.fbs 45 cp schema/scalar_type.fbs exir/_serialize/scalar_type.fbs 46} 47 48build_qnn_backend 49set_up_aot 50