| # Alternate LLVM dependency management | |
| The default build instructions for IREE do an in-tree build of LLVM and all | |
| LLVM sub-projects in a single cmake session. While this has the fewest moving | |
| parts and allows edit-compile-run across the entire project, it is not the | |
| only way to proceed. | |
| This directory contains helpers and scripts to build-your-own LLVM and have | |
| IREE use that. LLVM is a complicated dependency to take, and not all | |
| possible installation modalities are supported. However, for those that are, | |
| we will attempt to document here and test in the CI. | |
| ## Baseline byo_llvm.sh script | |
| The baseline `byo_llvm.sh` script builds the stack of: | |
| * LLVM (with libLLVM.so) | |
| * Clang (bundled with the LLVM build) | |
| * LLD (bundled with the LLVM build) | |
| * MLIR (as a standalone installation that depends on LLVM) | |
| * IREE (depending on all of the above) | |
| This split is likely the most advanced configuration possible and represents | |
| a common use case for hardware enablement: | |
| * Often there is an LLVM installation for a part with proprietary backend, etc. | |
| * IREE is tightly coupled to MLIR, which can drift from the installed LLVM | |
| so long as there are not LLVM API breaks. | |
| * libLLVM.so is built and linked against. | |
| Note that when built in this configuration, the resulting *installed* IREE | |
| can only be used with `LD_LIBRARY_PATH` set appropriately (or if built against | |
| a system LLVM). Per usual CMake policy, binaries in the build tree will | |
| always be hard-coded to the path on the build machine and do not need this. | |
| Always make sure that there is not the same version of LLVM's shared library | |
| on your library path in a way that will cause it to take precedence. | |
| ### Usage: | |
| Note that full CMake command lines are logged so that you can create your | |
| own scripting as needed. | |
| ``` | |
| ./build_tools/llvm/byo_llvm.sh build_llvm | |
| ./build_tools/llvm/byo_llvm.sh build_mlir | |
| ./build_tools/llvm/byo_llvm.sh build_iree | |
| ``` | |
| Tests can be run with: | |
| ``` | |
| ./build_tools/llvm/byo_llvm.sh test_iree | |
| ``` |