| # Python packaging scripts. | 
 |  | 
 | Note that packages will be placed in `packaging/python/dist` with the canonical | 
 | instructions. However, the setup scripts can be run from anywhere and will | 
 | create `build` and `dist` directories where run. Wheels can be installed with | 
 | `pip3 install --user dist/*.whl`. | 
 |  | 
 | ## Building core wheels with CMake | 
 |  | 
 | Most of IREE is built/packaged with CMake. For the parts that build with CMake, | 
 | this is preferred. | 
 |  | 
 | Canonical instructions follow: | 
 |  | 
 | ### Linux | 
 |  | 
 | ```shell | 
 | export LDFLAGS=-fuse-ld=/usr/bin/ld.lld | 
 | export PYIREE_CMAKE_BUILD_ROOT="${HOME?}/build-iree-release" | 
 | export IREE_SRC="${HOME?}/src/iree" | 
 | rm -Rf "${PYIREE_CMAKE_BUILD_ROOT?}"; mkdir -p "${PYIREE_CMAKE_BUILD_ROOT?}" | 
 | cmake -GNinja -B"${PYIREE_CMAKE_BUILD_ROOT?}" -H"${IREE_SRC}" \ | 
 |   -DCMAKE_BUILD_TYPE=Release \ | 
 |   -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ | 
 |   -DIREE_BUILD_PYTHON_BINDINGS=ON -DIREE_BUILD_SAMPLES=OFF | 
 | (cd "${PYIREE_CMAKE_BUILD_ROOT?}" && ninja) | 
 | (cd "${IREE_SRC?}/packaging/python" && ( | 
 |   rm -Rf build; | 
 |   python3 setup_compiler.py bdist_wheel; | 
 |   rm -Rf build; | 
 |   python3 setup_rt.py bdist_wheel)) | 
 | ``` | 
 |  | 
 | ## Building IREE/TensorFlow wheels | 
 |  | 
 | If building TensorFlow integration wheels, then this must be done via Bazel. In | 
 | this case, it can be easiest to just package everything from a Bazel build to | 
 | avoid multiple steps. | 
 |  | 
 | Canonical instructions follow: | 
 |  | 
 | ### Env Setup | 
 |  | 
 | ```shell | 
 | IREE_SRC=$HOME/src/iree | 
 | export PYIREE_BAZEL_BUILD_ROOT="$IREE_SRC/bazel-bin" | 
 | if which cygpath; then | 
 |   export PYIREE_BAZEL_BUILD_ROOT="$(cygpath -w "$PYIREE_BAZEL_BUILD_ROOT")" | 
 | fi | 
 | ``` | 
 |  | 
 | ### Building: | 
 |  | 
 | Optionally add: `--define=PYIREE_TF_DISABLE_KERNELS=1` to build a 'thin' (less | 
 | functional) version without TensorFlow kernels. This should not be done for | 
 | released binaries but can help while developing. | 
 |  | 
 | Note that bazel does not always build properly named artifacts. See the tool | 
 | `hack_python_package_from_runfiles.py` to extract and fixup artifacts from a | 
 | bazel-bin directory. If using this mechanism, then the environment variable | 
 | `PYIREE_PYTHON_ROOT` should be set to a suitable temp directory. | 
 |  | 
 | ```shell | 
 | cd $IREE_SRC | 
 | bazel build -c opt \ | 
 |   //packaging/python:all_pyiree_packages | 
 | ``` | 
 |  | 
 | # Packaging | 
 |  | 
 | ```shell | 
 | (cd $IREE_SRC/packaging/python && ( | 
 |   rm -Rf build; | 
 |   python3 setup_tf.py bdist_wheel)) | 
 | ``` | 
 |  | 
 | ```shell | 
 | (cd $IREE_SRC/packaging/python && ( | 
 |   rm -Rf build; | 
 |   python3 setup_compiler.py bdist_wheel)) | 
 | ``` | 
 |  | 
 | ```shell | 
 | (cd $IREE_SRC/packaging/python && ( | 
 |   rm -Rf build; | 
 |   python3 setup_rt.py bdist_wheel)) | 
 | ``` |