From 81df0d27cc63b9a4f86e97dee04133d4eda583ec Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Fri, 20 Mar 2026 17:43:59 -0500 Subject: [PATCH] Add support for powerpc64le systems This requires POWER ISA 3.0 or higher Older ISA variants lack current deployment and required features Big endian systems are NOT supported Signed-off-by: Timothy Pearson --- build/CompilerAndLinker.cmake | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/build/CompilerAndLinker.cmake b/build/CompilerAndLinker.cmake index 72ff2a91..a315906b 100644 --- a/build/CompilerAndLinker.cmake +++ b/build/CompilerAndLinker.cmake @@ -20,6 +20,8 @@ elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]64$") set(DIRECTX_ARCH arm64) elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Aa][Rr][Mm]64EC$") set(DIRECTX_ARCH arm64ec) +elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Pp][Pp][Cc]64|powerpc64|powerpc64le") + set(DIRECTX_ARCH powerpc64) elseif(CMAKE_VS_PLATFORM_NAME_DEFAULT MATCHES "^[Ww][Ii][Nn]32$") set(DIRECTX_ARCH x86) elseif(CMAKE_VS_PLATFORM_NAME_DEFAULT MATCHES "^[Xx]64$") @@ -30,9 +32,13 @@ elseif(CMAKE_VS_PLATFORM_NAME_DEFAULT MATCHES "^[Aa][Rr][Mm]64$") set(DIRECTX_ARCH arm64) elseif(CMAKE_VS_PLATFORM_NAME_DEFAULT MATCHES "^[Aa][Rr][Mm]64EC$") set(DIRECTX_ARCH arm64ec) +elseif(CMAKE_VS_PLATFORM_NAME_DEFAULT MATCHES "^[Pp][Pp][Cc]64|powerpc64|powerpc64le") + set(DIRECTX_ARCH powerpc64) elseif(NOT (DEFINED DIRECTX_ARCH)) if(CMAKE_SYSTEM_PROCESSOR MATCHES "[Aa][Rr][Mm]64|aarch64|arm64") set(DIRECTX_ARCH arm64) + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "[Pp][Pp][Cc]64|powerpc64|powerpc64le") + set(DIRECTX_ARCH powerpc64) else() set(DIRECTX_ARCH x64) endif() @@ -41,6 +47,8 @@ endif() #--- Determines host architecture if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "[Aa][Rr][Mm]64|aarch64|arm64") set(DIRECTX_HOST_ARCH arm64) +elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "[Pp][Pp][Cc]64|powerpc64|powerpc64le") + set(DIRECTX_HOST_ARCH powerpc64) else() set(DIRECTX_HOST_ARCH x64) endif() @@ -96,6 +104,9 @@ if(XBOX_CONSOLE_TARGET STREQUAL "scarlett") list(APPEND COMPILER_SWITCHES $,/favor:AMD64 /arch:AVX2,-march=znver2>) elseif(XBOX_CONSOLE_TARGET MATCHES "xboxone|durango") list(APPEND COMPILER_SWITCHES $,/favor:AMD64 /arch:AVX,-march=btver2>) +elseif(${DIRECTX_ARCH} MATCHES "^powerpc64") + list(APPEND COMPILER_DEFINES NO_WARN_X86_INTRINSICS) + list(APPEND COMPILER_SWITCHES -m64 -mcpu=power9 -maltivec) elseif(NOT (${DIRECTX_ARCH} MATCHES "^arm")) if((${DIRECTX_ARCH} STREQUAL "x86") OR (CMAKE_SIZEOF_VOID_P EQUAL 4)) set(ARCH_SSE2 $<$:/arch:SSE2> $<$>:-msse2>)