comparison armadillo-3.900.4/include/armadillo_bits/compiler_setup.hpp @ 49:1ec0e2823891

Switch to using subrepo copies of qm-dsp, nnls-chroma, vamp-plugin-sdk; update Armadillo version; assume build without external BLAS/LAPACK
author Chris Cannam
date Thu, 13 Jun 2013 10:25:24 +0100
parents
children
comparison
equal deleted inserted replaced
48:69251e11a913 49:1ec0e2823891
1 // Copyright (C) 2008-2013 NICTA (www.nicta.com.au)
2 // Copyright (C) 2008-2013 Conrad Sanderson
3 //
4 // This Source Code Form is subject to the terms of the Mozilla Public
5 // License, v. 2.0. If a copy of the MPL was not distributed with this
6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
8
9
10 #define arma_hot
11 #define arma_cold
12 #define arma_pure
13 #define arma_const
14 #define arma_aligned
15 #define arma_align_mem
16 #define arma_warn_unused
17 #define arma_deprecated
18 #define arma_malloc
19 #define arma_inline inline
20 #define arma_noinline
21 #define arma_ignore(variable) ((void)(variable))
22
23
24 #if defined(ARMA_BLAS_UNDERSCORE)
25 #define arma_fortran2_noprefix(function) function##_
26 #define arma_fortran2_prefix(function) wrapper_##function##_
27 #else
28 #define arma_fortran2_noprefix(function) function
29 #define arma_fortran2_prefix(function) wrapper_##function
30 #endif
31
32 #if defined(ARMA_USE_WRAPPER)
33 #define arma_fortran(function) arma_fortran2_prefix(function)
34 #define arma_atlas(function) wrapper_##function
35 #else
36 #define arma_fortran(function) arma_fortran2_noprefix(function)
37 #define arma_atlas(function) function
38 #endif
39
40 #define arma_fortran_prefix(function) arma_fortran2_prefix(function)
41 #define arma_fortran_noprefix(function) arma_fortran2_noprefix(function)
42
43
44 #define ARMA_INCFILE_WRAP(x) <x>
45
46
47 #if ( ((_POSIX_C_SOURCE >= 200112L) || (_XOPEN_SOURCE >= 600)) && !defined(__MINGW32__) && !defined(__APPLE__) )
48 #define ARMA_HAVE_POSIX_MEMALIGN
49 #endif
50
51
52 #if (__cplusplus >= 201103L)
53 #if !defined(ARMA_USE_CXX11)
54 #define ARMA_USE_CXX11
55 #endif
56 #endif
57
58
59 #if defined(ARMA_USE_CXX11)
60 #if !defined(ARMA_USE_U64S64)
61 #define ARMA_USE_U64S64
62 #endif
63 #endif
64
65
66 #if defined(ARMA_64BIT_WORD)
67 #if !defined(ARMA_USE_U64S64)
68 #define ARMA_USE_U64S64
69 #endif
70 #endif
71
72
73 #if defined(__INTEL_COMPILER)
74
75 #if (__INTEL_COMPILER < 1000)
76 #error "*** Need a newer compiler ***"
77 #endif
78
79 #define ARMA_GOOD_COMPILER
80 #undef ARMA_HAVE_STD_TR1
81
82 #if (__INTEL_COMPILER <= 1110)
83 #undef ARMA_HAVE_STD_ISFINITE
84 #endif
85
86 // #undef arma_aligned
87 // #define arma_aligned __attribute__((aligned(16)))
88
89 #if defined(_MSC_VER)
90 #undef arma_align_mem
91 #define arma_align_mem __declspec(align(16))
92 #else
93 #undef arma_align_mem
94 #define arma_align_mem __attribute__((aligned(16)))
95 #endif
96
97 #define ARMA_HAVE_ALIGNED_ATTRIBUTE
98 #define ARMA_HAVE_ICC_ASSUME_ALIGNED
99
100 #elif defined(__GNUG__)
101
102 #if (__GNUC__ < 4)
103 #error "*** Need a newer compiler ***"
104 #endif
105
106 #define ARMA_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
107
108 #define ARMA_GOOD_COMPILER
109 #undef ARMA_HAVE_STD_TR1
110
111 #undef arma_pure
112 #undef arma_const
113 #undef arma_aligned
114 #undef arma_align_mem
115 #undef arma_warn_unused
116 #undef arma_deprecated
117 #undef arma_malloc
118 #undef arma_inline
119 #undef arma_noinline
120
121 #define arma_pure __attribute__((__pure__))
122 #define arma_const __attribute__((__const__))
123 #define arma_aligned __attribute__((__aligned__))
124 #define arma_align_mem __attribute__((__aligned__(16)))
125 #define arma_warn_unused __attribute__((__warn_unused_result__))
126 #define arma_deprecated __attribute__((__deprecated__))
127 #define arma_malloc __attribute__((__malloc__))
128 #define arma_inline inline __attribute__((__always_inline__))
129 #define arma_noinline __attribute__((__noinline__))
130
131 #define ARMA_HAVE_ALIGNED_ATTRIBUTE
132
133 #if (ARMA_GCC_VERSION >= 40300)
134 #undef arma_hot
135 #undef arma_cold
136
137 #define arma_hot __attribute__((__hot__))
138 #define arma_cold __attribute__((__cold__))
139 #endif
140
141 #if (ARMA_GCC_VERSION >= 40200)
142 #if defined(_GLIBCXX_USE_C99_MATH_TR1) && defined(_GLIBCXX_USE_C99_COMPLEX_TR1)
143 #define ARMA_HAVE_STD_TR1
144 #endif
145 #endif
146
147 #if defined(__GXX_EXPERIMENTAL_CXX0X__)
148 #undef ARMA_HAVE_STD_TR1
149
150 #if !defined(ARMA_USE_CXX11)
151 #define ARMA_USE_CXX11
152 #endif
153 #endif
154
155 #if defined(__clang__)
156 #undef ARMA_HAVE_STD_TR1
157 //#undef ARMA_GOOD_COMPILER
158 #endif
159
160 #if ( (ARMA_GCC_VERSION >= 40700) && (ARMA_GCC_VERSION <= 40701) )
161 #error "gcc versions 4.7.0 and 4.7.1 are unsupported; use 4.7.2 or later"
162 // due to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53549
163 #endif
164
165 #if (ARMA_GCC_VERSION >= 40700)
166 #define ARMA_HAVE_GCC_ASSUME_ALIGNED
167 // TODO: future versions of clang may also have __builtin_assume_aligned
168 #endif
169
170 #undef ARMA_GCC_VERSION
171
172 #endif
173
174
175 #if defined(__APPLE__)
176 #define ARMA_BLAS_SDOT_BUG
177 #endif
178
179
180 #if defined(_MSC_VER)
181
182 #if (_MSC_VER < 1500)
183 #error "*** Need a newer compiler ***"
184 #endif
185
186 #undef ARMA_GOOD_COMPILER
187 #undef ARMA_HAVE_STD_ISFINITE
188 #undef ARMA_HAVE_STD_SNPRINTF
189 #undef ARMA_HAVE_LOG1P
190 #undef ARMA_HAVE_STD_ISINF
191 #undef ARMA_HAVE_STD_ISNAN
192 #undef ARMA_HAVE_STD_TR1
193
194 // #undef arma_inline
195 // #define arma_inline inline __forceinline
196
197 #pragma warning(push)
198
199 #pragma warning(disable: 4127) // conditional expression is constant
200 #pragma warning(disable: 4510) // default constructor could not be generated
201 #pragma warning(disable: 4511) // copy constructor can't be generated
202 #pragma warning(disable: 4512) // assignment operator can't be generated
203 #pragma warning(disable: 4513) // destructor can't be generated
204 #pragma warning(disable: 4514) // unreferenced inline function has been removed
205 #pragma warning(disable: 4522) // multiple assignment operators specified
206 #pragma warning(disable: 4623) // default constructor can't be generated
207 #pragma warning(disable: 4624) // destructor can't be generated
208 #pragma warning(disable: 4625) // copy constructor can't be generated
209 #pragma warning(disable: 4626) // assignment operator can't be generated
210 #pragma warning(disable: 4710) // function not inlined
211 #pragma warning(disable: 4711) // call was inlined
212 #pragma warning(disable: 4714) // __forceinline can't be inlined
213
214 #if (_MANAGED == 1) || (_M_CEE == 1)
215
216 // don't do any alignment when compiling in "managed code" mode
217
218 #else
219 // #undef arma_aligned
220 // #define arma_aligned __declspec(align(16))
221
222 #undef arma_align_mem
223 #define arma_align_mem __declspec(align(16))
224
225 #define ARMA_HAVE_ALIGNED_ATTRIBUTE
226
227 // disable warnings: "structure was padded due to __declspec(align(16))"
228 #pragma warning(disable: 4324)
229
230 #endif
231
232 #endif
233
234
235 #if defined(__CUDACC__)
236 #undef ARMA_HAVE_STD_ISFINITE
237 #undef ARMA_HAVE_STD_SNPRINTF
238 #undef ARMA_HAVE_LOG1P
239 #undef ARMA_HAVE_STD_ISINF
240 #undef ARMA_HAVE_STD_ISNAN
241 #undef ARMA_HAVE_STD_TR1
242 #endif
243
244
245 #if defined(__SUNPRO_CC)
246 #undef ARMA_HAVE_STD_ISFINITE
247 #undef ARMA_HAVE_STD_SNPRINTF
248 #undef ARMA_HAVE_LOG1P
249 #undef ARMA_HAVE_STD_ISINF
250 #undef ARMA_HAVE_STD_ISNAN
251 #undef ARMA_HAVE_STD_TR1
252 #endif