#!/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. set -o errexit set -o nounset set -o pipefail # The directory containing this shell script, regardless of the CWD when it # was invoked. SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)" readonly SCRIPT_DIR # The fbsource root that contains this script, even if it was run from xplat. FBSOURCE_DIR="$(cd -- "${SCRIPT_DIR}" && hg root)" readonly FBSOURCE_DIR # The buck target that generates the header file. readonly GENRULE_TARGET='fbcode//executorch/kernels/portable:generated_lib_combined' # Prints the path to the generated NativeFunctions.h to stdout. print_header_path() { # buck2 will produce a line like # fbcode//executorch/kernels/portable:generated_lib_combined[NativeFunctions.h] buck-out/v2/gen/fbcode/d839c731f5505c62/executorch/codegen/__generated_lib_combined__/out/NativeFunctions.h # The sed command chops off everything before the space character. # The relative path is relative to fbsource, so we print that first. echo -n "${FBSOURCE_DIR}/" ( cd "${FBSOURCE_DIR}/fbcode" buck2 build --show-output \ "${GENRULE_TARGET}[NativeFunctions.h]" 2>&1 \ | grep '/NativeFunctions.h' \ | head -1 \ | sed -e 's/.* //' ) } main() { echo "===== Generating header files =====" ( cd "${FBSOURCE_DIR}/fbcode" buck2 build "${GENRULE_TARGET}" ) echo "" echo "Header file: $(print_header_path)" } main "$@"