| #!/usr/bin/env bash | |
| set -e | |
| PROGNAME="$(basename "${0}")" | |
| function usage() { | |
| cat <<EOF | |
| Usage: | |
| ${PROGNAME} [-h|--help] [-b|--bootstrap] <build-directory> [lit options...] tests... | |
| Shortcut to build the libc++ testing dependencies and run the libc++ tests with Lit. | |
| [-b|--bootstrap] Configure tests to run against a bootstrap build of libcxx. | |
| <build-directory> The path to the build directory to use for building the library. | |
| [lit options...] Optional options to pass to 'llvm-lit'. | |
| tests... Paths of the tests to run. Those paths are relative to '<monorepo-root>'. | |
| Environment variables | |
| CMAKE The cmake binary to use. This variable is optional. | |
| Example | |
| ======= | |
| $ cmake -S runtimes -B build/ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" | |
| $ libcxx-lit build/ -sv libcxx/test/std/utilities/ | |
| EOF | |
| } | |
| type="cxx" | |
| if [[ "${1}" == "-h" || "${1}" == "--help" ]]; then | |
| usage | |
| exit 0 | |
| fi | |
| if [[ "${1}" == "-b" || "${1}" == "--bootstrap" ]]; then | |
| type="runtimes" | |
| shift | |
| fi | |
| if [[ $# -lt 1 ]]; then | |
| usage | |
| exit 1 | |
| fi | |
| build_dir="${1}" | |
| shift | |
| if [ -z ${CMAKE+x} ]; then | |
| CMAKE=cmake | |
| fi | |
| if [[ "${type}" == "runtimes" ]]; then | |
| echo "N.B.: In a bootstrap build, lit needs a prefix to work correctly;" | |
| echo " See libcxx/docs/Testinglibcxx.rst for more information." | |
| fi | |
| "${CMAKE}" --build "${build_dir}" --target ${type}-test-depends | |
| "${build_dir}/bin/llvm-lit" ${@} |