From b4dd8b40ab05f02527b7c83df12b010a54ce22ec Mon Sep 17 00:00:00 2001 From: "Galantsev, Dmitrii" Date: Thu, 30 Jan 2025 10:33:58 -0600 Subject: [PATCH] CMAKE - Fix ABSL in clang18+ (#106) Please see: - https://github.com/abseil/abseil-cpp/issues/1747 - https://github.com/llvm/llvm-project/issues/102443 When GRPC is compiled with different compiler from RDC - ABI broke. Possibly because some templates were not instantiated. Setting '-fclang-abi-compat=17' fixes the issue. Change-Id: Ic6409cf413c87b135f334e5b03145cb1c63356d4 Signed-off-by: Galantsev, Dmitrii [ROCm/rdc commit: a8d479c147c4472c4807e0f398ab2414e6b3c57f] --- projects/rdc/README.md | 1 + projects/rdc/server/CMakeLists.txt | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/projects/rdc/README.md b/projects/rdc/README.md index ea98656584..2170d5c8ce 100644 --- a/projects/rdc/README.md +++ b/projects/rdc/README.md @@ -70,6 +70,7 @@ Below example installs gRPC into `/opt/grpc` -DgRPC_INSTALL=ON \ -DgRPC_BUILD_TESTS=OFF \ -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_SHARED_LINKER_FLAGS_INIT=-Wl,--enable-new-dtags,--build-id=sha1,--rpath,'$ORIGIN' \ -DCMAKE_INSTALL_PREFIX="$GRPC_ROOT" \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_BUILD_TYPE=Release diff --git a/projects/rdc/server/CMakeLists.txt b/projects/rdc/server/CMakeLists.txt index 745865ae4f..9ed097dbfd 100755 --- a/projects/rdc/server/CMakeLists.txt +++ b/projects/rdc/server/CMakeLists.txt @@ -48,6 +48,16 @@ else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -O0 -DDEBUG") endif() +# Issue with ABI compatibility and gRPC. +# See: +# - https://github.com/llvm/llvm-project/issues/102443 +# - https://github.com/abseil/abseil-cpp/issues/1747 +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 18.0.0) + message("Compiler is " ${CMAKE_CXX_COMPILER_ID} ":" ${CMAKE_CXX_COMPILER_VERSION}) + message("Applying abi patch...") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fclang-abi-compat=17") +endif() + set(SRC_DIR "src") set(INC_DIR "include/rdc")