From ea1ba734a76ced4df64d5374fb0fb11ce2ac065f Mon Sep 17 00:00:00 2001
From: Sergey Fedorov <vital.had@gmail.com>
Date: Sat, 7 Jan 2023 15:14:42 +0700
Subject: [PATCH 1/3] CMakeLists: add PPC support, unbreak build on Darwin

---
 CMakeLists.txt | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 582ada3..25673f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,16 +6,29 @@ set(CMAKE_CXX_STANDARD 11)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 set(ENABLE_IBM OFF)
+set(ENABLE_PPC OFF)
 
 if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le")
   set(ENABLE_IBM ON)
 endif()
 
+# For now this should do. Notice, however, that ppc32 is used with *BSD and Linux as well,
+# so at some point a finer approach may be needed.
+if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc|ppc64")
+  if(APPLE)
+    set(ENABLE_PPC ON)
+  else()
+    set(ENABLE_IBM ON)
+  endif()
+endif()
+
 if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
   set(HPTT_CXX_FLAGS ${HPTT_CXX_FLAGS} -qopenmp -xhost)
 elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
   if(ENABLE_IBM)
     set(HPTT_CXX_FLAGS ${HPTT_CXX_FLAGS} -fopenmp)
+  elseif(ENABLE_PPC)
+    set(HPTT_CXX_FLAGS ${HPTT_CXX_FLAGS} -fopenmp -mtune=native)
   else()
     set(HPTT_CXX_FLAGS ${HPTT_CXX_FLAGS} -fopenmp -march=native -mtune=native)
   endif()
@@ -33,6 +46,10 @@ elseif(ENABLE_ARM)
   set(HPTT_CXX_FLAGS ${HPTT_CXX_FLAGS} -mfpu=neon -DHPTT_ARCH_ARM)
 elseif(ENABLE_IBM)
   set(HPTT_CXX_FLAGS ${HPTT_CXX_FLAGS} -mtune=native -DHPTT_ARCH_IBM -maltivec -mabi=altivec)
+# If the code will move to use VSX insns, please retain non-VSX version for macOS PPC.
+# Until then perhaps a common define can be used.
+elseif(ENABLE_PPC)
+  set(HPTT_CXX_FLAGS ${HPTT_CXX_FLAGS} -mtune=native -DHPTT_ARCH_IBM -faltivec)
 endif()
 
 set(HPTT_SRCS src/hptt.cpp src/plan.cpp src/transpose.cpp src/utils.cpp)
-- 
2.39.0

