Target objective-c++ workaround at non-apple gcc only. Fix to make it work with gcc 4.3 and earlier.
diff --git a/asio/include/asio/detail/pop_options.hpp b/asio/include/asio/detail/pop_options.hpp index 5fffc64..8b4e16f 100644 --- a/asio/include/asio/detail/pop_options.hpp +++ b/asio/include/asio/detail/pop_options.hpp
@@ -31,9 +31,15 @@ # pragma pack (pop) # endif -# if defined(__OBJC__) -# pragma pop_macro("Protocol") -# pragma pop_macro("id") +# if defined(__OBJC__) && !defined(__APPLE_CC__) +# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) || (__GNUC__ > 4) +# pragma pop_macro("Protocol") +# pragma pop_macro("id") +# elif defined(ASIO_OBJC_WORKAROUND) +# undef Protocol +# undef id +# undef ASIO_OBJC_WORKAROUND +# endif # endif #elif defined(__KCC)
diff --git a/asio/include/asio/detail/push_options.hpp b/asio/include/asio/detail/push_options.hpp index 1721841..9b52215 100644 --- a/asio/include/asio/detail/push_options.hpp +++ b/asio/include/asio/detail/push_options.hpp
@@ -31,11 +31,17 @@ # pragma pack (push, 8) # endif -# if defined(__OBJC__) -# pragma push_macro("Protocol") -# define Protocol cpp_Protocol -# pragma push_macro("id") -# define id cpp_id +# if defined(__OBJC__) && !defined(__APPLE_CC__) +# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) || (__GNUC__ > 4) +# pragma push_macro("Protocol") +# define Protocol cpp_Protocol +# pragma push_macro("id") +# define id cpp_id +# elif !defined(Protocol) && !defined(id) +# define Protocol cpp_Protocol +# define id cpp_id +# define ASIO_OBJC_WORKAROUND +# endif # endif #elif defined(__KCC)