mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-02 07:05:24 +00:00
5506155fa1
Compiling Gecko with libc++ and GCC 4.9 on Android runs into a problem. The protobuf #includes and libc++ result in preprocessed code that looks something like: /* via <iterator> */ namespace std { namespace __1 { } using namespace __1 __attribute__((__strong__)); } namespace std { namespace __1 { template <class _Iter> class __wrap_iter { ... template <class _Tp, class _Alloc> friend class vector; ... }; } // namespace __1 } // namespace std /* via <vector> */ namespace std { namespace __1 { template <class _Tp, class _Alloc> class _LIBCPP_TYPE_VIS_ONLY vector : ... { ... }; } // namespace __1 } // namespace std and the problem is that GCC doesn't understand that the forward declaration of vector inside __wrap_iter is forward-declaring the actual vector class; it thinks it's declaring something else. Hacking <iterator> to include _LIBCPP_TYPE_VIS_ONLY for the forward declaration doesn't help. What does help is including <vector> earlier than <iterator>, so the __wrap_iter forward declaration picks up the correct definition of std::vector, and makes everything happy. It's possible that there are other places that could get this same treatment, but this one place was the only one I needed to modify to make things go. |
||
---|---|---|
.. | ||
src/google/protobuf | ||
COPYING.txt | ||
m-c-changes.patch | ||
moz.build | ||
README.txt | ||
upgrade_protobuf.sh |
Protocol Buffers (protobuf) source is available (via svn) at: svn checkout http://protobuf.googlecode.com/svn/trunk/ protobuf-read-only Or via git at: https://github.com/google/protobuf This code is covered under the BSD license (see COPYING.txt). Documentation is available at http://code.google.com/p/protobuf. The tree's current version of the protobuf library is 2.6.1. We do not include the protobuf tests or the protoc compiler. -------------------------------------------------------------------------------- # Upgrading the Protobuf Library 1. Get a new protobuf release from https://github.com/google/protobuf/releases 2. Run `$ ./toolkit/components/protobuf/upgrade_protobuf.sh ~/path/to/release/checkout/of/protobuf`. 3. Update the moz.build to export the new set of headers and add any new .cc files to the unified sources and remove old ones.