Browse Source

Link to libatomic when necessary (eg. on armv6l)

Ben Wolsieffer 7 years ago
parent
commit
56b40a8f05
3 changed files with 20 additions and 4 deletions
  1. 16 0
      configure.ac
  2. 2 2
      src/Makefile.am
  3. 2 2
      tests.sh

+ 16 - 0
configure.ac

@@ -165,6 +165,22 @@ AS_IF([test "$with_zlib" != no], [
 ])
 ])
 AM_CONDITIONAL([HAVE_ZLIB], [test $HAVE_ZLIB = 1])
 AM_CONDITIONAL([HAVE_ZLIB], [test $HAVE_ZLIB = 1])
 
 
+dnl On some platforms, std::atomic needs a helper library
+AC_MSG_CHECKING(whether -latomic is needed)
+AC_LINK_IFELSE([AC_LANG_SOURCE([[
+  #include <atomic>
+  #include <cstdint>
+  std::atomic<std::int64_t> v;
+  int main() {
+    return v;
+  }
+]])], STD_ATOMIC_NEED_LIBATOMIC=no, STD_ATOMIC_NEED_LIBATOMIC=yes)
+AC_MSG_RESULT($STD_ATOMIC_NEED_LIBATOMIC)
+if test "x$STD_ATOMIC_NEED_LIBATOMIC" = xyes; then
+  LIBATOMIC_LIBS="-latomic"
+fi
+AC_SUBST([LIBATOMIC_LIBS])
+
 AS_IF([test "$with_protoc" != "no"], [
 AS_IF([test "$with_protoc" != "no"], [
   PROTOC=$with_protoc
   PROTOC=$with_protoc
   AS_IF([test "$with_protoc" = "yes"], [
   AS_IF([test "$with_protoc" = "yes"], [

+ 2 - 2
src/Makefile.am

@@ -166,7 +166,7 @@ nobase_include_HEADERS =                                         \
 
 
 lib_LTLIBRARIES = libprotobuf-lite.la libprotobuf.la libprotoc.la
 lib_LTLIBRARIES = libprotobuf-lite.la libprotobuf.la libprotoc.la
 
 
-libprotobuf_lite_la_LIBADD = $(PTHREAD_LIBS)
+libprotobuf_lite_la_LIBADD = $(PTHREAD_LIBS) $(LIBATOMIC_LIBS)
 libprotobuf_lite_la_LDFLAGS = -version-info 17:0:0 -export-dynamic -no-undefined
 libprotobuf_lite_la_LDFLAGS = -version-info 17:0:0 -export-dynamic -no-undefined
 if HAVE_LD_VERSION_SCRIPT
 if HAVE_LD_VERSION_SCRIPT
 libprotobuf_lite_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libprotobuf-lite.map
 libprotobuf_lite_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libprotobuf-lite.map
@@ -212,7 +212,7 @@ libprotobuf_lite_la_SOURCES =                                  \
   google/protobuf/io/zero_copy_stream.cc                       \
   google/protobuf/io/zero_copy_stream.cc                       \
   google/protobuf/io/zero_copy_stream_impl_lite.cc
   google/protobuf/io/zero_copy_stream_impl_lite.cc
 
 
-libprotobuf_la_LIBADD = $(PTHREAD_LIBS)
+libprotobuf_la_LIBADD = $(PTHREAD_LIBS) $(LIBATOMIC_LIBS)
 libprotobuf_la_LDFLAGS = -version-info 17:0:0 -export-dynamic -no-undefined
 libprotobuf_la_LDFLAGS = -version-info 17:0:0 -export-dynamic -no-undefined
 if HAVE_LD_VERSION_SCRIPT
 if HAVE_LD_VERSION_SCRIPT
 libprotobuf_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libprotobuf.map
 libprotobuf_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libprotobuf.map

+ 2 - 2
tests.sh

@@ -16,8 +16,8 @@ internal_build_cpp() {
   git submodule update --init --recursive
   git submodule update --init --recursive
 
 
   ./autogen.sh
   ./autogen.sh
-  ./configure CXXFLAGS="-fPIC"  # -fPIC is needed for python cpp test.
-                                # See python/setup.py for more details
+  ./configure CXXFLAGS="-fPIC -std=c++11"  # -fPIC is needed for python cpp test.
+                                           # See python/setup.py for more details
   make -j4
   make -j4
 }
 }