diff --git a/cpp/velox/CMakeLists.txt b/cpp/velox/CMakeLists.txt
index fc6391b7f3c0..b9d3e65afe0b 100644
--- a/cpp/velox/CMakeLists.txt
+++ b/cpp/velox/CMakeLists.txt
@@ -47,6 +47,10 @@ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL arm64)
set(SYSTEM_LIB_MULTIARCH_PATH
"/usr/lib"
CACHE PATH "System Lib MultiArch dir")
+elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL ppc64le)
+ set(SYSTEM_LIB_MULTIARCH_PATH
+ "/usr/lib"
+ CACHE PATH "System Lib MultiArch dir")
else()
message(FATAL_ERROR "Unsupported processor type: ${CMAKE_SYSTEM_PROCESSOR}")
endif()
diff --git a/dev/build-helper-functions.sh b/dev/build-helper-functions.sh
index c6aa525cc483..4be8ad170ba1 100644
--- a/dev/build-helper-functions.sh
+++ b/dev/build-helper-functions.sh
@@ -55,6 +55,8 @@ function get_cxx_flags {
CPU_ARCH="sse"
elif [ "$MACHINE" = "aarch64" ]; then
CPU_ARCH="aarch64"
+ elif [ "$MACHINE" = "ppc64le" ]; then
+ CPU_ARCH="ppc64le"
fi
fi
fi
@@ -121,6 +123,10 @@ function get_cxx_flags {
echo -n "-march=armv8-a+crc+crypto -std=c++20 $ADDITIONAL_FLAGS"
fi
;;
+
+ "ppc64le")
+ echo -n "-mcpu=power10 -std=c++20 $ADDITIONAL_FLAGS"
+ ;;
*)
echo -n "Architecture not supported!"
esac
diff --git a/dev/build-thirdparty.sh b/dev/build-thirdparty.sh
index 0ef37111fa2f..5676154b12f8 100755
--- a/dev/build-thirdparty.sh
+++ b/dev/build-thirdparty.sh
@@ -38,7 +38,7 @@ function process_setup_ubuntu_2204 {
function process_setup_centos_9 {
cp /lib64/{libre2.so.9,libdouble-conversion.so.3,libevent-2.1.so.7,libdwarf.so.0,libicudata.so.67,libicui18n.so.67,libicuuc.so.67,libsodium.so.23} $THIRDPARTY_LIB/
cp /usr/local/lib/{libboost_context.so.1.84.0,libboost_filesystem.so.1.84.0,libboost_program_options.so.1.84.0,libboost_regex.so.1.84.0,libboost_system.so.1.84.0,libboost_thread.so.1.84.0,libboost_atomic.so.1.84.0} $THIRDPARTY_LIB/
- cp /usr/local/lib64/{libgflags.so.2.2,libglog.so.1} $THIRDPARTY_LIB/
+ cp /usr/local/lib64/{libgflags.so.2.2,libglog.so.1,libgeos.so.3.10.7} $THIRDPARTY_LIB/
}
function process_setup_centos_8 {
diff --git a/dev/docker/Dockerfile.centos8-dynamic-build b/dev/docker/Dockerfile.centos8-dynamic-build
index 785c6c545b85..c449921634b3 100644
--- a/dev/docker/Dockerfile.centos8-dynamic-build
+++ b/dev/docker/Dockerfile.centos8-dynamic-build
@@ -43,8 +43,9 @@ RUN set -ex; \
./install-resources.sh 3.5; \
./install-resources.sh 3.5-scala2.13; \
./install-resources.sh 4.0; \
- if [ "$(uname -m)" = "aarch64" ]; then \
- export CPU_TARGET="aarch64"; \
+ ARCH=$(uname -m); \
+ if [[ "$ARCH" == "aarch64" || "$ARCH" == "ppc64le" ]]; then \
+ export CPU_TARGET="$ARCH"; \
fi; \
cd /opt/gluten; \
source /opt/rh/gcc-toolset-11/enable; \
diff --git a/dev/docker/Dockerfile.centos9-dynamic-build b/dev/docker/Dockerfile.centos9-dynamic-build
index 25866155cc96..55cc4dcc06b1 100644
--- a/dev/docker/Dockerfile.centos9-dynamic-build
+++ b/dev/docker/Dockerfile.centos9-dynamic-build
@@ -41,8 +41,9 @@ RUN set -ex; \
./install-resources.sh 3.5; \
./install-resources.sh 3.5-scala2.13; \
./install-resources.sh 4.0; \
- if [ "$(uname -m)" = "aarch64" ]; then \
- export CPU_TARGET="aarch64"; \
+ ARCH=$(uname -m); \
+ if [[ "$ARCH" == "aarch64" || "$ARCH" == "ppc64le" ]]; then \
+ export CPU_TARGET="$ARCH"; \
fi; \
cd /opt/gluten; \
source /opt/rh/gcc-toolset-12/enable; \
diff --git a/dev/package.sh b/dev/package.sh
index 34a24b9b52ab..0dc316c87c32 100755
--- a/dev/package.sh
+++ b/dev/package.sh
@@ -27,6 +27,8 @@ cd "$GLUTEN_DIR"
if [ "$ARCH" = "aarch64" ]; then
export CPU_TARGET="aarch64"
+elif [ "$ARCH" = "ppc64le" ]; then
+ export CPU_TARGET="ppc64le"
fi
# build gluten with velox backend, prompt always respond y
diff --git a/ep/build-velox/src/build-velox.sh b/ep/build-velox/src/build-velox.sh
index 2299792671fc..8d2d3317c026 100755
--- a/ep/build-velox/src/build-velox.sh
+++ b/ep/build-velox/src/build-velox.sh
@@ -155,7 +155,7 @@ function compile {
export Arrow_SOURCE=AUTO
if [ $ARCH == 'x86_64' ]; then
make $COMPILE_TYPE $NUM_THREADS_OPTS EXTRA_CMAKE_FLAGS="${COMPILE_OPTION}"
- elif [[ "$ARCH" == 'arm64' || "$ARCH" == 'aarch64' ]]; then
+ elif [[ "$ARCH" == 'arm64' || "$ARCH" == 'aarch64' || "$ARCH" == "ppc64le" ]]; then
CPU_TARGET=$ARCH make $COMPILE_TYPE $NUM_THREADS_OPTS EXTRA_CMAKE_FLAGS="${COMPILE_OPTION}"
else
echo "Unsupported arch: $ARCH"
diff --git a/ep/build-velox/src/get-velox.sh b/ep/build-velox/src/get-velox.sh
index 27e083bbf113..1878e4938514 100755
--- a/ep/build-velox/src/get-velox.sh
+++ b/ep/build-velox/src/get-velox.sh
@@ -197,8 +197,9 @@ function setup_linux {
elif [[ "$LINUX_DISTRIBUTION" == "rhel" ]]; then
case "$LINUX_VERSION_ID" in
9.6) ;;
+ 9.7) ;;
*)
- echo "Unsupported openEuler version: $LINUX_VERSION_ID"
+ echo "Unsupported rhel version: $LINUX_VERSION_ID"
exit 1
;;
esac
diff --git a/pom.xml b/pom.xml
index 2227f9d353eb..f2381563a381 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2234,5 +2234,28 @@
${platform}_${arch}
+
+ linux-ppc64le
+
+
+ Linux
+ ppc64le
+
+
+
+ linux
+ ppc64le
+ ${platform}_${arch}
+
+
+
+ disaggregated-shuffle
+
+ false
+
+
+ gluten-disaggregated-shuffle
+
+