diff --git a/cpp/.gitignore b/cpp/.gitignore index d73b742ba..3dc8c5baf 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 dced6c8c1..a98792eaa 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 000000000..f52be2934 --- /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 485a0c104..c85e20483 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 #include +#include #include #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]; +} // namespace common +#if defined(__GLIBCXX__) && (__GNUC__ < 7) +namespace std { +template <> +struct hash { + size_t operator()(common::TSDataType v) const noexcept { + return static_cast(static_cast(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];