fix a llvm compilation error with llvm16
authorYonghong Song <yhs@fb.com>
Wed, 10 Aug 2022 07:13:43 +0000 (00:13 -0700)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 22 Feb 2024 14:17:55 +0000 (15:17 +0100)
LLVM16 patch
  https://github.com/llvm/llvm-project/commit/b4e9977fc18405d4a11cbaf1975bcadbf75920b8
caused bcc build failure like below:

 from /.../bcc/src/cc/frontends/clang/b_frontend_action.cc:23:
 /.../llvm-project/llvm/build/install/include/llvm/ADT/StringRef.h:96:54: error: expected β€˜)’ before β€˜Str’
     /*implicit*/ constexpr StringRef(std::string_view Str)
                                     ~                ^~~~
                                                      )
 /.../llvm-project/llvm/build/install/include/llvm/ADT/StringRef.h:239:14: error: expected type-specifier
     operator std::string_view() const {
              ^~~

LLVM build itself now is done with c++17. Let us also compile with c++17
if bcc is built with llvm16.

Signed-off-by: Yonghong Song <yhs@fb.com>
CMakeLists.txt

index 8d5fd9e7c9423daec945daed56d525d381ca1c04..87f85e0da6782b95b5b901dba42f7c7af6e3d109 100644 (file)
@@ -142,7 +142,11 @@ if (USINGISYSTEM AND GCC_VERSION VERSION_LESS 6.0)
 endif()
 
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_STANDARD 14)
+if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 16 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 16)
+  set(CMAKE_CXX_STANDARD 17)
+else()
+  set(CMAKE_CXX_STANDARD 14)
+endif()
 
 endif(NOT PYTHON_ONLY)