#!/bin/bash # Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. # Builds example_runner and prints its path. set -euo pipefail SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" readonly SCRIPT_DIR readonly EXECUTORCH_ROOT="${SCRIPT_DIR}/../.." # Allow overriding the number of build jobs. Default to 9. export CMAKE_BUILD_PARALLEL_LEVEL="${CMAKE_BUILD_PARALLEL_LEVEL:-9}" BUILD_COREML=OFF usage() { echo "Builds example runner." echo "Options:" echo " --coreml Include this flag to enable Core ML backend when building the Developer Tools." exit 0 } for arg in "$@"; do case $arg in -h|--help) usage ;; --coreml) BUILD_COREML=ON ;; *) esac done main() { cd "${EXECUTORCH_ROOT}" rm -rf cmake-out if [[ "${BUILD_COREML}" == "ON" ]]; then cmake -DCMAKE_INSTALL_PREFIX=cmake-out \ -DCMAKE_BUILD_TYPE=Release \ -DEXECUTORCH_BUILD_DEVTOOLS=ON \ -DEXECUTORCH_ENABLE_EVENT_TRACER=ON \ -DEXECUTORCH_BUILD_COREML=ON \ -Dprotobuf_BUILD_TESTS=OFF \ -Dprotobuf_BUILD_EXAMPLES=OFF \ -DEXECUTORCH_ENABLE_LOGGING=ON \ -Bcmake-out . else cmake -DCMAKE_INSTALL_PREFIX=cmake-out \ -DCMAKE_BUILD_TYPE=Release \ -DEXECUTORCH_BUILD_DEVTOOLS=ON \ -DEXECUTORCH_ENABLE_EVENT_TRACER=ON \ -Bcmake-out . fi cmake --build cmake-out --target install --config Release local example_dir=examples/devtools local build_dir="cmake-out/${example_dir}" local cmake_prefix_path="${PWD}/cmake-out/lib/cmake/ExecuTorch;${PWD}/cmake-out/third-party/gflags" rm -rf ${build_dir} cmake -DCMAKE_PREFIX_PATH="${cmake_prefix_path}" \ -DCMAKE_BUILD_TYPE=Release \ -DEXECUTORCH_BUILD_COREML=$BUILD_COREML \ -B"${build_dir}" \ "${example_dir}" cmake --build "${build_dir}" --config Release local runner="${PWD}/${build_dir}/example_runner" if [[ ! -f "${runner}" ]]; then echo "ERROR: Failed to build ${build_dir}/example_runner" >&2 exit 1 else echo "Built ${build_dir}/example_runner" fi } main "$@"