| # Constant: location of the custom tool binaries in the dev container | |
| DEV_CONTAINER_BIN="/cheriot-tools/bin/" | |
| # Finds location of a given LLVM tool on the system. | |
| # | |
| # Argument 1: name of the LLVM tool to find (e.g., | |
| # `llvm-objdump`, `llvm-objcopy`) | |
| find_llvm_tool() { | |
| TOOL_NAME=$1 | |
| LLVM_TOOL=${TOOL_NAME} | |
| if ! type ${LLVM_TOOL} >/dev/null 2>&1 ; then | |
| FROM_DEV_CONTAINER="${DEV_CONTAINER_BIN}/${TOOL_NAME}" | |
| if [ -x "${FROM_DEV_CONTAINER}" ] ; then | |
| LLVM_TOOL=${FROM_DEV_CONTAINER} | |
| else | |
| if [ -n "${TOOLS_PATH}" ] ; then | |
| WITH_TOOLS_PATH_SET="${TOOLS_PATH}/${TOOL_NAME}" | |
| if [ -x "${WITH_TOOLS_PATH_SET}" ] ; then | |
| LLVM_TOOL=${WITH_TOOLS_PATH_SET} | |
| fi | |
| fi | |
| fi | |
| fi | |
| echo "${LLVM_TOOL}" | |
| } | |
| # Wrapper for `find_llvm_tool` that does `exit 1` with an error message if the | |
| # tool cannot be found. | |
| # | |
| # Arguments are the same as `find_llvm_tool`. | |
| find_llvm_tool_required() { | |
| LLVM_TOOL=$(find_llvm_tool $1) | |
| if [ ! -x ${LLVM_TOOL} ] ; then | |
| echo Unable to locate $1, please set TOOLS_PATH to the directory containing the LLVM toolchain. | |
| exit 1 | |
| fi | |
| echo "${LLVM_TOOL}" | |
| } |