- Accelerators
* - Arm
- kvm (64 bit only), tcg, xen
- * - MIPS
+ * - MIPS (little endian only)
- kvm, tcg
* - PPC
- kvm, tcg
* - RISC-V
- - tcg
+ - kvm, tcg
* - s390x
- kvm, tcg
* - SPARC
Linux OS, macOS, FreeBSD, NetBSD, OpenBSD
-----------------------------------------
-The project aims to support the most recent major version at all times. Support
+The project aims to support the most recent major version at all times for
+up to five years after its initial release. Support
for the previous major version will be dropped 2 years after the new major
version is released or when the vendor itself drops support, whichever comes
first. In this context, third-party efforts to extend the lifetime of a distro
-are not considered, even when they are endorsed by the vendor (eg. Debian LTS).
+are not considered, even when they are endorsed by the vendor (eg. Debian LTS);
+the same is true of repositories that contain packages backported from later
+releases (e.g. Debian backports). Within each major release, only the most
+recent minor release is considered.
For the purposes of identifying supported software versions available on Linux,
the project will look at CentOS, Debian, Fedora, openSUSE, RHEL, SLES and
For macOS, `Homebrew`_ will be used, although `MacPorts`_ is expected to carry
similar versions.
+Some build dependencies may follow less conservative rules:
+
+Python runtime
+ Distributions with long-term support often provide multiple versions
+ of the Python runtime. While QEMU will initially aim to support the
+ distribution's default runtime, it may later increase its minimum version
+ to any newer python that is available as an option from the vendor.
+ In this case, it will be necessary to use the ``--python`` command line
+ option of the ``configure`` script to point QEMU to a supported
+ version of the Python runtime.
+
+ As of QEMU |version|, the minimum supported version of Python is 3.6.
+
+Python build dependencies
+ Some of QEMU's build dependencies are written in Python. Usually these
+ are only packaged by distributions for the default Python runtime.
+ If QEMU bumps its minimum Python version and a non-default runtime is
+ required, it may be necessary to fetch python modules from the Python
+ Package Index (PyPI) via ``pip``, in order to build QEMU.
+
+Optional build dependencies
+ Build components whose absence does not affect the ability to build
+ QEMU may not be available in distros, or may be too old for QEMU's
+ requirements. Many of these, such as the Avocado testing framework
+ or various linters, are written in Python and therefore can also
+ be installed using ``pip``. Cross compilers are another example
+ of optional build-time dependency; in this case it is possible to
+ download them from repositories such as EPEL, to use container-based
+ cross compilation using ``docker`` or ``podman``, or to use pre-built
+ binaries distributed with QEMU.
+
+
Windows
-------
-The project supports building with current versions of the MinGW toolchain,
-hosted on Linux (Debian/Fedora).
-
-The version of the Windows API that's currently targeted is Vista / Server
-2008.
+The project aims to support the two most recent versions of Windows that are
+still supported by the vendor. The minimum Windows API that is currently
+targeted is "Windows 8", so theoretically the QEMU binaries can still be run
+on older versions of Windows, too. However, such old versions of Windows are
+not tested anymore, so it is recommended to use one of the latest versions of
+Windows instead.
+
+The project supports building QEMU with current versions of the MinGW
+toolchain, either hosted on Linux (Debian/Fedora) or via `MSYS2`_ on Windows.
+A more recent Windows version is always preferred as it is less likely to have
+problems with building via MSYS2. The building process of QEMU involves some
+Python scripts that call os.symlink() which needs special attention for the
+build process to successfully complete. On newer versions of Windows 10,
+unprivileged accounts can create symlinks if Developer Mode is enabled.
+When Developer Mode is not available/enabled, the SeCreateSymbolicLinkPrivilege
+privilege is required, or the process must be run as an administrator.
.. _Homebrew: https://brew.sh/
.. _MacPorts: https://www.macports.org/
+.. _MSYS2: https://www.msys2.org/
.. _Repology: https://repology.org/