Self contained arrow version is 6.0.1 which has no RISC-V
support. The build error looks like:
CMake Error at cmake_modules/SetupCxxFlags.cmake:439 (message):
SSE4.2 required but compiler doesn't support it.
42 lines
1.8 KiB
Diff
42 lines
1.8 KiB
Diff
diff --git a/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake b/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake
|
|
index c1a1ba0..84f224b 100644
|
|
--- a/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake
|
|
+++ b/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake
|
|
@@ -32,6 +32,8 @@ if(NOT DEFINED ARROW_CPU_FLAG)
|
|
set(ARROW_CPU_FLAG "ppc")
|
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s390x")
|
|
set(ARROW_CPU_FLAG "s390x")
|
|
+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64")
|
|
+ set(ARROW_CPU_FLAG "riscv64")
|
|
else()
|
|
set(ARROW_CPU_FLAG "x86")
|
|
endif()
|
|
diff --git a/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h b/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h
|
|
index f7b7662..c1fe08d 100644
|
|
--- a/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h
|
|
+++ b/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h
|
|
@@ -10,7 +10,7 @@
|
|
|| defined(__MINGW64__) \
|
|
|| defined(__s390x__) \
|
|
|| (defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)) \
|
|
- || defined(__EMSCRIPTEN__))
|
|
+ || defined(__EMSCRIPTEN__) || defined(__riscv))
|
|
#define FASTFLOAT_64BIT
|
|
#elif (defined(__i386) || defined(__i386__) || defined(_M_IX86) \
|
|
|| defined(__arm__) \
|
|
diff --git a/src/common/Cycles.h b/src/common/Cycles.h
|
|
index b546479..14bc6bf 100644
|
|
--- a/src/common/Cycles.h
|
|
+++ b/src/common/Cycles.h
|
|
@@ -84,6 +84,10 @@ class Cycles {
|
|
uint64_t tsc;
|
|
asm volatile("stck %0" : "=Q" (tsc) : : "cc");
|
|
return tsc;
|
|
+#elif defined(__riscv) && __riscv_xlen == 64
|
|
+ uint64_t tsc;
|
|
+ asm volatile ("rdcycle %0" : "=r" (tsc));
|
|
+ return tsc;
|
|
#else
|
|
#warning No high-precision counter available for your OS/arch
|
|
return 0;
|