The build system of cg_clif.

USAGE:
    ./y.sh prepare [--out-dir DIR] [--download-dir DIR]
    ./y.sh build [--debug] [--sysroot none|clif|llvm] [--out-dir DIR] [--download-dir DIR] [--no-unstable-features] [--frozen]
    ./y.sh test [--debug] [--sysroot none|clif|llvm] [--out-dir DIR] [--download-dir DIR] [--no-unstable-features] [--frozen] [--skip-test TESTNAME]
    ./y.sh abi-cafe [--debug] [--sysroot none|clif|llvm] [--out-dir DIR] [--download-dir DIR] [--no-unstable-features] [--frozen]
    ./y.sh bench [--debug] [--sysroot none|clif|llvm] [--out-dir DIR] [--download-dir DIR] [--no-unstable-features] [--frozen]

OPTIONS:
    --debug
            Build cg_clif and the standard library in debug mode rather than release mode.
            Warning: An unoptimized cg_clif is very slow.

    --sysroot none|clif|llvm
            Which sysroot libraries to use:
            `none` will not include any standard library in the sysroot.
            `clif` will build the standard library using Cranelift.
            `llvm` will use the pre-compiled standard library of rustc which is compiled with LLVM.

    --out-dir DIR
            Specify the directory in which the download, build and dist directories are stored.
            By default this is the working directory.

    --download-dir DIR
            Specify the directory in which the download directory is stored. Overrides --out-dir.

    --no-unstable-features
            Some features are not yet ready for production usage. This option will disable these
            features. This includes the JIT mode and inline assembly support.

    --frozen
            Require Cargo.lock and cache are up to date

    --skip-test TESTNAME
            Skip testing the TESTNAME test. The test name format is the same as config.txt.

    --use-backend NAME
            Use the existing Cranelift (or other) backend of the rustc with which we built.
            Warning: This is meant for use in rust's CI only!

REQUIREMENTS:
    * Rustup: By default rustup is used to install the right nightly version. If you don't want to
      use rustup, you can manually install the nightly version indicated by rust-toolchain.toml and
      point the CARGO, RUSTC and RUSTDOC env vars to the right executables.
    * Git: Git is used for applying patches and on Windows for downloading test repos.
    * Curl and tar (non-Windows only): Used by `./y.sh prepare` to download a single commit for
      repos. Git will be used to clone the whole repo when using Windows.
    * [Hyperfine](https://github.com/sharkdp/hyperfine/): Used for benchmarking with `./y.sh bench`.
