3 * Include file for configuration macros from the build system.
5 * This header is not installed, so headers must not reference macros defined
10 #include "gromacs/utility/gmx_header_config.h"
12 /* TODO: For now, disable Doxygen warnings from here */
15 /* Disable warnings about double-to-float conversion accuracy loss on MSVC */
17 #pragma warning (disable : 4305)
18 #pragma warning (disable : 4244)
19 #pragma warning (disable : 4101)
20 #pragma warning (disable : 4996)
21 #pragma warning (disable : 4267)
22 #pragma warning (disable : 4090)
25 /* Name of package (translate from cmake to autoconf macro name) */
26 #define PACKAGE "@PROJECT_NAME@"
28 /* Version number of package (translate from cmake to autoconf macro name) */
29 #define VERSION "@PROJECT_VERSION@"
31 /* Use extra version information generated with git */
32 #cmakedefine GMX_GIT_VERSION_INFO
34 /* Default location of data files */
35 #define GMXLIB_SEARCH_DIR "@GMXLIB_SEARCH_DIR@"
37 /* Default location of data files */
38 #define GMXLIB_FALLBACK "@GMXLIB_FALLBACK@"
40 /* Binary suffix for the created binaries */
41 #define GMX_BINARY_SUFFIX "@GMX_BINARY_SUFFIX@"
43 /* Source directory for the build */
44 #cmakedefine CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@"
46 /* Binary directory for the build */
47 #cmakedefine CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@"
49 /* Turn off water-water neighborlist optimization only - not used right now */
50 #cmakedefine DISABLE_WATERWATER_NLIST
52 /* Turn off all water neighborlist optimization - not used right now */
53 #cmakedefine DISABLE_WATER_NLIST
55 /* IEEE754 floating-point format. Memory layout is defined by macros
56 * GMX_IEEE754_BIG_ENDIAN_BYTE_ORDER and GMX_IEEE754_BIG_ENDIAN_WORD_ORDER.
58 #cmakedefine GMX_FLOAT_FORMAT_IEEE754
60 /* Work around broken calloc() */
61 #cmakedefine GMX_BROKEN_CALLOC
63 /* Enable special hacks for Cray XT3 */
64 #cmakedefine GMX_CRAY_XT3
66 /* Do not optimize FFTW setups (not needed with SSE FFT kernels) */
67 #cmakedefine GMX_DISABLE_FFTW_MEASURE
69 /* Compile in double precision */
70 #cmakedefine GMX_DOUBLE
72 /* Use Built-in FFTPACK FFT library */
73 #cmakedefine GMX_FFT_FFTPACK
75 /* Use FFTW3 FFT library */
76 #cmakedefine GMX_FFT_FFTW3
78 /* Use Intel MKL FFT library */
79 #cmakedefine GMX_FFT_MKL
81 /* Use AMD core math library */
82 #cmakedefine GMX_FFT_ACML
84 /* Target platform is x86 or x86_64 */
85 #cmakedefine GMX_IS_X86
87 /* Target platform is BlueGene/Q */
88 #cmakedefine GMX_IS_BGQ
90 /* SSE2 instructions available */
91 #cmakedefine GMX_X86_SSE2
93 /* SSE4.1 instructions available */
94 #cmakedefine GMX_X86_SSE4_1
96 /* AVX 128-bit FMA instructions available */
97 #cmakedefine GMX_X86_AVX_128_FMA
99 /* AVX 256-bit instructions available */
100 #cmakedefine GMX_X86_AVX_256
102 /* GCC bug in AVX maskload/maskstore arguments - worked around internally */
103 #cmakedefine GMX_X86_AVX_GCC_MASKLOAD_BUG
105 /* SSE2 was selected as CPU acceleration level */
106 #cmakedefine GMX_CPU_ACCELERATION_X86_SSE2
108 /* SSE4.1 was selected as CPU acceleration level */
109 #cmakedefine GMX_CPU_ACCELERATION_X86_SSE4_1
111 /* AVX 128-bit FMA was selected as CPU acceleration level */
112 #cmakedefine GMX_CPU_ACCELERATION_X86_AVX_128_FMA
114 /* AVX 256-bit was selected as CPU acceleration level */
115 #cmakedefine GMX_CPU_ACCELERATION_X86_AVX_256
117 /* IBM QPX was selected as CPU acceleration type (e.g. BlueGene/Q) */
118 #cmakedefine GMX_CPU_ACCELERATION_IBM_QPX
120 /* Fujitsu Sparc64 HPC-ACE SIMD acceleration */
121 #cmakedefine GMX_CPU_ACCELERATION_SPARC64_HPC_ACE
123 /* String for CPU acceleration choice (for writing to log files and stdout) */
124 #define GMX_CPU_ACCELERATION_STRING "@GMX_CPU_ACCELERATION@"
126 /* Integer byte order is big endian. */
127 #cmakedefine GMX_INTEGER_BIG_ENDIAN
129 /* Use our own instead of system XDR libraries */
130 #cmakedefine GMX_INTERNAL_XDR
132 /* Use MPI (with mpicc) for parallelization */
133 #cmakedefine GMX_LIB_MPI
135 /* MPI_IN_PLACE exists for collective operations */
136 #cmakedefine MPI_IN_PLACE_EXISTS
138 /* Make a parallel version of GROMACS using message passing
139 (MPI or thread_mpi) */
142 /* Use threads_mpi for parallelization */
143 #cmakedefine GMX_THREAD_MPI
145 /* Use OpenMP multithreading */
146 #cmakedefine GMX_OPENMP
148 /* Ignore calls to nice(3) */
149 #cmakedefine GMX_NO_NICE
151 /* Ignore calls to system(3) */
152 #cmakedefine GMX_NO_SYSTEM
154 /* Use (modified) Gamess-UK for QM-MM calculations */
155 #cmakedefine GMX_QMMM_GAMESS
157 /* Use (modified) Gaussian0x for QM-MM calculations */
158 #cmakedefine GMX_QMMM_GAUSSIAN
160 /* Use (modified) Mopac 7 for QM-MM calculations */
161 #cmakedefine GMX_QMMM_MOPAC
163 /* Use ORCA for QM-MM calculations */
164 #cmakedefine GMX_QMMM_ORCA
166 /* Use the GROMACS software 1/sqrt(x) */
167 #cmakedefine GMX_SOFTWARE_INVSQRT
169 /* Use sub-counters */
170 #cmakedefine GMX_CYCLE_SUBCOUNTERS
172 /* Compile with plugin support */
173 #cmakedefine GMX_USE_PLUGINS
175 /* Fallback path for VMD plug-ins */
176 #define GMX_VMD_PLUGIN_PATH "@GMX_VMD_PLUGIN_PATH@"
178 /* Define when pthreads are used */
179 #cmakedefine THREAD_PTHREADS
181 /* Define when Windows threads are used */
182 #cmakedefine THREAD_WINDOWS
184 /* Define native atomic operations are found */
185 #cmakedefine TMPI_ATOMICS
187 /* Define for busy wait option */
188 #cmakedefine TMPI_WAIT_FOR_NO_ONE
190 /* Define for copy buffer option */
191 #cmakedefine TMPI_COPY_BUFFER
193 /* Define for tmpi warnings option */
194 #cmakedefine TMPI_WARNINGS
196 /* Define for profiling option */
197 #cmakedefine TMPI_PROFILE
199 /* Define for Linux pthread_setaffinity_np */
200 #cmakedefine HAVE_PTHREAD_SETAFFINITY
202 /* Define for Windows NUMA-aware allocator functions*/
203 #cmakedefine TMPI_WINDOWS_NUMA_API
205 /* Define for GetSystemInfo() */
206 #cmakedefine HAVE_SYSTEM_INFO
208 /* Define for X-Windows */
209 #cmakedefine HAVE_X11
211 /* Enable x86 gcc inline assembly */
212 #cmakedefine GMX_X86_GCC_INLINE_ASM
214 /* Use GPU native acceleration */
217 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
218 #cmakedefine HAVE_FSEEKO
220 /* Define to 1 if _fseeki64 (and presumably _fseeki64) exists and is declared. */
221 #cmakedefine HAVE__FSEEKI64
223 /* Define to 1 if you have the gsl library (-lgsl). */
224 #cmakedefine HAVE_LIBGSL
226 /* Have io.h (windows)*/
227 #cmakedefine HAVE_IO_H
229 /* Define to 1 if you have the posix_memalign() function. */
230 #cmakedefine HAVE_POSIX_MEMALIGN
232 /* Define to 1 if you have the memalign() function. */
233 #cmakedefine HAVE_MEMALIGN
235 /* Define to 1 if you have the MSVC _aligned_malloc() function. */
236 #cmakedefine HAVE__ALIGNED_MALLOC
238 /* Define to 1 if you have the gettimeofday() function. */
239 #cmakedefine HAVE_GETTIMEOFDAY
241 /* Define to 1 if you have the isfinite() function. */
242 #cmakedefine HAVE_ISFINITE
244 /* Define to 1 if you have the _isfinite() function. */
245 #cmakedefine HAVE__ISFINITE
247 /* Define to 1 if you have the _finite() function. */
248 #cmakedefine HAVE__FINITE
250 /* Define to 1 if you have the fsync() function. */
251 #cmakedefine HAVE_FSYNC
253 /* Define to 1 if you have the Windows _commit() function. */
254 #cmakedefine HAVE__COMMIT
256 /* Define to 1 if you have the fileno() function. */
257 #cmakedefine HAVE_FILENO
259 /* Define to 1 if you have the _fileno() function. */
260 #cmakedefine HAVE__FILENO
262 /* Define to 1 if you have the sigaction() function. */
263 #cmakedefine HAVE_SIGACTION
265 /* Define to 1 if you have the rsqrt() function. */
266 #cmakedefine HAVE_RSQRT
268 /* Define to 1 if you have the rsqrtf() function. */
269 #cmakedefine HAVE_RSQRTF
271 /* Define to 1 if you have the sqrtf() function. */
272 #cmakedefine HAVE_SQRTF
274 /* Define to 1 if yo have the <unistd.h> header file. */
275 #cmakedefine HAVE_UNISTD_H
277 /* Define to 1 if yo have the <pwd.h> header file. */
278 #cmakedefine HAVE_PWD_H
280 /* Define to 1 if yo have the <dirent.h> header file. */
281 #cmakedefine HAVE_DIRENT_H
283 /* Define to 1 if you have the <sys/time.h> header file. */
284 #cmakedefine HAVE_SYS_TIME_H
286 /* Define to 1 if you have the <x86intrin.h> header file */
287 #cmakedefine HAVE_X86INTRIN_H
289 /* Define to 1 if you have the <intrin.h> header file */
290 #cmakedefine HAVE_INTRIN_H
292 /* Define to 1 if you have the <sched.h> header */
293 #cmakedefine HAVE_SCHED_H
295 /* Define to 1 if you have the POSIX <regex.h> header file. */
296 #cmakedefine HAVE_POSIX_REGEX
298 /* Define to 1 if you have the C++11 <regex> header file. */
299 #cmakedefine HAVE_CXX11_REGEX
301 /* Define to 1 if you have the sysconf() function */
302 #cmakedefine HAVE_SYSCONF
304 /* Define to 1 if you have the sched_getaffinity() function */
305 #cmakedefine HAVE_SCHED_GETAFFINITY
307 /* Define to 1 if you have the sched_setaffinity() function */
308 #cmakedefine HAVE_SCHED_SETAFFINITY
310 /* Bytes in IEEE fp word are in big-endian order if set, little-endian if not.
311 Only relevant when FLOAT_FORMAT_IEEE754 is defined. */
312 #cmakedefine GMX_IEEE754_BIG_ENDIAN_BYTE_ORDER
314 /* The two words in a double precision variable are in b ig-endian order if
315 set, little-endian if not. Do NOT assume this is the same as the byte
316 order! Only relevant when FLOAT_FORMAT_IEEE754 is defined. */
317 #cmakedefine GMX_IEEE754_BIG_ENDIAN_WORD_ORDER
319 /* Define if SIGUSR1 is present */
320 #cmakedefine HAVE_SIGUSR1
322 /* The size of int, as computed by sizeof. */
323 #cmakedefine SIZEOF_INT @SIZEOF_INT@
325 /* The size of long int, as computed by sizeof. */
326 #cmakedefine SIZEOF_LONG_INT @SIZEOF_LONG_INT@
328 /* The size of long long int, as computed by sizeof. */
329 #cmakedefine SIZEOF_LONG_LONG_INT @SIZEOF_LONG_LONG_INT@
331 /* The size of off_t, as computed by sizeof. */
332 #cmakedefine SIZEOF_OFF_T @SIZEOF_OFF_T@
334 /* The size of void*, as computed by sizeof. */
335 #cmakedefine SIZEOF_VOIDP @SIZEOF_VOIDP@
337 /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
338 #cmakedefine _LARGEFILE_SOURCE
340 /* Define for large files, on AIX-style hosts. */
341 #cmakedefine _LARGE_FILES
343 /* Some systems requires this to be set to 64 for large file support */
344 #cmakedefine _FILE_OFFSET_BITS @_FILE_OFFSET_BITS@
346 /* Define to __inline__ or __inline if that is what the C compiler
347 calls it, or to nothing if inline is not supported under any name.
348 Please do NOT remove the gmx_inline keyword from here. The classical
349 C++ inline keyword is merely a recommendation to the compiler, and
350 many compilers support stronger alternatives (e.g. __forceinline)
351 that we might want to use. */
352 #define gmx_inline ${INLINE_KEYWORD}
354 #define inline ${INLINE_KEYWORD}
357 /* Define to __restrict__ or __restrict if that is what the C compiler
358 calls it, unless we are on C99 when it is simply called restrict.
359 Since restrict is a reserved key word in C99 we are not allowed to
360 redefine the word itself, so call this gmx_restrict to avoid having
361 to identify the language standard level. If it is not supported, it
362 is still defined to an empty string here. */
363 #define gmx_restrict ${RESTRICT_KEYWORD}
364 /* Build special-purpose mdrun library */
365 #cmakedefine GMX_FAHCORE
367 /* Enable gromacs quotes */
368 #cmakedefine GMX_COOL_QUOTES
371 #define FULLINDIRECT 1
372 #define USE_FAH_XDR 1
373 #include "swindirect.h"
376 /* default name mangling maybe wrong on exotic plattforms */
377 #define F77_FUNC(name,NAME) name ## _
379 /* Define if we have pipes */
380 #cmakedefine HAVE_PIPES
382 /* Catch stupid CMake problems on OS X */
384 # if ((defined(__LP64__) && __LP64__ && defined(SIZEOF_VOIDP) && SIZEOF_VOIDP<8) || ( (!defined(__LP64__) || __LP64__==0) && (defined(SIZEOF_VOIDP) && SIZEOF_VOIDP>4)))
385 # error "Inconsistency between current OS X architecture and the one used to generate original"
386 # error "CMake configuration. This is probably caused by starting CMake with the default value"
387 # error "for CMAKE_OSX_ARCHITECTURES (blank), and then changing it. In this case all the tests"
388 # error "will have been performed with the original (now incorrect) architecture."
389 # error "To fix this, set CMAKE_OSX_ARCHITECTURES on the _command_line_ before starting CMake,"
390 # error "or create a new such entry with your choice in the GUI _before_ hitting 'configure'."