From c12b2aba11346c2b64c75951fa6deee4e3ebf07f Mon Sep 17 00:00:00 2001 From: SED4906 Date: Thu, 9 Apr 2026 16:02:15 -0700 Subject: [PATCH] build: initial support for ppc64 https://review.haiku-os.org/c/buildtools/+/2784 Change-Id: If429e20752712224ffc2afb0c32ca94d14a8b7a8 Reviewed-on: https://review.haiku-os.org/c/haiku/+/10809 Haiku-Format: Haiku-format Bot Tested-by: Commit checker robot Reviewed-by: Adrien Destugues --- build/jam/ArchitectureRules | 8 ++++++++ build/scripts/build_cross_tools_gcc4 | 10 ++++++++++ build/scripts/find_triplet | 3 +++ configure | 4 ++++ src/system/boot/Jamfile | 4 ++++ 5 files changed, 29 insertions(+) diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules index b7352acd1a..75c2032d30 100644 --- a/build/jam/ArchitectureRules +++ b/build/jam/ArchitectureRules @@ -231,6 +231,14 @@ rule KernelArchitectureSetup architecture # offset in floppy image (>= sizeof(haiku_loader)) HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 384 ; # in kB + case ppc64 : + HAIKU_KERNEL_PLATFORM ?= openfirmware ; + HAIKU_BOOT_TARGETS += openfirmware ; + + HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; # in kB + # offset in floppy image (>= sizeof(haiku_loader)) + HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 384 ; # in kB + case sparc : HAIKU_KERNEL_PLATFORM ?= openfirmware ; HAIKU_BOOT_TARGETS += openfirmware ; diff --git a/build/scripts/build_cross_tools_gcc4 b/build/scripts/build_cross_tools_gcc4 index bd48a63e2e..70b7b2fab0 100755 --- a/build/scripts/build_cross_tools_gcc4 +++ b/build/scripts/build_cross_tools_gcc4 @@ -82,6 +82,16 @@ powerpc-*) binutilsConfigureArgs="$binutilsConfigureArgs --disable-tls" gccConfigureArgs="$gccConfigureArgs --disable-tls" ;; +powerpc64-*) + binutilsConfigureArgs="--disable-multilib" + gccConfigureArgs="--disable-multilib" + gdbConfigureArgs="--disable-multilib --disable-werror" + gdbTarget="powerpc64-unknown-elf" + + # TODO: Disable building with TLS support for PPC64 until implemented. + binutilsConfigureArgs="$binutilsConfigureArgs --disable-tls" + gccConfigureArgs="$gccConfigureArgs --disable-tls" + ;; *) binutilsConfigureArgs="--disable-multilib" gccConfigureArgs="--disable-multilib" diff --git a/build/scripts/find_triplet b/build/scripts/find_triplet index ae1336f5d3..4e56ec25bb 100755 --- a/build/scripts/find_triplet +++ b/build/scripts/find_triplet @@ -19,6 +19,9 @@ case "$1" in "ppc") echo "powerpc-apple-haiku" ;; + "ppc64") + echo "powerpc64-unknown-haiku" + ;; "sparc") echo "sparc64-unknown-haiku" ;; diff --git a/configure b/configure index 2f1cb417fc..f3dbd57133 100755 --- a/configure +++ b/configure @@ -289,6 +289,7 @@ standard_gcc_settings() i?86-*) targetCpu=x86;; m68k-*) targetCpu=m68k;; powerpc-*) targetCpu=ppc;; + powerpc64-*) targetCpu=ppc64;; riscv64-*) targetCpu=riscv64;; sparc64-*) targetCpu=sparc;; x86_64-*) targetCpu=x86_64;; @@ -696,6 +697,7 @@ supportedTargetArchs=" arm64 m68k ppc + ppc64 riscv64 sparc x86 @@ -747,6 +749,7 @@ while [ $# -gt 0 ] ; do x86) targetMachine=i586-pc-haiku;; x86_64) targetMachine=x86_64-unknown-haiku;; ppc) targetMachine=powerpc-apple-haiku;; + ppc64) targetMachine=powerpc64-unknown-haiku;; m68k) targetMachine=m68k-unknown-haiku;; arm) targetMachine=arm-unknown-haiku;; arm64) targetMachine=aarch64-unknown-haiku;; @@ -808,6 +811,7 @@ while [ $# -gt 0 ] ; do x86) targetMachine=i586-pc-haiku;; x86_64) targetMachine=x86_64-unknown-haiku;; ppc) targetMachine=powerpc-apple-haiku;; + ppc64) targetMachine=powerpc64-unknown-haiku;; arm) targetMachine=arm-unknown-haiku;; arm64) targetMachine=aarch64-unknown-haiku;; riscv64) targetMachine=riscv64-unknown-haiku;; diff --git a/src/system/boot/Jamfile b/src/system/boot/Jamfile index af9c4c722d..689a6410e5 100644 --- a/src/system/boot/Jamfile +++ b/src/system/boot/Jamfile @@ -12,6 +12,8 @@ rule BuildOpenFirmwareLoader { switch $(TARGET_ARCH) { case ppc : BuildCoffLoader $(haikuLoader) : $(bootLoader) ; + case ppc64 : + BuildCoffLoader $(haikuLoader) : $(bootLoader) ; case sparc : BuildAoutLoader $(haikuLoader) : $(bootLoader) ; case * : @@ -50,6 +52,8 @@ rule BuildCoffLoader { switch $(TARGET_ARCH) { case ppc : COFF_FORMAT on $(coffLoader) = xcoff-powermac ; + case ppc64 : + COFF_FORMAT on $(coffLoader) = xcoff-powermac ; case * : Exit "Currently unsupported coff arch:" $(TARGET_ARCH) ; }