This seems to be causing all sorts of compiler errors. Probably due to the fact that, even though some of the posix headers are being included, I am using the MSL headers rather than the BSD headers, and my understanding is that none of that posix stuff will actually work until I eject the MSL in favor of the Unix C headers, which I am not prepared to do right now.
That and the fact that since I am using Carbon, TARGET_CARBON is also true, therefore BOOST_HAS_MPTASKS is getting set to true.
So anyway ... BOOST_HAS_PTHREADS and BOOST_HAS_MPTASKS are both getting defined.
I would like to be able to control whether BOOST_HAS_PTHREADS gets defined, because I am actually wanting to use the MP libraries instead, despite _POSIX_THREADS being defined.
It looks like how you handled this same problem with Windows was by adding a !defined(BOOST_HAS_WINTHREADS) to the condition as follows:
# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) # define BOOST_HAS_PTHREADS # endif
One solution would be to add an additional check for MP Tasks as follows:
# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_MPTASKS) # define BOOST_HAS_PTHREADS # endif
OK, I've changed the check in posix_features.hpp to check for BOOST_HAS_MPTASKS, and in macos.hpp I've changed the code to check for TARGET_CARBON before including posix_features.hpp. Thanks for the report. Regards, John Maddock http://ourworld.compuserve.com/homepages/john_maddock/index.htm