~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to system/lib/compiler-rt/int_endianness.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* ===-- int_endianness.h - configuration header for compiler-rt ------------===
 
2
 *
 
3
 *                     The LLVM Compiler Infrastructure
 
4
 *
 
5
 * This file is dual licensed under the MIT and the University of Illinois Open
 
6
 * Source Licenses. See LICENSE.TXT for details.
 
7
 *
 
8
 * ===----------------------------------------------------------------------===
 
9
 *
 
10
 * This file is a configuration header for compiler-rt.
 
11
 * This file is not part of the interface of this library.
 
12
 *
 
13
 * ===----------------------------------------------------------------------===
 
14
 */
 
15
 
 
16
#ifndef INT_ENDIANNESS_H
 
17
#define INT_ENDIANNESS_H
 
18
 
 
19
#if defined(__SVR4) && defined(__sun)
 
20
#include <sys/byteorder.h>
 
21
 
 
22
#if _BYTE_ORDER == _BIG_ENDIAN
 
23
#define _YUGA_LITTLE_ENDIAN 0
 
24
#define _YUGA_BIG_ENDIAN    1
 
25
#elif _BYTE_ORDER == _LITTLE_ENDIAN 
 
26
#define _YUGA_LITTLE_ENDIAN 1
 
27
#define _YUGA_BIG_ENDIAN    0
 
28
#endif /* _BYTE_ORDER */
 
29
 
 
30
#endif /* Solaris and AuroraUX. */
 
31
 
 
32
/* .. */
 
33
 
 
34
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__minix)
 
35
#include <sys/endian.h>
 
36
 
 
37
#if _BYTE_ORDER == _BIG_ENDIAN
 
38
#define _YUGA_LITTLE_ENDIAN 0
 
39
#define _YUGA_BIG_ENDIAN    1
 
40
#elif _BYTE_ORDER == _LITTLE_ENDIAN
 
41
#define _YUGA_LITTLE_ENDIAN 1
 
42
#define _YUGA_BIG_ENDIAN    0
 
43
#endif /* _BYTE_ORDER */
 
44
 
 
45
#endif /* *BSD */
 
46
 
 
47
#if defined(__OpenBSD__) || defined(__Bitrig__)
 
48
#include <machine/endian.h>
 
49
 
 
50
#if _BYTE_ORDER == _BIG_ENDIAN
 
51
#define _YUGA_LITTLE_ENDIAN 0
 
52
#define _YUGA_BIG_ENDIAN    1
 
53
#elif _BYTE_ORDER == _LITTLE_ENDIAN
 
54
#define _YUGA_LITTLE_ENDIAN 1
 
55
#define _YUGA_BIG_ENDIAN    0
 
56
#endif /* _BYTE_ORDER */
 
57
 
 
58
#endif /* OpenBSD and Bitrig. */
 
59
 
 
60
/* .. */
 
61
 
 
62
/* Mac OSX has __BIG_ENDIAN__ or __LITTLE_ENDIAN__ automatically set by the compiler (at least with GCC) */
 
63
#if defined(__APPLE__) && defined(__MACH__) || defined(__ellcc__ )
 
64
 
 
65
#ifdef __BIG_ENDIAN__
 
66
#if __BIG_ENDIAN__
 
67
#define _YUGA_LITTLE_ENDIAN 0
 
68
#define _YUGA_BIG_ENDIAN    1
 
69
#endif
 
70
#endif /* __BIG_ENDIAN__ */
 
71
 
 
72
#ifdef __LITTLE_ENDIAN__
 
73
#if __LITTLE_ENDIAN__
 
74
#define _YUGA_LITTLE_ENDIAN 1
 
75
#define _YUGA_BIG_ENDIAN    0
 
76
#endif
 
77
#endif /* __LITTLE_ENDIAN__ */
 
78
 
 
79
#endif /* Mac OSX */
 
80
 
 
81
/* .. */
 
82
 
 
83
#if defined(__linux__)
 
84
#include <endian.h>
 
85
 
 
86
#if __BYTE_ORDER == __BIG_ENDIAN
 
87
#define _YUGA_LITTLE_ENDIAN 0
 
88
#define _YUGA_BIG_ENDIAN    1
 
89
#elif __BYTE_ORDER == __LITTLE_ENDIAN
 
90
#define _YUGA_LITTLE_ENDIAN 1
 
91
#define _YUGA_BIG_ENDIAN    0
 
92
#endif /* __BYTE_ORDER */
 
93
 
 
94
#endif /* GNU/Linux */
 
95
 
 
96
#if defined(_WIN32)
 
97
 
 
98
#define _YUGA_LITTLE_ENDIAN 1
 
99
#define _YUGA_BIG_ENDIAN    0
 
100
 
 
101
#endif /* Windows */
 
102
 
 
103
#if defined(EMSCRIPTEN)
 
104
 
 
105
#define _YUGA_LITTLE_ENDIAN 1
 
106
#define _YUGA_BIG_ENDIAN    0
 
107
 
 
108
#endif /* emscripten */
 
109
 
 
110
/* . */
 
111
 
 
112
#if !defined(_YUGA_LITTLE_ENDIAN) || !defined(_YUGA_BIG_ENDIAN)
 
113
#error Unable to determine endian
 
114
#endif /* Check we found an endianness correctly. */
 
115
 
 
116
#endif /* INT_ENDIANNESS_H */