More stringent testing of OSX BSD like behavior. Fix BSD mis-detection

on OSX depending on include order.
This commit is contained in:
Rene Rivera
2013-10-14 23:21:51 -05:00
parent 6007034752
commit cf90bd0219
3 changed files with 14 additions and 7 deletions

View File

@ -8,6 +8,13 @@ http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_PREDEF_OS_BSD_H
#define BOOST_PREDEF_OS_BSD_H
/* Special case: OSX will define BSD predefs if the sys/param.h
* header is included. We can guard against that, but only if we
* detect OSX first. Hence we will force include OSX detection
* before doing any BSD detection.
*/
#include <boost/predef/os/macos.h>
#include <boost/predef/version_number.h>
#include <boost/predef/make.h>

View File

@ -12,9 +12,10 @@ http://www.boost.org/LICENSE_1_0.txt)
* tests that the sys/param.h include can be included before
* endian detection and still have it work correctly.
*/
#include <boost/predef/os/macos.h>
#if BOOST_OS_MACOS
#if defined(__APPLE__)
# include <sys/param.h>
# include <boost/predef/os/bsd.h>
# include <boost/predef/os/macos.h>
# include <boost/predef/other/endian.h>
#endif

View File

@ -9,12 +9,11 @@ http://www.boost.org/LICENSE_1_0.txt)
* OSX can masquerade as BSD when sys/param.h is previously included.
* So we test that we only detect OSX in this combination.
*/
#include <boost/predef/os/macos.h>
#if BOOST_OS_MACOS
#if defined(__APPLE__)
# include <sys/param.h>
# include <boost/predef/os/bsd.h>
# if BOOST_OS_BSD
# error "Both BOOST_OS_MACOS and BOOST_OS_BSD defined."
# include <boost/predef/os/macos.h>
# if !BOOST_OS_MACOS || BOOST_OS_BSD
# error "BOOST_OS_MACOS not detected and/or BOOST_OS_BSD mis-detected."
# endif
#endif