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