Hi Roger,

> On 5 Feb 2026, at 18:07, Roger Pau MonnĂ© <[email protected]> wrote:
> 
> 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 <[email protected]>
>> ---
>> 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?

As Jan mentioned we are not building on Linux so it can be considered
cross compiling.

> 
>> +## 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.

Ack

> 
>> +
>> +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.

Ack

> 
>> +
>> +## 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.

I do not need anything anymore, just the compiler ...

> 
>> +
>> +# 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.

yes ..

> 
>> +
>> +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.

At the end almost everything can be removed, the only "mac os" specific
instruction would be to install gcc through homebrew but there are other
solutions (cross-tools, llvm, downloading a pre compiled gcc, compiling
it yourself, ....you name it) so what would only remain here would be
instructions on how to compile the hypervisor which is not mac os specific.

So i will remove that file and just push a small patch adding Darwin.mk
with an updated comment.

Cheers
Bertrand

> 
> Thanks, Roger.


Reply via email to