| #!/usr/bin/env bash | 
 |  | 
 | set -e | 
 |  | 
 | PROGNAME="$(basename "${0}")" | 
 | MONOREPO_ROOT="$(realpath $(dirname "${PROGNAME}"))" | 
 | function usage() { | 
 | cat <<EOF | 
 | Usage: | 
 | ${PROGNAME} [-h|--help] <build-directory> benchmarks... | 
 |  | 
 | Print the path to the JSON files containing benchmark results for the given benchmarks. | 
 |  | 
 | This requires those benchmarks to have already been run, i.e. this only resolves the path | 
 | to the benchmark .json file within the build directory. | 
 |  | 
 | <build-directory>  The path to the build directory. | 
 | benchmarks...      Paths of the benchmarks to extract the results for. Those paths are relative to '<monorepo-root>'. | 
 |  | 
 | Example | 
 | ======= | 
 | $ cmake -S runtimes -B build/ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" | 
 | $ libcxx-lit build/ -sv libcxx/test/benchmarks/algorithms/for_each.bench.cpp | 
 | $ less \$(${PROGNAME} build/ libcxx/test/benchmarks/algorithms/for_each.bench.cpp) | 
 | EOF | 
 | } | 
 |  | 
 | if [[ "${1}" == "-h" || "${1}" == "--help" ]]; then | 
 |     usage | 
 |     exit 0 | 
 | fi | 
 |  | 
 | if [[ $# -lt 1 ]]; then | 
 |     usage | 
 |     exit 1 | 
 | fi | 
 |  | 
 | build_dir="${1}" | 
 | shift | 
 |  | 
 | for benchmark in ${@}; do | 
 |     # Normalize the paths by turning all benchmarks paths into absolute ones and then making them | 
 |     # relative to the root of the monorepo. | 
 |     benchmark="$(realpath ${benchmark})" | 
 |     relative=$(python -c "import os; import sys; print(os.path.relpath(sys.argv[1], sys.argv[2]))" "${benchmark}" "${MONOREPO_ROOT}") | 
 |  | 
 |     # Extract components of the benchmark path | 
 |     directory="$(dirname ${relative})" | 
 |     file="$(basename ${relative})" | 
 |  | 
 |     # Reconstruct the (slightly weird) path to the benchmark json file. This should be kept in sync | 
 |     # whenever the test suite changes. | 
 |     json="${build_dir}/${directory}/Output/${file}.dir/benchmark-result.json" | 
 |     if [[ -f "${json}" ]]; then | 
 |         echo "${json}" | 
 |     fi | 
 | done |