1- From d50b115f8ce42bc77c0f66c8c8ff14de7053c0fa Mon Sep 17 00:00:00 2001
2- From: Wenlong Zhang <
[email protected] >
3- Date: Tue, 29 Oct 2024 09:18:13 +0800
4- Subject: [PATCH] add supprot for loongarch64
5-
6- ---
7- CMakeLists.txt | 2 +-
8- src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake | 2 ++
9- .../cpp/src/arrow/vendored/double-conversion/utils.h | 2 +-
10- .../cpp/src/arrow/vendored/fast_float/float_common.h | 2 +-
11- src/boost/boost/predef/architecture.h | 1 +
12- src/boost/boostcpp.jam | 5 +++--
13- .../libs/config/checks/architecture/Jamfile.jam | 1 +
14- .../libs/config/checks/architecture/loongarch.cpp | 12 ++++++++++++
15- src/common/Cycles.h | 4 ++++
16- src/jaegertracing/opentelemetry-cpp/CMakeLists.txt | 2 ++
17- .../third_party/benchmark/src/cycleclock.h | 2 +-
18- .../tools/vcpkg/ports/halide/CONTROL | 6 +++++-
19- .../tools/vcpkg/ports/halide/portfile.cmake | 1 +
20- .../tools/vcpkg/ports/llvm/portfile.cmake | 1 +
21- .../tools/vcpkg/ports/llvm/vcpkg.json | 4 ++++
22- .../range/range_tree/lib/portability/toku_time.h | 4 ++++
23- 16 files changed, 44 insertions(+), 7 deletions(-)
24- create mode 100644 src/boost/libs/config/checks/architecture/loongarch.cpp
25-
26- diff --git a/CMakeLists.txt b/CMakeLists.txt
27- index 884135cd8..c955d55c7 100644
28- --- a/CMakeLists.txt
29- +++ b/CMakeLists.txt
30- @@ -275,7 +275,7 @@ if(WITH_BLUESTORE_PMEM)
1+ diff --git a/ceph/CMakeLists.txt b/ceph/CMakeLists.txt
2+ index d3a19771f..9f109e291 100644
3+ --- a/ceph/CMakeLists.txt
4+ +++ b/ceph/CMakeLists.txt
5+ @@ -287,7 +287,7 @@ if(WITH_BLUESTORE_PMEM)
316 endif()
327
338 CMAKE_DEPENDENT_OPTION(WITH_SPDK "Enable SPDK" OFF
@@ -36,49 +11,23 @@ index 884135cd8..c955d55c7 100644
3611 if(WITH_SPDK)
3712 if(NOT WITH_BLUESTORE)
3813 message(SEND_ERROR "Please enable WITH_BLUESTORE for using SPDK")
39- diff --git a/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake b/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake
40- index c1a1ba043..e3367ca28 100644
41- --- a/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake
42- +++ b/src/arrow/cpp/cmake_modules/SetupCxxFlags.cmake
43- @@ -32,6 +32,8 @@ if(NOT DEFINED ARROW_CPU_FLAG)
44- set(ARROW_CPU_FLAG "ppc")
45- elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s390x")
46- set(ARROW_CPU_FLAG "s390x")
47- + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
48- + set(ARROW_CPU_FLAG "loongarch")
49- else()
50- set(ARROW_CPU_FLAG "x86")
51- endif()
52- diff --git a/src/arrow/cpp/src/arrow/vendored/double-conversion/utils.h b/src/arrow/cpp/src/arrow/vendored/double-conversion/utils.h
53- index 4328344d7..b86276950 100644
54- --- a/src/arrow/cpp/src/arrow/vendored/double-conversion/utils.h
55- +++ b/src/arrow/cpp/src/arrow/vendored/double-conversion/utils.h
56- @@ -93,7 +93,7 @@ int main(int argc, char** argv) {
57- #if defined(_M_X64) || defined(__x86_64__) || \
58- defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \
59- defined(__hppa__) || defined(__ia64__) || \
60- - defined(__mips__) || \
61- + defined(__mips__) || defined(__loongarch__) || \
62- defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
63- defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
64- defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
65- 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
66- index f7b7662b9..8d11067f8 100644
67- --- a/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h
68- +++ b/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h
69- @@ -6,7 +6,7 @@
70- #include <cassert>
14+ diff --git a/ceph/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h b/ceph/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h
15+ index 717320126..a4ac1cddf 100644
16+ --- a/ceph/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h
17+ +++ b/ceph/src/arrow/cpp/src/arrow/vendored/fast_float/float_common.h
18+ @@ -27,7 +27,7 @@
19+ #endif
7120
7221 #if (defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) \
7322- || defined(__amd64) || defined(__aarch64__) || defined(_M_ARM64) \
7423+ || defined(__amd64) || defined(__aarch64__) || defined(_M_ARM64) || defined(__loongarch__)\
7524 || defined(__MINGW64__) \
7625 || defined(__s390x__) \
77- || (defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)) \
78- diff --git a/src/boost/boost/predef/architecture.h b/src/boost/boost/predef/architecture.h
26+ || (defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)) )
27+ diff --git a/ceph/ src/boost/boost/predef/architecture.h b/ceph /src/boost/boost/predef/architecture.h
7928index b131a8928..a6fd00c36 100644
80- --- a/src/boost/boost/predef/architecture.h
81- +++ b/src/boost/boost/predef/architecture.h
29+ --- a/ceph/ src/boost/boost/predef/architecture.h
30+ +++ b/ceph/ src/boost/boost/predef/architecture.h
8231@@ -30,6 +30,7 @@ http://www.boost.org/LICENSE_1_0.txt)
8332 #include <boost/predef/architecture/sys370.h>
8433 #include <boost/predef/architecture/sys390.h>
@@ -87,10 +36,10 @@ index b131a8928..a6fd00c36 100644
8736 #include <boost/predef/architecture/z.h>
8837
8938 #endif
90- diff --git a/src/boost/boostcpp.jam b/src/boost/boostcpp.jam
39+ diff --git a/ceph/ src/boost/boostcpp.jam b/ceph /src/boost/boostcpp.jam
9140index 082536e2a..28099d877 100644
92- --- a/src/boost/boostcpp.jam
93- +++ b/src/boost/boostcpp.jam
41+ --- a/ceph/ src/boost/boostcpp.jam
42+ +++ b/ceph/ src/boost/boostcpp.jam
9443@@ -634,7 +634,7 @@ rule address-model ( )
9544 return <conditional>@boostcpp.deduce-address-model ;
9645 }
@@ -117,38 +66,20 @@ index 082536e2a..28099d877 100644
11766 : /boost/architecture//combined ] ;
11867 result = $(names[$(idx)]) ;
11968
120- diff --git a/src/boost/libs/config/checks/architecture/Jamfile.jam b/src/boost/libs/config/checks/architecture/Jamfile.jam
121- index 2ba54f9ad..faf57eb13 100644
122- --- a/src/boost/libs/config/checks/architecture/Jamfile.jam
123- +++ b/src/boost/libs/config/checks/architecture/Jamfile.jam
124- @@ -23 ,4 +23 ,5 @@ obj power : power.cpp ;
69+ diff --git a/ceph/ src/boost/libs/config/checks/architecture/Jamfile.jam b/ceph /src/boost/libs/config/checks/architecture/Jamfile.jam
70+ index c3779d917..bcbfad148 100644
71+ --- a/ceph/ src/boost/libs/config/checks/architecture/Jamfile.jam
72+ +++ b/ceph/ src/boost/libs/config/checks/architecture/Jamfile.jam
73+ @@ -24 ,4 +24 ,5 @@ obj power : power.cpp ;
12574 obj riscv : riscv.cpp ;
12675 obj sparc : sparc.cpp ;
12776 obj x86 : x86.cpp ;
12877+ obj loongarch : loongarch.cpp ;
12978 obj s390x : s390x.cpp ;
130- diff --git a/src/boost/libs/config/checks/architecture/loongarch.cpp b/src/boost/libs/config/checks/architecture/loongarch.cpp
131- new file mode 100644
132- index 000000000..ecd84e0a4
133- --- /dev/null
134- +++ b/src/boost/libs/config/checks/architecture/loongarch.cpp
135- @@ -0,0 +1,12 @@
136- + // loongarch.cpp
137- + //
138- + // Copyright (c) 2012 Steven Watanabe
139- + //
140- + // Distributed under the Boost Software License Version 1.0. (See
141- + // accompanying file LICENSE_1_0.txt or copy at
142- + // http://www.boost.org/LICENSE_1_0.txt)
143- +
144- + #if !defined(__loongarch) && !defined(__loongarch__) && !defined(__loongarch64__) \
145- + && !defined(__loong) && !defined(__LOONGARCH__)
146- + #error "Not LOONGARCH"
147- + #endif
148- diff --git a/src/common/Cycles.h b/src/common/Cycles.h
79+ diff --git a/ceph/src/common/Cycles.h b/ceph/src/common/Cycles.h
14980index b546479c2..1bae9d616 100644
150- --- a/src/common/Cycles.h
151- +++ b/src/common/Cycles.h
81+ --- a/ceph/ src/common/Cycles.h
82+ +++ b/ceph/ src/common/Cycles.h
15283@@ -84,6 +84,10 @@ class Cycles {
15384 uint64_t tsc;
15485 asm volatile("stck %0" : "=Q" (tsc) : : "cc");
@@ -160,10 +91,10 @@ index b546479c2..1bae9d616 100644
16091 #else
16192 #warning No high-precision counter available for your OS/arch
16293 return 0;
163- diff --git a/src/jaegertracing/opentelemetry-cpp/CMakeLists.txt b/src/jaegertracing/opentelemetry-cpp/CMakeLists.txt
94+ diff --git a/ceph/ src/jaegertracing/opentelemetry-cpp/CMakeLists.txt b/ceph /src/jaegertracing/opentelemetry-cpp/CMakeLists.txt
16495index 6d2b27435..46b54793e 100755
165- --- a/src/jaegertracing/opentelemetry-cpp/CMakeLists.txt
166- +++ b/src/jaegertracing/opentelemetry-cpp/CMakeLists.txt
96+ --- a/ceph/ src/jaegertracing/opentelemetry-cpp/CMakeLists.txt
97+ +++ b/ceph/ src/jaegertracing/opentelemetry-cpp/CMakeLists.txt
16798@@ -64,6 +64,8 @@ else()
16899 set(ARCH riscv)
169100 elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x.*|S390X.*)")
@@ -173,10 +104,10 @@ index 6d2b27435..46b54793e 100755
173104 else()
174105 message(
175106 FATAL_ERROR
176- diff --git a/src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h b/src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h
107+ diff --git a/ceph/ src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h b/ceph /src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h
177108index 9bef594be..e7d523fea 100644
178- --- a/src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h
179- +++ b/src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h
109+ --- a/ceph/ src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h
110+ +++ b/ceph/ src/jaegertracing/opentelemetry-cpp/third_party/benchmark/src/cycleclock.h
180111@@ -204,7 +204,7 @@ inline BENCHMARK_ALWAYS_INLINE int64_t Now() {
181112 asm volatile("rdcycle %0" : "=r"(cycles));
182113 return cycles;
@@ -186,11 +117,11 @@ index 9bef594be..e7d523fea 100644
186117 struct timeval tv;
187118 gettimeofday(&tv, nullptr);
188119 return static_cast<int64_t>(tv.tv_sec) * 1000000 + tv.tv_usec;
189- diff --git a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL
190- index 8ffcc93dd..512bfdf8c 100644
191- --- a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL
192- +++ b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL
193- @@ -12,7 +12,7 @@ Build-Depends: halide[core,target-x86] (x86|x64), halide[core,target-arm] (arm&!
120+ diff --git a/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL b/ceph /src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL
121+ index 8ffcc93dd..3ac27d425 100644
122+ --- a/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL
123+ +++ b/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/CONTROL
124+ @@ -12,12 +12,16 @@ Build-Depends: halide[core,target-x86] (x86|x64), halide[core,target-arm] (arm&!
194125
195126 Feature: target-all
196127 Description: Include all targets
@@ -199,18 +130,19 @@ index 8ffcc93dd..512bfdf8c 100644
199130
200131 Feature: target-aarch64
201132 Description: Include AArch64 target
202- @@ -62,3 +62,7 @@ Feature: target-x86
203- Description: Include X86 target
204- Build-Depends: llvm[core,target-x86]
133+ Build-Depends: llvm[core,target-aarch64]
205134
206135+ Feature: target-loongarch
207136+ Description: Include LOONGARCH target
208137+ Build-Depends: llvm[core,target-loongarch]
209138+
210- diff --git a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake
139+ Feature: target-amdgpu
140+ Description: Include AMDGPU target
141+ Build-Depends: llvm[core,target-amdgpu]
142+ diff --git a/ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake b/ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake
211143index b8e08adda..51e106739 100644
212- --- a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake
213- +++ b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake
144+ --- a/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake
145+ +++ b/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/halide/portfile.cmake
214146@@ -27,6 +27,7 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
215147 target-powerpc TARGET_POWERPC
216148 target-riscv TARGET_RISCV
@@ -219,10 +151,10 @@ index b8e08adda..51e106739 100644
219151 )
220152
221153 vcpkg_configure_cmake(
222- diff --git a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake
154+ diff --git a/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake b/ceph /src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake
223155index 356a25bf1..c793fceb4 100644
224- --- a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake
225- +++ b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake
156+ --- a/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake
157+ +++ b/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake
226158@@ -181,6 +181,7 @@ set(known_llvm_targets
227159 WebAssembly
228160 X86
@@ -231,10 +163,10 @@ index 356a25bf1..c793fceb4 100644
231163 )
232164
233165 set(LLVM_TARGETS_TO_BUILD "")
234- diff --git a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json
166+ diff --git a/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json b/ceph /src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json
235167index 4590e5111..c34d78292 100644
236- --- a/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json
237- +++ b/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json
168+ --- a/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json
169+ +++ b/ceph/ src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/vcpkg.json
238170@@ -258,6 +258,7 @@
239171 "target-systemz",
240172 "target-webassembly",
@@ -253,10 +185,10 @@ index 4590e5111..c34d78292 100644
253185 "target-xcore": {
254186 "description": "Build with XCore backend."
255187 },
256- diff --git a/src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h b/src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
188+ diff --git a/ceph/ src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h b/ceph /src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
257189index 46111e7f0..4555b8f71 100644
258- --- a/src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
259- +++ b/src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
190+ --- a/ceph/ src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
191+ +++ b/ceph/ src/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
260192@@ -154,6 +154,10 @@ static inline tokutime_t toku_time_now(void) {
261193 uint64_t cycles;
262194 asm volatile("rdcycle %0" : "=r"(cycles));
@@ -268,6 +200,3 @@ index 46111e7f0..4555b8f71 100644
268200 #else
269201 #error No timer implementation for this platform
270202 #endif
271- - -
272- 2.43.0
273-
0 commit comments