This is an automated email from the ASF dual-hosted git repository.

colinlee pushed a commit to branch fix_compile_toochain
in repository https://gitbox.apache.org/repos/asf/tsfile.git

commit 5728757b5f5897ee94fa9d7a940b83cec37ba6bd
Author: colin <[email protected]>
AuthorDate: Fri Dec 19 15:37:22 2025 +0800

    fix compile on old gcc.
---
 cpp/.gitignore             |  1 -
 cpp/README.md              |  2 +-
 cpp/cmake/ToolChain.cmake  | 36 ++++++++++++++++++++++++++++++++++++
 cpp/src/common/db_common.h | 15 +++++++++++++++
 4 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/cpp/.gitignore b/cpp/.gitignore
index d73b742b..3dc8c5ba 100644
--- a/cpp/.gitignore
+++ b/cpp/.gitignore
@@ -5,4 +5,3 @@ build/
 .settings/
 .vscode/
 cmake-build-debug/
-cmake*/
\ No newline at end of file
diff --git a/cpp/README.md b/cpp/README.md
index dced6c8c..a98792ea 100644
--- a/cpp/README.md
+++ b/cpp/README.md
@@ -75,7 +75,7 @@ Modify the Toolchain File `cmake/ToolChain.cmake`, define the 
following variable
 In the `cpp/` directory, run the following commands to create the build 
directory and start the compilation:
 ```
 mkdir build && cd build
-cmake .. -DToolChian=ON
+cmake .. -DToolChain=ON
 make
 ```
 
diff --git a/cpp/cmake/ToolChain.cmake b/cpp/cmake/ToolChain.cmake
new file mode 100644
index 00000000..f52be293
--- /dev/null
+++ b/cpp/cmake/ToolChain.cmake
@@ -0,0 +1,36 @@
+#[[
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    https://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+]]
+
+set(CMAKE_SYSTEM_NAME Linux)
+set(CMAKE_SYSTEM_PROCESSOR aarch64)
+
+## Modify
+set(CMAKE_C_COMPILER 
/home/tsfile/dev/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
 CACHE STRING "Path to the C compiler" FORCE)
+set(CMAKE_CXX_COMPILER  
/home/colin/dev/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++
 CACHE STRING "Path to the C++ compiler" FORCE)
+message(STATUS "using cxx compiler ${CMAKE_CXX_COMPILER}")
+message(STATUS "using c compiler ${CMAKE_C_COMPILER}")
+## Modify
+set(CMAKE_FIND_ROOT_PATH 
/home/tsfile/dev/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabi)
+
+
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
\ No newline at end of file
diff --git a/cpp/src/common/db_common.h b/cpp/src/common/db_common.h
index 485a0c10..11326764 100644
--- a/cpp/src/common/db_common.h
+++ b/cpp/src/common/db_common.h
@@ -20,7 +20,9 @@
 #ifndef COMMON_DB_COMMON_H
 #define COMMON_DB_COMMON_H
 
+#include <functional>
 #include <iostream>
+#include <type_traits>
 #include <unordered_set>
 
 #include "common/allocator/my_string.h"
@@ -94,7 +96,20 @@ enum CompressionType : uint8_t {
 extern const char* s_data_type_names[8];
 extern const char* s_encoding_names[12];
 extern const char* s_compression_names[8];
+}
 
+#if defined(__GLIBCXX__) && (__GNUC__ < 7)
+namespace std {
+template <>
+struct hash<common::TSDataType> {
+    size_t operator()(common::TSDataType v) const noexcept {
+        return static_cast<size_t>(static_cast<uint8_t>(v));
+    }
+};
+}  // namespace std
+#endif
+
+namespace common {
 FORCE_INLINE const char* get_data_type_name(TSDataType type) {
     ASSERT(type >= BOOLEAN && type <= STRING);
     return s_data_type_names[type];

Reply via email to