From: Fabrice Fontaine Date: Fri, 27 Dec 2019 09:40:00 +0000 (+0100) Subject: package/leveldb: fix static build with -latomic X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b5f58326476a797a5f3aad5f1a74998b22de96e7;p=buildroot.git package/leveldb: fix static build with -latomic Drop workaround and use an upstreamable solution to link with -latomic Fixes: - http://autobuild.buildroot.org/results/01d5a50581ac9e9b46f40e6f9665f74897db5e6f Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- diff --git a/package/leveldb/0003-CMakeLists.txt-check-for-atomic-library.patch b/package/leveldb/0003-CMakeLists.txt-check-for-atomic-library.patch new file mode 100644 index 0000000000..98609b6b93 --- /dev/null +++ b/package/leveldb/0003-CMakeLists.txt-check-for-atomic-library.patch @@ -0,0 +1,49 @@ +From 9e82eb57870ec7c01734b44ed4bb994362004df3 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 27 Dec 2019 10:20:53 +0100 +Subject: [PATCH] CMakeLists.txt: check for atomic library + +On some architectures, atomic binutils are provided by the libatomic +library from gcc. Linking with libatomic is therefore necessary, +otherwise the build fails with: + +[100%] Linking CXX executable leveldbutil +/home/fabrice/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/7.4.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: libleveldb.a(env_posix.cc.o): in function `leveldb::(anonymous namespace)::Limiter::Acquire()': +env_posix.cc:(.text+0x124): undefined reference to `__atomic_fetch_sub_4' + +This is often for example the case on sparcv8 32 bit. + +Fixes: + - http://autobuild.buildroot.org/results/01d5a50581ac9e9b46f40e6f9665f74897db5e6f + +Signed-off-by: Fabrice Fontaine +[Upstream status: https://github.com/google/leveldb/pull/765] +--- + CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index be41ba4..9d6773f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -41,6 +41,7 @@ include(CheckIncludeFile) + check_include_file("unistd.h" HAVE_UNISTD_H) + + include(CheckLibraryExists) ++check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_ATOMIC) + check_library_exists(crc32c crc32c_value "" HAVE_CRC32C) + check_library_exists(snappy snappy_compress "" HAVE_SNAPPY) + check_library_exists(tcmalloc malloc "" HAVE_TCMALLOC) +@@ -270,6 +271,9 @@ if(HAVE_CLANG_THREAD_SAFETY) + -Werror -Wthread-safety) + endif(HAVE_CLANG_THREAD_SAFETY) + ++if(HAVE_ATOMIC) ++ target_link_libraries(leveldb atomic) ++endif(HAVE_ATOMIC) + if(HAVE_CRC32C) + target_link_libraries(leveldb crc32c) + endif(HAVE_CRC32C) +-- +2.24.0 + diff --git a/package/leveldb/leveldb.mk b/package/leveldb/leveldb.mk index 5f5288be1c..cf3c096f5d 100644 --- a/package/leveldb/leveldb.mk +++ b/package/leveldb/leveldb.mk @@ -14,8 +14,4 @@ LEVELDB_CONF_OPTS = \ -DLEVELDB_BUILD_BENCHMARKS=OFF \ -DLEVELDB_BUILD_TESTS=OFF -ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -LEVELDB_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic -endif - $(eval $(cmake-package))