mapnik / mapnik-packaging

DEPRECATED packaging utilities for mapnik dependencies
39 stars 28 forks source link

protoc linking broken for android/lib++ #172

Open springmeyer opened 10 years ago

springmeyer commented 10 years ago

https://travis-ci.org/mapnik/mapnik-packaging/jobs/28950130#L5527

libcxx/src/ios.cpp:function std::__1::ios_base::xalloc(): error: undefined reference to '__atomic_fetch_add_4'
libtool: link: arm-linux-androideabi-clang++ -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -I/home/travis/build/mapnik/mapnik-packaging/osx/out/build-cpp11-libstdcpp-gcc-arm-android/include -DNDEBUG -O3 -D_FILE_OFFSET_BITS=64 -fPIC -D_LITTLE_ENDIAN -Wno-unused-local-typedefs -O3 -o protoc main.o  -L/home/travis/build/mapnik/mapnik-packaging/osx/out/build-cpp11-libstdcpp-gcc-arm-android/lib ./.libs/libprotobuf.a ./.libs/libprotoc.a /home/travis/build/mapnik/mapnik-packaging/osx/out/packages/protobuf-2.5.0-gcc-arm/src/.libs/libprotobuf.a
/home/travis/build/mapnik/mapnik-packaging/osx/out/packages/android-ndk-r9d/active-platform/bin/../arm-linux-androideabi/lib/libstdc++.a(ios.o):/tmp/ndk-andrewhsieh/tmp/build-21097/build-libc++/ndk/sources/cxx-stl/llvm-libc++/libcxx/src/ios.cpp:function std::__1::ios_base::xalloc(): error: undefined reference to '__atomic_fetch_add_4'
clang34: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [protoc] Error 1
make[3]: Leaving directory `/home/travis/build/mapnik/mapnik-packaging/osx/out/packages/protobuf-2.5.0-gcc-arm/src'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/travis/build/mapnik/mapnik-packaging/osx/out/packages/protobuf-2.5.0-gcc-arm/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/travis/build/mapnik/mapnik-packaging/osx/out/packages/protobuf-2.5.0-gcc-arm'
make: *** [all] Error 2
christ0pher commented 10 years ago

Hey, i was stumbling over this error here. I had the same problem with a build for mobile devices. I fixed it with:

#if __has_feature(cxx_atomic)
#include "atomic"
atomic<int> ios_base::__xindex_ = ATOMIC_VAR_INIT(0);
#else
int ios_base::__xindex_ = 0;
#endif

The #include from the atomic was missing.

springmeyer commented 10 years ago

@christ0pher - wow, thanks for the details on your fix. Which file did you apply this patch to?

christ0pher commented 10 years ago

@springmeyer the file was: ios.cpp