|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2] xen: Add macOS hypervisor build configuration
On Thu, Feb 05, 2026 at 12:33:54PM +0100, Bertrand Marquis wrote: > Xen does not currently document how to build the hypervisor on macOS, and > there is no Darwin configuration for selecting a Homebrew-based GNU > toolchain. Native builds are not supported; the hypervisor must be > cross-built with a GNU toolchain and GNU make/sed. > > Add a minimal Darwin.mk which selects the GNU tool definitions used by > the macOS workflow and point to the build guide for required tools and > setup. Document the Homebrew cross toolchain and GNU tools needed to > build the hypervisor on macOS. > > Signed-off-by: Bertrand Marquis <bertrand.marquis@xxxxxxx> > --- > config/Darwin.mk | 6 ++++ > docs/misc/build-on-macos.md | 66 +++++++++++++++++++++++++++++++++++++ > 2 files changed, 72 insertions(+) > create mode 100644 config/Darwin.mk > create mode 100644 docs/misc/build-on-macos.md > > diff --git a/config/Darwin.mk b/config/Darwin.mk > new file mode 100644 > index 000000000000..a4e3efa81842 > --- /dev/null > +++ b/config/Darwin.mk > @@ -0,0 +1,6 @@ > +# Use GNU tool definitions; the macOS workflow relies on Homebrew GNU tools. > +# See docs/misc/build-on-macos.md for required tools and setup. > +include $(XEN_ROOT)/config/StdGNU.mk > + > +# We are always cross compiling so fake COMPILE_ARCH > +XEN_COMPILE_ARCH = Darwin > diff --git a/docs/misc/build-on-macos.md b/docs/misc/build-on-macos.md > new file mode 100644 > index 000000000000..6b56cd8eccab > --- /dev/null > +++ b/docs/misc/build-on-macos.md > @@ -0,0 +1,66 @@ > +# Building Xen Hypervisor on macOS > + > +This guide explains how to cross-compile the Xen hypervisor (xen > +subdirectory only) on macOS. This does **not** build the tools. More on this below, I'm not sure I would call it a "cross-compile". Only when doing so from a x86 silicon Mac? > +## Prerequisites > + > +Install the following packages using Homebrew: > + > +```bash > +# Cross-compilation toolchain for ARM64 > +brew install aarch64-elf-gcc > + > +# GNU tools (required for compatibility) > +brew install make gnu-sed > +``` Installing make / sed are not strictly needed. > + > +Homebrew installs under `/opt/homebrew` on Apple Silicon and `/usr/local` on > +Intel Macs. Adjust paths below accordingly. > + > +### Verification > + > +Verify your installation: > + > +```bash > +# Check cross compiler > +aarch64-elf-gcc --version > + > +# Check GNU make (adjust prefix if needed) > +/opt/homebrew/opt/make/libexec/gnubin/make --version > + > +# Check GNU sed (adjust prefix if needed) > +/opt/homebrew/opt/gnu-sed/libexec/gnubin/sed --version > +``` Checking for make / sed can be removed. > + > +## Building the Hypervisor > + > +Set up GNU tools in PATH and build: > + > +```bash > +# Set up GNU tools in PATH (adjust prefix if needed) > +export > PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:/opt/homebrew/opt/make/libexec/gnubin:$PATH" Do you really need the gnubin? I think this was only for sed / make, which is not really needed. > + > +# Build Xen hypervisor only (in-tree) > +cd xen/ > +make XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-elf- HOSTCC=gcc > + > +# Optional: out-of-tree build directory > +# make XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-elf- HOSTCC=gcc > O=$PWD/build-mac > +``` > + > +## Architecture Support > + > +Currently supported architectures: > + > +- **ARM64** (`arm64`) - Default, uses `aarch64-elf-gcc` It could possibly also use the llvm package from homebrew, but I can add later if I get some time to test. > + > +Other targets may work if the corresponding cross toolchain is installed, > +but this guide has only been tested on ARM64. > + > +## Limitations > + > +- **Hypervisor only**: This only builds the Xen hypervisor, not the tools > +- **Cross-compilation only**: Native builds are not supported Probably a more philosophical question, but is it really a cross compilation if I'm building an arm64 Xen on Apple arm64 silicon? Sure, it might use a different toolchain from native, but it's still a "native" build from an architectural perspective? > +- **macOS-specific**: Instructions optimized for macOS with Homebrew > +- **GNU tools required**: Native BSD tools are not compatible That last item can be removed. Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |