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
.
Most of IREE is built/packaged with CMake. For the parts that build with CMake, this is preferred.
Canonical instructions follow:
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))
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:
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
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.
cd $IREE_SRC bazel build -c opt \ //packaging/python:all_pyiree_packages
(cd $IREE_SRC/packaging/python && ( rm -Rf build; python3 setup_tf.py bdist_wheel))
(cd $IREE_SRC/packaging/python && ( rm -Rf build; python3 setup_compiler.py bdist_wheel))
(cd $IREE_SRC/packaging/python && ( rm -Rf build; python3 setup_rt.py bdist_wheel))