mirror of
https://github.com/boostorg/predef.git
synced 2025-07-31 20:24:26 +02:00
Add BSD specific includes. Add case for Windows on ARM CPUs. Add
compatibility header.
This commit is contained in:
@@ -57,7 +57,7 @@
|
||||
</table></div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"><p><small>Last revised: March 19, 2013 at 03:53:01 GMT</small></p></td>
|
||||
<td align="left"><p><small>Last revised: March 20, 2013 at 04:42:44 GMT</small></p></td>
|
||||
<td align="right"><div class="copyright-footer"></div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
|
22
include/boost/predef/detail/endian_compat.h
Normal file
22
include/boost/predef/detail/endian_compat.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
Copyright Redshift Software, Inc. 2013
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_PREDEF_DETAIL_ENDIAN_COMPAT_H
|
||||
#define BOOST_PREDEF_DETAIL_ENDIAN_COMPAT_H
|
||||
|
||||
#include <boost/predef/endian.h>
|
||||
|
||||
#if BOOST_PREDEF_ENDIAN_BIG_BYTE
|
||||
# define BOOST_BIG_ENDIAN
|
||||
# define BOOST_BYTE_ORDER 4321
|
||||
#endif
|
||||
#if BOOST_PREDEF_ENDIAN_LITTLE_BYTE
|
||||
# define BOOST_LITTLE_ENDIAN
|
||||
# define BOOST_BYTE_ORDER 1234
|
||||
#endif
|
||||
|
||||
#endif
|
@@ -11,6 +11,7 @@ http://www.boost.org/LICENSE_1_0.txt)
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/make.h>
|
||||
#include <boost/predef/library/c/gnu.h>
|
||||
#include <boost/predef/os/bsd.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_ENDIAN_*`]
|
||||
@@ -52,6 +53,14 @@ information and acquired knowledge:
|
||||
!BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
|
||||
# if BOOST_LIB_C_GNU
|
||||
# include <endian.h>
|
||||
# else
|
||||
# if BOOST_OS_BSD
|
||||
# if BOOST_OS_BSD_OPEN
|
||||
# include <machine/endian.h>
|
||||
# else
|
||||
# include <sys/endian.h>
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
# if defined(__BYTE_ORDER)
|
||||
# if (__BYTE_ORDER == __BIG_ENDIAN)
|
||||
@@ -67,6 +76,20 @@ information and acquired knowledge:
|
||||
# define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# endif
|
||||
# endif
|
||||
# if !defined(__BYTE_ORDER) && defined(_BYTE_ORDER)
|
||||
# if (_BYTE_ORDER == _BIG_ENDIAN)
|
||||
# undef BOOST_ENDIAN_BIG_BYTE
|
||||
# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# endif
|
||||
# if (_BYTE_ORDER == _LITTLE_ENDIAN)
|
||||
# undef BOOST_ENDIAN_LITTLE_BYTE
|
||||
# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# endif
|
||||
# if (_BYTE_ORDER == _PDP_ENDIAN)
|
||||
# undef BOOST_ENDIAN_LITTLE_WORD
|
||||
# define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Built-in byte-swpped big-endian macros.
|
||||
@@ -74,7 +97,7 @@ information and acquired knowledge:
|
||||
#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
|
||||
!BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
|
||||
# if !BOOST_ENDIAN_BIG_BYTE
|
||||
# if defined(__BIG_ENDIAN__) || \
|
||||
# if (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) || \
|
||||
defined(__ARMEB__) || \
|
||||
defined(__THUMBEB__) || \
|
||||
defined(__AARCH64EB__) || \
|
||||
@@ -92,7 +115,7 @@ information and acquired knowledge:
|
||||
#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
|
||||
!BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
|
||||
# if !BOOST_ENDIAN_LITTLE_BYTE
|
||||
# if defined(__LITTLE_ENDIAN__) || \
|
||||
# if (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \
|
||||
defined(__ARMEL__) || \
|
||||
defined(__THUMBEL__) || \
|
||||
defined(__AARCH64EL__) || \
|
||||
@@ -127,6 +150,20 @@ information and acquired knowledge:
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Windows on ARM, if not otherwise detected/specified, is always
|
||||
* byte-swaped little-endian.
|
||||
*/
|
||||
#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
|
||||
!BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
|
||||
# if BOOST_ARCH_ARM
|
||||
# include <boost/predef/os/windows.h>
|
||||
# if BOOST_OS_WINDOWS
|
||||
# undef BOOST_ENDIAN_LITTLE_BYTE
|
||||
# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if BOOST_ENDIAN_BIG_BYTE
|
||||
# define BOOST_ENDIAN_BIG_BYTE_AVAILABLE
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user