From f6e59e62709e4de6bf4305e9d0c77b6893e9bb03 Mon Sep 17 00:00:00 2001
From: Simon Liu <331435+monadbobo@users.noreply.github.com>
Date: Tue, 20 Aug 2019 14:23:42 +0800
Subject: [PATCH] Issue#655 support for building with Clang (#700)

* Issue#655 support for building with Clang

Compiled by clang 7.0.1((Fedora 7.0.1-6.fc29)

* Modified some of the code according to sherman's comments.
---
 CMakeLists.txt                   | 14 ++++++++++++--
 src/console/CliManager.cpp       |  1 -
 src/executor/GoExecutor.cpp      |  4 ++--
 src/executor/ShowExecutor.h      |  1 -
 src/parser/TraverseSentences.cpp |  3 +--
 5 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 574c2ae6..f356b9ec 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -299,8 +299,18 @@ add_compile_options(-Werror)
 add_compile_options(-Wunused-parameter)
 add_compile_options(-Wshadow)
 
-# This requries GCC 5.1+
-add_compile_options(-Wsuggest-override)
+if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+    # This requries GCC 5.1+
+    if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1)
+        add_compile_options(-Wsuggest-override)
+    endif()
+elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+  add_compile_options(-Wno-overloaded-virtual)
+  add_compile_options(-Wno-self-assign-overloaded)
+  add_compile_options(-Wno-self-move)
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -latomic")
+endif()
+
 
 if(ENABLE_ASAN)
     add_definitions(-DBUILT_WITH_SANITIZER)
diff --git a/src/console/CliManager.cpp b/src/console/CliManager.cpp
index 88f2cc6a..efc68bc9 100644
--- a/src/console/CliManager.cpp
+++ b/src/console/CliManager.cpp
@@ -24,7 +24,6 @@ namespace graph {
 const int32_t kMaxAuthInfoRetries = 3;
 const int32_t kMaxUsernameLen = 16;
 const int32_t kMaxPasswordLen = 24;
-const int32_t kMaxCommandLineLen = 1024;
 
 CliManager::CliManager() {
     curSpaceName_ = std::string("(none)");
diff --git a/src/executor/GoExecutor.cpp b/src/executor/GoExecutor.cpp
index aee18590..5bf0e009 100644
--- a/src/executor/GoExecutor.cpp
+++ b/src/executor/GoExecutor.cpp
@@ -474,7 +474,7 @@ StatusOr<std::vector<storage::cpp2::PropDef>> GoExecutor::getStepOutProps() {
     for (auto &tagIt : tagProps) {
         auto status = ectx()->schemaManager()->toTagID(spaceId, tagIt.first);
         if (!status.ok()) {
-            return Status::Error("No schema found for '%s'", tagIt.first);
+            return Status::Error("No schema found for '%s'", tagIt.first.c_str());
         }
         auto tagId = status.value();
         for (auto &prop : tagIt.second) {
@@ -511,7 +511,7 @@ StatusOr<std::vector<storage::cpp2::PropDef>> GoExecutor::getDstProps() {
     for (auto &tagIt : tagProps) {
         auto status = ectx()->schemaManager()->toTagID(spaceId, tagIt.first);
         if (!status.ok()) {
-            return Status::Error("No schema found for '%s'", tagIt.first);
+            return Status::Error("No schema found for '%s'", tagIt.first.c_str());
         }
         auto tagId = status.value();
         for (auto &prop : tagIt.second) {
diff --git a/src/executor/ShowExecutor.h b/src/executor/ShowExecutor.h
index 6966edf5..105a5c39 100644
--- a/src/executor/ShowExecutor.h
+++ b/src/executor/ShowExecutor.h
@@ -37,7 +37,6 @@ public:
 private:
     ShowSentence                             *sentence_{nullptr};
     std::unique_ptr<cpp2::ExecutionResponse>  resp_;
-    ConfigRowItem                            *configItem_{nullptr};
 };
 
 }   // namespace graph
diff --git a/src/parser/TraverseSentences.cpp b/src/parser/TraverseSentences.cpp
index 248727ca..65e6723a 100644
--- a/src/parser/TraverseSentences.cpp
+++ b/src/parser/TraverseSentences.cpp
@@ -214,8 +214,7 @@ StatusOr<std::string> EdgeKeyRef::varname() const {
     }
 
     if (uniqVar_.size() != 1) {
-        return Status::SyntaxError(
-            "Near %s, Only support single data source.", toString());
+        return Status::SyntaxError("Near %s, Only support single data source.", toString().c_str());
     }
 
     for (auto &var : uniqVar_) {
-- 
GitLab