casacore
casa
aipsenv.h
Go to the documentation of this file.
1
//# aipsenv.h: Global initialization for special Casacore macros
2
//# Copyright (C) 2000,2001,2002,2003,2004,2016
3
//# Associated Universities, Inc. Washington DC, USA.
4
//#
5
//# This library is free software; you can redistribute it and/or modify it
6
//# under the terms of the GNU Library General Public License as published by
7
//# the Free Software Foundation; either version 2 of the License, or (at your
8
//# option) any later version.
9
//#
10
//# This library is distributed in the hope that it will be useful, but WITHOUT
11
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13
//# License for more details.
14
//#
15
//# You should have received a copy of the GNU Library General Public License
16
//# along with this library; if not, write to the Free Software Foundation,
17
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18
//#
19
//# Correspondence concerning AIPS++ should be addressed as follows:
20
//# Internet email: aips2-request@nrao.edu.
21
//# Postal address: AIPS++ Project Office
22
//# National Radio Astronomy Observatory
23
//# 520 Edgemont Road
24
//# Charlottesville, VA 22903-2475 USA
25
//#
26
//# $Id$
27
28
// this file contains all the compiler specific defines
29
30
#ifndef CASA_AIPSENV_H
31
#define CASA_AIPSENV_H
32
33
namespace
casacore
{
//# NAMESPACE CASACORE - BEGIN
34
35
// Set if compiler supports C++11 or newer
36
#if __cplusplus >= 201103L
37
#define AIPS_CXX11
38
#endif
39
40
// Set if compiler supports C++14 or newer
41
#if __cplusplus >= 201402L
42
#define AIPS_CXX11
43
#define AIPS_CXX14
44
#endif
45
46
// Set if GCC compiler is used.
47
#if defined(AIPS_GCC)
48
#undef AIPS_GCC
49
#endif
50
#if defined(__GNUC__)
51
#define AIPS_GCC
52
#endif
53
54
/* ONLY USE IF CODE WILL _NOT_ WORK WITH NEWER VERSIONS */
55
#if defined(AIPS_GCC2)
56
#undef AIPS_GCC2
57
#endif
58
#if (defined(AIPS_GCC) && __GNUC_CC == 2)
59
#define AIPS_GCC2
60
#endif
61
62
/* ONLY USE IF CODE WILL _NOT_ WORK WITH NEWER VERSIONS */
63
#if defined(AIPS_GCC295)
64
#undef AIPS_GCC295
65
#endif
66
#if (defined(AIPS_GCC2) && __GNUC_MINOR__ == 95)
67
#define AIPS_GCC295
68
#endif
69
70
/* ONLY USE IF CODE WILL _NOT_ WORK WITH NEWER VERSIONS */
71
#if defined(AIPS_GCC3)
72
#undef AIPS_GCC3
73
#endif
74
#if (defined(AIPS_GCC) && __GNUC__ == 3)
75
#define AIPS_GCC3
76
#endif
77
78
/* ONLY USE IF CODE WILL _NOT_ WORK WITH NEWER VERSIONS */
79
#if defined(AIPS_GCC4)
80
#undef AIPS_GCC4
81
#endif
82
#if (defined(AIPS_GCC) && __GNUC__ == 4)
83
#define AIPS_GCC4
84
#endif
85
86
// Alternate project compiler
87
#if defined(AIPS_SGI)
88
#undef AIPS_SGI
89
#endif
90
#if defined(__sgi)
91
#define AIPS_SGI
92
#if defined(_MIPS_SZPTR) && (_MIPS_SZPTR == 64)
93
#define AIPS_64B
94
#define SGI64
95
#endif
96
#endif
97
98
// Alternate project compiler
99
#if defined(AIPS_SUN_NATIVE)
100
#undef AIPS_SUN_NATIVE
101
#endif
102
#if defined(__SUNPRO_CC)
103
#define AIPS_SUN_NATIVE
104
#endif
105
106
#if defined(AIPS_SOLARIS)
107
#undef AIPS_SOLARIS
108
#endif
109
#if defined(__sun)
110
#define AIPS_SOLARIS
111
#endif
112
113
#if defined(AIPS_HP)
114
#undef AIPS_HP
115
#endif
116
#if defined(__hp)
117
#define AIPS_HP
118
#endif
119
120
#if defined(AIPS_ALPHA)
121
#undef AIPS_ALPHA
122
#endif
123
#if defined(__alpha)
124
#define AIPS_ALPHA
125
#define AIPS_64B
126
#endif
127
128
#if defined(AIPS_BSD)
129
#undef AIPS_BSD
130
#endif
131
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
132
#define AIPS_BSD
133
#define AIPS_NOLARGEFILE
134
#endif
135
136
#if defined(AIPS_HURD)
137
#undef AIPS_HURD
138
#endif
139
#if defined(__gnu_hurd__)
140
#define AIPS_HURD
141
#endif
142
143
#if defined(AIPS_LINUX)
144
#undef AIPS_LINUX
145
#endif
146
#if defined(__linux__)
147
#define AIPS_LINUX
148
#endif
149
150
#if defined(AIPS_KAI)
151
#undef AIPS_KAI
152
#endif
153
#if defined(__kai)
154
#define AIPS_KAI
155
#endif
156
157
#if defined(AIPS_AIX)
158
#undef AIPS_AIX
159
#endif
160
#if defined(_AIX)
161
#define AIPS_AIX
162
#endif
163
164
#if defined(AIPS_INTELCC)
165
#undef AIPS_INTELCC
166
#endif
167
#if defined(__INTEL_COMPILER)
168
#define AIPS_INTELCC
169
#endif
170
171
#if defined(AIPS_CRAY_PGI)
172
#undef AIPS_CRAY_PGI
173
#endif
174
#if defined(__QK_USER__)
175
#define AIPS_CRAY_PGI
176
#if !defined(AIPS_NOLARGEFILE)
177
#define AIPS_NOLARGEFILE
178
#endif
179
#if !defined(AIPS_NO_LEA_MALLOC)
180
#define AIPS_NO_LEA_MALLOC
181
#endif
182
#endif
183
184
#if defined(AIPS_CRAY_CATAMOUNT)
185
#undef AIPS_CRAY_CATAMOUNT
186
#endif
187
#if defined(__LIB_CATAMOUNT__)
188
#define AIPS_CRAY_CATAMOUNT
189
#endif
190
191
#if (defined(__ia64) || defined(__x86_64__) || defined(__aarch64__))
192
# if !defined(AIPS_64B)
193
# define AIPS_64B
194
# endif
195
#endif
196
197
#if defined(AIPS_I386)
198
#undef AIPS_I386
199
#endif
200
#if defined(i386)
201
#define AIPS_I386
202
#endif
203
204
#if defined(AIPS_DARWIN)
205
#undef AIPS_DARWIN
206
#endif
207
#if defined(__APPLE__)
208
#define AIPS_DARWIN
209
// No need for largefile definition as it is the default under DARWIN
210
#define AIPS_NOLARGEFILE
211
// Don't use AIPS_LITTLE_ENDIAN as this would prevent universal builds
212
// from working. Auto-detect from AIPS_I386 for intel Macs
213
#define AIPS_NO_LEA_MALLOC
214
# if defined(AIPS_LITTLE_ENDIAN)
215
# undef AIPS_LITTLE_ENDIAN
216
# endif
217
#endif
218
219
// If the compiler specifies endianness, use that
220
#if !(defined(AIPS_LITTLE_ENDIAN))
221
#if (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__))
222
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
223
#define AIPS_LITTLE_ENDIAN
224
#endif
225
#else
226
// Automatically configure for known LITTLE ENDIAN systems
227
#if (defined(AIPS_ALPHA) || defined(AIPS_I386) || defined(__x86_64__) || defined(__ARMEL__) || defined(__AARCH64EL__))
228
#define AIPS_LITTLE_ENDIAN
229
#endif
230
#endif
231
#endif
232
233
234
// If needed, define the LFS variables (needed in code using cfitsio).
235
#ifndef AIPS_NOLARGEFILE
236
# undef _FILE_OFFSET_BITS
237
# define _FILE_OFFSET_BITS 64
238
# ifndef _LARGEFILE_SOURCE
239
# define _LARGEFILE_SOURCE
240
# endif
241
# ifndef _LARGEFILE64_SOURCE
242
# define _LARGEFILE64_SOURCE
243
# endif
244
#endif
245
246
247
// Compiler hints for branch prediction (and code layout).
248
// Use only after profiling performance critical code,
249
// or on checks for exceptional conditions.
250
#if defined __GNUC__ || defined __clang__
251
#define AIPS_LIKELY(x) __builtin_expect(!!(x), 1)
252
#define AIPS_UNLIKELY(x) __builtin_expect(!!(x), 0)
253
#else
254
#define AIPS_LIKELY(x) (x)
255
#define AIPS_UNLIKELY(x) (x)
256
#endif
257
258
}
//# NAMESPACE CASACORE - END
259
#endif
casacore
this file contains all the compiler specific defines
Definition:
mainpage.dox:28
Generated by
1.8.18