1/*
2 *  Copyright (C) 2004-2021 Edward F. Valeev
3 *
4 *  This file is part of Libint.
5 *
6 *  Libint is free software: you can redistribute it and/or modify
7 *  it under the terms of the GNU Lesser General Public License as published by
8 *  the Free Software Foundation, either version 3 of the License, or
9 *  (at your option) any later version.
10 *
11 *  Libint is distributed in the hope that it will be useful,
12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 *  GNU Lesser General Public License for more details.
15 *
16 *  You should have received a copy of the GNU Lesser General Public License
17 *  along with Libint.  If not, see <http://www.gnu.org/licenses/>.
18 *
19 */
20
21/* This file is automatically processed by configure script.
22   It MUST NOT be changed manually after configuration, otherwise
23   the library will likely fail to compile or produce erroneous results
24 */
25
26#ifndef _libint2_include_libint2config_h_
27#define _libint2_include_libint2config_h_
28
29/* The host architecture. */
30#undef LIBINT_HOST_ARCH
31
32/* The target architecture. */
33#undef LIBINT_TARGET_ARCH
34
35/* The version number. */
36#undef LIBINT_VERSION
37
38/* The major version number. */
39#undef LIBINT_MAJOR_VERSION
40
41/* The minor version number. */
42#undef LIBINT_MINOR_VERSION
43
44/* The micro version number. */
45#undef LIBINT_MICRO_VERSION
46
47/* Prefix for all names in API */
48#undef LIBINT_API_PREFIX
49
50/* Max AM (same for all derivatives; if not defined see LIBINT_MAX_AM_LIST) */
51#undef LIBINT_MAX_AM
52
53/* Max AM for integrals and their derivatives */
54#undef LIBINT_MAX_AM_LIST
55
56/* Max optimized AM (same for all derivatives; if not defined see LIBINT_OPT_AM_LIST) */
57#undef LIBINT_OPT_AM
58
59/* Max optimized AM for integrals and their derivatives */
60#undef LIBINT_OPT_AM_LIST
61
62/* Support 1-body derivatives up to this order */
63#undef INCLUDE_ONEBODY
64
65/* Disable support for 1-body property derivatives */
66#undef DISABLE_ONEBODY_PROPERTY_DERIVS
67
68/* Support ERI derivatives up to this order */
69#undef INCLUDE_ERI
70
71/* Support 3-center ERI derivatives up to this order */
72#undef INCLUDE_ERI3
73
74/* Support 2-center ERI derivatives up to this order */
75#undef INCLUDE_ERI2
76
77/* Support G12 derivatives up to this order */
78#undef INCLUDE_G12
79
80/* Support G12DKH derivatives up to this order */
81#undef INCLUDE_G12DKH
82
83/* Max AM for one-body ints */
84#undef ONEBODY_MAX_AM
85
86/* Max optimized AM for one-body ints */
87#undef ONEBODY_OPT_AM
88
89/* Max order of spherical multipole ints */
90#undef MULTIPOLE_MAX_ORDER
91
92/* Max AM for ERI (same for all derivatives; if not defined see ERI_MAX_AM_LIST) */
93#undef ERI_MAX_AM
94
95/* Max AM for ERI and its derivatives */
96#undef ERI_MAX_AM_LIST
97
98/* Max optimized AM for ERI (same for all derivatives; if not defined see ERI_OPT_AM_LIST) */
99#undef ERI_OPT_AM
100
101/* Max optimized AM for ERI and its derivatives */
102#undef ERI_OPT_AM_LIST
103
104/* Max AM for 3-center ERI (same for all derivatives; if not defined see ERI3_MAX_AM_LIST) */
105#undef ERI3_MAX_AM
106
107/* Max AM for 3-center ERI and its derivatives */
108#undef ERI3_MAX_AM_LIST
109
110/* Max optimized AM for 3-center ERI (same for all derivatives; if not defined see ERI3_OPT_AM_LIST) */
111#undef ERI3_OPT_AM
112
113/* Max optimized AM for 3-center ERI and its derivatives */
114#undef ERI3_OPT_AM_LIST
115
116/* If 1, assume will transform the "unpaired" center (e.g. a in (a|cd)) to solid harmonics */
117#undef ERI3_PURE_SH
118
119/* Max AM for 2-center ERI (same for all derivatives; if not defined see ERI2_MAX_AM_LIST) */
120#undef ERI2_MAX_AM
121
122/* Max AM for 2-center ERI and its derivatives */
123#undef ERI2_MAX_AM_LIST
124
125/* Max optimized AM for 2-center ERI (same for all derivatives; if not defined see ERI2_OPT_AM_LIST) */
126#undef ERI2_OPT_AM
127
128/* Max optimized AM for 2-center ERI and its derivatives */
129#undef ERI2_OPT_AM_LIST
130
131/* If 1, assume will transform to solid harmonics */
132#undef ERI2_PURE_SH
133
134/* Max AM for G12 method integrals */
135#undef G12_MAX_AM
136
137/* Max optimized AM for G12 method integrals */
138#undef G12_OPT_AM
139
140/* Support [Ti,G12] ? */
141#undef SUPPORT_T1G12
142
143/* Max AM for G12DKH method integrals */
144#undef G12DKH_MAX_AM
145
146/* Max optimized AM for G12DKH method integrals */
147#undef G12DKH_OPT_AM
148
149/* Whether integral sets can be unrolled */
150#undef LIBINT_ENABLE_UNROLLING
151
152/* Whether generic code can be used */
153#undef LIBINT_ENABLE_GENERIC_CODE
154
155/* maximum length of vectors */
156#undef LIBINT_VECTOR_LENGTH
157
158/* how to vectorize */
159#undef LIBINT_VECTOR_METHOD
160
161/* if can be controlled with posix_memalign, alignment size */
162#undef LIBINT_ALIGN_SIZE
163
164/* Specifies the ordering of cartesian Gaussians in a shell. Allowed values are defined at the bottom of this file -- also see configure.in */
165#undef LIBINT_CGSHELL_ORDERING
166
167/* Specifies the ordering of solid harmonics Gaussians in a shell. Allowed values are defined at the bottom of this file -- also see configure.in */
168#undef LIBINT_SHGSHELL_ORDERING
169
170/* Specifies the class of shell sets generated. Allowed values are defined at the bottom of this file -- also see configure.in */
171#undef LIBINT_SHELL_SET
172
173/* User-defined real type */
174#undef LIBINT_USER_DEFINED_REAL
175
176/* Include statements needed to use LIBINT_USER_DEFINED_REAL */
177#undef LIBINT_USER_DEFINED_REAL_INCLUDES
178
179/*Generate FMA instructions? */
180#undef LIBINT_GENERATE_FMA
181
182/* Accumulate integrals to the buffer? */
183#undef LIBINT_ACCUM_INTS
184
185/* Whether FLOP counting is supported */
186#undef LIBINT_FLOP_COUNT
187
188/* Whether profile instrumentation will be enabled */
189#undef LIBINT_PROFILE
190
191/* Support contracted integrals? */
192#undef LIBINT_CONTRACTED_INTS
193
194/* Generate single evaluator type? */
195#undef LIBINT_SINGLE_EVALTYPE
196
197/* Generate composite evaluators? */
198#undef LIBINT_USE_COMPOSITE_EVALUATORS
199
200/* Strategy for ERI evaluation */
201#undef LIBINT_ERI_STRATEGY
202
203/* --------------------------
204  have C++ features?
205   -------------------------- */
206/* see lib/autoconf/ac_check_cpp11.m4 */
207
208/* define if CXX compiler can compile C++11 */
209#undef LIBINT_HAS_CXX11
210
211/* define if array has fill member function. */
212#undef LIBINT_ARRAY_HAS_FILL
213
214/* define if std::array is available. */
215#undef LIBINT_HAS_STD_ARRAY
216
217/* define if std::make_shared and std::allocate_shared are available. */
218#undef LIBINT_HAS_STD_MAKE_SHARED
219
220/* define if std::shared_ptr is available. */
221#undef LIBINT_HAS_STD_SHARED_PTR
222
223/* define if std::tr1::array is available. */
224#undef LIBINT_HAS_STD_TR1_ARRAY
225
226/* define if std::tr1::shared_ptr is available. */
227#undef LIBINT_HAS_STD_TR1_SHARED_PTR
228
229/* define if std::tr1 type traits are available. */
230#undef LIBINT_HAS_STD_TR1_TYPE_TRAITS
231
232/* define if std type traits are available. */
233#undef LIBINT_HAS_STD_TYPE_TRAITS
234
235/* define if Libint is using <array>. */
236#undef LIBINT_USE_ARRAY
237
238/* define if Libint is using <boost/tr1/array.hpp>. */
239#undef LIBINT_USE_BOOST_TR1_ARRAY_HPP
240
241/* define if Libint is using <boost/tr1/memory.hpp>. */
242#undef LIBINT_USE_BOOST_TR1_MEMORY_HPP
243
244/* define if Libint is using <boost/tr1/type_traits.hpp>. */
245#undef LIBINT_USE_BOOST_TR1_TYPE_TRAITS_HPP
246
247/* define if Libint is using <memory>. */
248#undef LIBINT_USE_MEMORY
249
250/* define if Libint is using <tr1/array>. */
251#undef LIBINT_USE_TR1_ARRAY
252
253/* define if Libint is using <tr1/memory>. */
254#undef LIBINT_USE_TR1_MEMORY
255
256/* define if Libint is using <tr1/type_traits>. */
257#undef LIBINT_USE_TR1_TYPE_TRAITS
258
259/* define if Libint is using <type_traits>. */
260#undef LIBINT_USE_TYPE_TRAITS
261
262/* C++ compiler allows template with default params as template template parameter */
263#undef CXX_ALLOWS_DEFPARAMTEMPLATE_AS_TEMPTEMPPARAM
264
265/* is shared_ptr in boost? */
266#undef HAVE_SHARED_PTR_IN_BOOST
267
268/* define if Eigen library is available. */
269#undef LIBINT_HAS_EIGEN
270
271/* define if system-wide Boost.Preprocessor is available */
272#undef LIBINT_HAS_SYSTEM_BOOST_PREPROCESSOR_VARIADICS
273
274/*
275  Known orderings of cartesian Gaussians
276*/
277#undef LIBINT_CGSHELL_ORDERING_STANDARD
278#undef LIBINT_CGSHELL_ORDERING_INTV3
279#undef LIBINT_CGSHELL_ORDERING_GAMESS
280#undef LIBINT_CGSHELL_ORDERING_ORCA
281#undef LIBINT_CGSHELL_ORDERING_BAGEL
282
283/*
284  Known orderings of solid harmonic Gaussians
285*/
286#undef LIBINT_SHGSHELL_ORDERING_STANDARD
287#undef LIBINT_SHGSHELL_ORDERING_GAUSSIAN
288
289/*
290  Known sets of shell sets
291*/
292#undef LIBINT_SHELL_SET_STANDARD
293#undef LIBINT_SHELL_SET_ORCA
294
295/*
296 Libint-independent features
297 */
298
299/* have stdint.h ? */
300#undef HAVE_STDINT_H
301
302/* have MPFR library ? */
303#undef LIBINT_HAS_MPFR
304
305/* have posix_memalign ? */
306#undef HAVE_POSIX_MEMALIGN
307
308/* compiler type detection */
309#define LIBINT_COMPILER_ID_GNU 0
310#define LIBINT_COMPILER_ID_Clang 1
311#define LIBINT_COMPILER_ID_AppleClang 2
312#define LIBINT_COMPILER_ID_XLClang 3
313#define LIBINT_COMPILER_ID_Intel 4
314#if defined(__INTEL_COMPILER_BUILD_DATE)  /* macros like __ICC and even __INTEL_COMPILER can be affected by command options like -no-icc */
315# define LIBINT_COMPILER_ID LIBINT_COMPILER_ID_Intel
316# define LIBINT_COMPILER_IS_ICC 1
317#endif
318#if defined(__clang__) && !defined(LIBINT_COMPILER_IS_ICC)
319# define LIBINT_COMPILER_IS_CLANG 1
320# if defined(__apple_build_version__)
321#  define LIBINT_COMPILER_ID LIBINT_COMPILER_ID_AppleClang
322# elif defined(__ibmxl__)
323#  define LIBINT_COMPILER_ID LIBINT_COMPILER_ID_XLClang
324# else
325#  define LIBINT_COMPILER_ID LIBINT_COMPILER_ID_Clang
326# endif
327#endif
328#if defined(__GNUG__) && !defined(LIBINT_COMPILER_IS_ICC) && !defined(LIBINT_COMPILER_IS_CLANG)
329# define LIBINT_COMPILER_ID LIBINT_COMPILER_ID_GNU
330# define LIBINT_COMPILER_IS_GCC 1
331#endif
332
333/* ----------- pragma helpers ---------------*/
334#define LIBINT_PRAGMA(x) _Pragma(#x)
335/* same as LIBINT_PRAGMA(x), but expands x */
336#define LIBINT_XPRAGMA(x) LIBINT_PRAGMA(x)
337/* "concats" a and b with a space in between */
338#define LIBINT_CONCAT(a,b) a b
339#if defined(LIBINT_COMPILER_IS_CLANG)
340#define LIBINT_PRAGMA_CLANG(x) LIBINT_XPRAGMA( LIBINT_CONCAT(clang,x) )
341#else
342#define LIBINT_PRAGMA_CLANG(x)
343#endif
344#if defined(LIBINT_COMPILER_IS_GCC)
345#define LIBINT_PRAGMA_GCC(x) LIBINT_XPRAGMA( LIBINT_CONCAT(GCC,x) )
346#else
347#define LIBINT_PRAGMA_GCC(x)
348#endif
349
350#ifdef __has_cpp_attribute
351#if __has_cpp_attribute(deprecated)
352#define LIBINT_DEPRECATED(msg) [[deprecated(msg)]]
353#endif
354#endif
355#ifndef LIBINT_DEPRECATED
356#define LIBINT_DEPRECATED(msg) LIBINT_XPRAGMA( LIBINT_CONCAT(message, msg) )
357#endif
358
359#endif /* header guard */
360