All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v2] xen: Add macOS hypervisor build configuration
Date: Thu, 5 Feb 2026 18:07:00 +0100	[thread overview]
Message-ID: <aYTONBslOYwyrFqM@Mac.lan> (raw)
In-Reply-To: <d30deb8fa22291beb64eb179e8e2d55d13ef27dd.1770291000.git.bertrand.marquis@arm.com>

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@arm.com>
> ---
>  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.


  parent reply	other threads:[~2026-02-05 17:07 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-05 11:33 [PATCH v2] xen: Add macOS hypervisor build configuration Bertrand Marquis
2026-02-05 12:29 ` Jan Beulich
2026-02-05 15:30   ` Bertrand Marquis
2026-02-05 15:43     ` Jan Beulich
2026-02-05 15:58       ` Bertrand Marquis
2026-02-05 16:52         ` Jan Beulich
2026-02-05 17:07 ` Roger Pau Monné [this message]
2026-02-06  6:22   ` Jan Beulich
2026-02-06  7:35     ` Bertrand Marquis
2026-02-06  7:32   ` Bertrand Marquis
2026-02-08  2:36 ` Demi Marie Obenour
2026-02-09  7:26   ` Bertrand Marquis
2026-02-09  7:28     ` Demi Marie Obenour
2026-02-09  7:32       ` Bertrand Marquis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aYTONBslOYwyrFqM@Mac.lan \
    --to=roger.pau@citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=anthony.perard@vates.tech \
    --cc=bertrand.marquis@arm.com \
    --cc=jbeulich@suse.com \
    --cc=julien@xen.org \
    --cc=michal.orzel@amd.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.