Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
compiler_config.h
Go to the documentation of this file.
1 /* *******************************************************************
2  * Rocstar Simulation Suite *
3  * Copyright@2015, Illinois Rocstar LLC. All rights reserved. *
4  * *
5  * Illinois Rocstar LLC *
6  * Champaign, IL *
7  * www.illinoisrocstar.com *
8  * sales@illinoisrocstar.com *
9  * *
10  * License: See LICENSE file in top level of distribution package or *
11  * http://opensource.org/licenses/NCSA *
12  *********************************************************************/
13 /* *******************************************************************
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
15  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
16  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
17  * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
20  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
21  * USE OR OTHER DEALINGS WITH THE SOFTWARE. *
22  *********************************************************************/
23 // General compiler_config file.
24 
25 //+--------------------------------------------------------------------------
26 // The compiler has to provide a Standard Template Library
27 //+--------------------------------------------------------------------------
28 // STL test ok
29 
30 //+--------------------------------------------------------------------------
31 //| The flag CGAL_CFG_CCTYPE_MACRO_BUG is set, if a compiler defines the
32 //| standard C library functions in cctype (isdigit etc.) as macros.
33 //| According to the standard they have to be functions.
34 //+--------------------------------------------------------------------------
35 #if (defined(__GNUC__) || defined(mips) || defined(__mips) || defined(_CRAYT3E))
36 #define CGAL_CFG_CCTYPE_MACRO_BUG 1
37 #endif
38 
39 //+--------------------------------------------------------------------------
40 //| When a dynamic cast involves a pointer to a not yet instantiated
41 //| template class, some compilers give an error.
42 //| This program is used to detect this problem.
43 //| "CGAL_CFG_DYNAMIC_CAST_BUG.C", line 45: error(3105): the type in a
44 //| dynamic_cast must be a pointer or reference to a complete class
45 //| type, or void *
46 //| W< L<int> >* wl_ptr = dynamic_cast<W< L<int> >* >( &wp );
47 //| ^
48 //+--------------------------------------------------------------------------
49 #if (!defined(__GNUC__) && defined(__sparc))
50 #define CGAL_CFG_DYNAMIC_CAST_BUG 1
51 #endif
52 
53 //+--------------------------------------------------------------------------
54 //| This flag is set, if the compiler does not match a function
55 //| argument of type typename T::A correctly.
56 //| (e.g. SGI 7.2)
57 //+--------------------------------------------------------------------------
58 //#define CGAL_CFG_MATCHING_BUG_1 1
59 
60 //+--------------------------------------------------------------------------
61 //| This flag is set, if the compiler does not match the most
62 //| specialized instance of a function template correctly,
63 //| but complains about multiple matches.
64 //| (e.g. SGI 7.2)
65 //+--------------------------------------------------------------------------
66 //#define CGAL_CFG_MATCHING_BUG_2 1
67 
68 //+--------------------------------------------------------------------------
69 //| When template implementation files are not included in the source files,
70 //| a compiler may attempt to find the unincluded template bodies
71 //| automatically. For example, suppose that the following conditions are
72 //| all true.
73 //|
74 //| - template entity ABC::f is declared in file xyz.h
75 //| - an instantiation of ABC::f is required in a compilation
76 //| - no definition of ABC::f appears in the source code processed by the
77 //| compilation
78 //|
79 //| In this case, the compiler may look to see if the source file xyz.n exists,
80 //| where n is .c, .C, .cpp, .CPP, .cxx, .CXX, or .cc. If this feature is
81 //| missing, the flag CGAL_CFG_NO_AUTOMATIC_TEMPLATE_INCLUSION is set.
82 //+--------------------------------------------------------------------------
83 #if (defined(__GNUC__))
84 #define CGAL_CFG_NO_AUTOMATIC_TEMPLATE_INCLUSION 1
85 #define CGAL_CFG_RETURN_TYPE_BUG_2 1
86 #endif
87 
88 //+--------------------------------------------------------------------------
89 //| The byte order of a machine architecture distinguishes into
90 //| big-endian and little-endian machines.
91 //| The following definition is set if it is a little-endian machine.
92 //+--------------------------------------------------------------------------
93 #if (defined(__i386__) || defined(__i386) || defined(i386)) || \
94  (defined(__ia64__) || defined(__ia64) || defined(ia64)) || \
95  (defined(__amd64__) || defined(__amd64) || defined(__x86_64__))
96 #define CGAL_CFG_NO_BIG_ENDIAN 1
97 #elif (defined(__sparc__) || defined(__sparc) || defined(sparc)) || \
98  defined(__APPLE__) || (defined(ppc64)) || (defined(mips) || defined(__mips)) || \
99  (defined(_POWER) || defined(_CRAYT3E) || defined(__DECCXX))
100 // #else
101 // #error "Can't determine byte order--patch this"
102 #endif
103 
104 //+--------------------------------------------------------------------------
105 //| This flag is set if the compiler doesn't support the operator dynamic_cast.
106 //+--------------------------------------------------------------------------
107 // #define CGAL_CFG_NO_DYNAMIC_CAST 1
108 
109 //+--------------------------------------------------------------------------
110 //| If a compiler doesn't like explicit specification of
111 //| template arguments in template function calls, the flag
112 //| CGAL_CFG_NO_EXPLICIT_TEMPLATE_FUNCTION_ARGUMENT_SPECIFICATION is set.
113 //+--------------------------------------------------------------------------
114 #if (!defined(__GNUC__) && defined(__sparc))
115 #define CGAL_CFG_NO_EXPLICIT_TEMPLATE_FUNCTION_ARGUMENT_SPECIFICATION 1
116 #endif
117 
118 //+--------------------------------------------------------------------------
119 //| Iterator traits are documented in the Dec. 1996 C++ Standard draft.
120 //| The following definition is set if iterator are not fully supported
121 //| including their use in a template class, as a default template
122 //| argument and as a return type of global function.
123 //+--------------------------------------------------------------------------
124 #if (!defined(__GNUC__) && defined(__sparc))
125 #define CGAL_CFG_NO_ITERATOR_TRAITS 1
126 #endif
127 
128 //+--------------------------------------------------------------------------
129 //| This flag is set if the compiler doesn't support the operator Koenig
130 //| lookup. That is, it does not search in the namespace of the arguments for
131 //| the function.
132 //+--------------------------------------------------------------------------
133 #if (!defined(__GNUC__) && (defined(mips) || defined(__mips)))
134 #define CGAL_CFG_NO_KOENIG_LOOKUP 1
135 #endif
136 
137 //+--------------------------------------------------------------------------
138 //| If a compiler doesn't know the locale classic
139 //| CGAL_CFG_NO_LOCALE is set.
140 //+--------------------------------------------------------------------------
141 #if (!defined(__GNUC__))
142 #define CGAL_CFG_NO_LOCALE 1
143 #endif
144 
145 //+--------------------------------------------------------------------------
146 //| If a compiler (or assembler or linker) has problems with long names
147 //| CGAL_CFG_NO_LONGNAME_PROBLEM is set.
148 //+--------------------------------------------------------------------------
149 //#define CGAL_CFG_NO_LONGNAME_PROBLEM 1
150 
151 //+--------------------------------------------------------------------------
152 //| If a compiler doesn't know namespaces, the flag
153 //| CGAL_CFG_NO_NAMESPACE is set.
154 //+--------------------------------------------------------------------------
155 //#define CGAL_CFG_NO_NAMESPACE 1
156 
157 //+--------------------------------------------------------------------------
158 //| If a compiler doesn't support partial specialisation of class templates,
159 //| the flag CGAL_CFG_NO_PARTIAL_CLASS_TEMPLATE_SPECIALISATION is set.
160 //+--------------------------------------------------------------------------
161 #if (!defined(__GNUC__) && defined(__sparc))
162 #define CGAL_CFG_NO_PARTIAL_CLASS_TEMPLATE_SPECIALISATION 1
163 #endif
164 
165 //+--------------------------------------------------------------------------
166 //| If a compiler doesn't like explicit partial specification of
167 //| template arguments in template function calls, the flag
168 //| CGAL_CFG_NO_PARTIAL_TEMPLATE_FUNCTION_ARGUMENT_SPECIFICATION is set.
169 //+--------------------------------------------------------------------------
170 #if (!defined(__GNUC__) && defined(__sparc))
171 #define CGAL_CFG_NO_PARTIAL_TEMPLATE_FUNCTION_ARGUMENT_SPECIFICATION 1
172 #endif
173 
174 //+--------------------------------------------------------------------------
175 //| The parameter types of member functions might contain a scope
176 //| operator. This works as long as the member function is implemented
177 //| inline in the class. If the member function is implemented external
178 //| not all compilers are able to parse the scope operators correctly.
179 //| The following definition is set if the compiler fails parsing.
180 //+--------------------------------------------------------------------------
181 //#define CGAL_CFG_NO_SCOPE_MEMBER_FUNCTION_PARAMETERS 1
182 
183 //+--------------------------------------------------------------------------
184 //| The flag CGAL_CFG_NO_STANDARD_HEADERS is set, if a compiler does not
185 //| support the new standard headers (i.e. without the .h suffix).
186 //+--------------------------------------------------------------------------
187 #define CGAL_CFG_NO_STANDARD_HEADERS 1
188 
189 //+--------------------------------------------------------------------------
190 //| The flag CGAL_CFG_NO_STDC_NAMESPACE is set, if a compiler does not
191 //| put the parts of the standard library inherited from the standard
192 //| C library in namespace std. (only tests for the symbols used in CGAL)
193 //+--------------------------------------------------------------------------
194 #if (!defined(__GNUC__) && (defined(__sparc__) || defined(mips) || defined(__mips)) || \
195  (defined(_POWER) || defined(_CRAYT3E)))
196 #define CGAL_CFG_NO_STDC_NAMESPACE 1
197 #endif
198 
199 //+--------------------------------------------------------------------------
200 //| The flag CGAL_CFG_NO_STDIO_NAMESPACE is set, if a compiler does not
201 //| put the IO standard library in namespace std.
202 //+--------------------------------------------------------------------------
203 //#define CGAL_CFG_NO_STDIO_NAMESPACE 1
204 
205 //+--------------------------------------------------------------------------
206 //| If a compiler doesn't know the namespace std, the flag
207 //| CGAL_CFG_NO_STD_NAMESPACE is set. Some compilers know namespace std
208 //| but don't implement namespaces in general.
209 //+--------------------------------------------------------------------------
210 //#define CGAL_CFG_NO_STD_NAMESPACE 1
211 
212 //+--------------------------------------------------------------------------
213 //| Checks whether the compiler wants to have a <> in friend declarations
214 //| of template functions.
215 //+--------------------------------------------------------------------------
216 #if (! defined(__GNUC__) && (defined(_POWER) || defined(_CRAYT3E)))
217 #define CGAL_CFG_NO_TEMPLATE_FRIEND_DISTINCTION 1
218 #endif
219 
220 //+--------------------------------------------------------------------------
221 //| Nested templates in template parameter, such as 'template <
222 //| template <class T> class A>' are not supported by any compiler.
223 //| The following definition is set if they are not supported.
224 //+--------------------------------------------------------------------------
225 #if (defined(__GNUC__) || defined(__sparc)) || \
226  (defined(mips) || defined(__mips) || defined(_CRAYT3ER))
227 #define CGAL_CFG_NO_TMPL_IN_TMPL_PARAM 1
228 #endif
229 
230 //+--------------------------------------------------------------------------
231 //| If a compiler complains about typename, when passing a dependent
232 //| type as template parameter, the flag CGAL_CFG_TYPENAME_BUG is set.
233 //+--------------------------------------------------------------------------
234 //#define CGAL_CFG_TYPENAME_BUG 1
235 
236 
237 
238 
239 
240