]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: avoid duplicate symbols
authorLucian Petrut <lpetrut@cloudbasesolutions.com>
Tue, 11 Apr 2023 08:39:10 +0000 (08:39 +0000)
committerLucian Petrut <lpetrut@cloudbasesolutions.com>
Wed, 30 Aug 2023 12:59:00 +0000 (12:59 +0000)
Some symbols from the crc32, arch and fmt libs
are re-exported by libceph-common:

  FAILED: bin/unittest_time.exe
  ld.lld: error: fmt::v9::format_error::~format_error() was replaced

llvm throws errors because of the duplicate symbols.
One workaround is to use objects instead of static libs
for the libs. For libfmt we'll use the header-only version.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
src/arch/CMakeLists.txt
src/common/CMakeLists.txt
src/crimson/CMakeLists.txt
win32_build.sh

index ba1157358a7cc4986bbaf63dc0afb19483183658..e849e4896f4cfd41b1dc8e75d7e258a5c4a34b86 100644 (file)
@@ -9,4 +9,4 @@ elseif(HAVE_PPC64LE OR HAVE_PPC64 OR HAVE_PPC)
   list(APPEND arch_srcs ppc.c)
 endif()
 
-add_library(arch STATIC ${arch_srcs})
+add_library(arch OBJECT ${arch_srcs})
index 1297df32405aae00f2ed7f1c9742065d48fb25bc..695ea7a68b3e0253ec6c5730826301f3dc93f6db 100644 (file)
@@ -229,7 +229,8 @@ elseif(HAVE_ARMV8_CRC)
     crc32c_aarch64.c)
 endif(HAVE_INTEL)
 
-add_library(crc32 STATIC ${crc32_srcs})
+add_library(crc32 OBJECT ${crc32_srcs})
+
 if(HAVE_ARMV8_CRC)
   set_target_properties(crc32 PROPERTIES
     COMPILE_FLAGS "${CMAKE_C_FLAGS} ${ARMV8_CRC_COMPILE_FLAGS}")
index e2b37fac9cbf0335eec80381d444caee710d728a..6b1b086db33e6909976ab8de3ba7bff060272822 100644 (file)
@@ -148,7 +148,7 @@ target_link_libraries(crimson-common
   PUBLIC
     ${crimson_common_public_deps}
   PRIVATE
-    crc32
+    crc32 arch
     ${crimson_common_deps}
     OpenSSL::Crypto)
 
index 3644074ef441d4eaf1806a28ea19ce72455f3a41..c29b58491725580eac0fa41c827b948c0caccfc2 100755 (executable)
@@ -161,6 +161,7 @@ fi
 cmake -D CMAKE_PREFIX_PATH=$depsDirs \
       -D MINGW_LINK_DIRECTORIES="$linkDirs" \
       -D CMAKE_TOOLCHAIN_FILE="$MINGW_CMAKE_FILE" \
+      -D WITH_FMT_HEADER_ONLY=ON \
       -D WITH_LIBCEPHSQLITE=OFF \
       -D WITH_RDMA=OFF -D WITH_OPENLDAP=OFF \
       -D WITH_GSSAPI=OFF -D WITH_XFS=OFF \