#cmakedefine USE_VERSION_H
/* Default location of data files */
-#cmakedefine GMXLIBDIR "@GMXLIBDIR@"
+#define GMXLIBDIR "@GMXLIBDIR@"
-/* Hardware and OS version for build host */
-#cmakedefine BUILD_MACHINE "@BUILD_MACHINE@"
-
-/* Date and time for build */
-#cmakedefine BUILD_TIME "@BUILD_TIME@"
-
-/* User doing build */
-#cmakedefine BUILD_USER "@BUILD_USER@"
-
-/* Turn off water-water neighborlist optimization only */
+/* Turn off water-water neighborlist optimization only - not used right now */
#cmakedefine DISABLE_WATERWATER_NLIST
-/* Turn off all water neighborlist optimization */
+/* Turn off all water neighborlist optimization - not used right now */
#cmakedefine DISABLE_WATER_NLIST
/* Fortran support */
/* As F77_FUNC, but for C identifiers containing underscores. */
#define F77_FUNC_(name,NAME) @F77_FUNCDEF_@
-/* Use the d prefix on fftw2 includes */
-#cmakedefine FFTW2_NAME_DFFTW
-
-/* Dont use any prefix on fftw2 includes */
-#cmakedefine FFTW2_NAME_FFTW
-
-/* Use the s prefix on fftw2 includes */
-#cmakedefine FFTW2_NAME_SFFTW
-
/* IEEE754 floating-point format. Memory layout is defined by macros
* GMX_IEEE754_BIG_ENDIAN_BYTE_ORDER and GMX_IEEE754_BIG_ENDIAN_WORD_ORDER.
*/
#cmakedefine GMX_FLOAT_FORMAT_IEEE754
-/* Detect Cygwin */
-#cmakedefine GMX_CYGWIN
-
/* Use assembly intrinsics kernels for BlueGene */
#cmakedefine GMX_BLUEGENE
/* Use Built-in FFTPACK FFT library */
#cmakedefine GMX_FFT_FFTPACK
-/* Use FFTW2 FFT library */
-#cmakedefine GMX_FFT_FFTW2
-
/* Use FFTW3 FFT library */
#cmakedefine GMX_FFT_FFTW3
/* Use AMD core math library */
#cmakedefine GMX_FFT_ACML
-/* Single-precision SSE instructions on ia32 */
-#cmakedefine GMX_IA32_SSE
+/* SSE2 instructions available */
+#cmakedefine GMX_X86_SSE2
+
+/* SSE4.1 instructions available */
+#cmakedefine GMX_X86_SSE4_1
+
+/* AVX 128-bit FMA instructions available */
+#cmakedefine GMX_X86_AVX_128_FMA
-/* Double-precision SSE2 instructions on ia32 */
-#cmakedefine GMX_IA32_SSE2
+/* AVX 256-bit instructions available */
+#cmakedefine GMX_X86_AVX_256
-/* Use ia64 assembly tuned for Itanium2 */
-#cmakedefine GMX_IA64_ASM
+/* SSE2 was selected as CPU acceleration level */
+#cmakedefine GMX_CPU_ACCELERATION_X86_SSE2
+
+/* SSE4.1 was selected as CPU acceleration level */
+#cmakedefine GMX_CPU_ACCELERATION_X86_SSE4_1
+
+/* AVX 128-bit FMA was selected as CPU acceleration level */
+#cmakedefine GMX_CPU_ACCELERATION_X86_AVX_128_FMA
+
+/* AVX 256-bit was selected as CPU acceleration level */
+#cmakedefine GMX_CPU_ACCELERATION_X86_AVX_256
+
+/* String for CPU acceleration choice (for writing to log files and stdout) */
+#define GMX_CPU_ACCELERATION_STRING "@GMX_CPU_ACCELERATION@"
/* Integer byte order is big endian. */
#cmakedefine GMX_INTEGER_BIG_ENDIAN
(MPI or thread_mpi) */
#cmakedefine GMX_MPI
-/* Use threads for parallelization */
-#cmakedefine GMX_THREADS
+/* Use threads_mpi for parallelization */
+#cmakedefine GMX_THREAD_MPI
-/* Use old threading (domain decomp force calc) code */
-#cmakedefine GMX_THREAD_SHM_FDECOMP
+/* Use OpenMP multithreading */
+#cmakedefine GMX_OPENMP
/* Ignore calls to nice(3) */
#cmakedefine GMX_NO_NICE
/* Ignore calls to system(3) */
#cmakedefine GMX_NO_SYSTEM
-/* Use PowerPC Altivec inner loops */
-#cmakedefine GMX_PPC_ALTIVEC
-
/* Use (modified) Gamess-UK for QM-MM calculations */
#cmakedefine GMX_QMMM_GAMESS
/* Use the PowerPC hardware 1/sqrt(x) */
#cmakedefine GMX_POWERPC_INVSQRT
-/* Compile with dlopen */
-#cmakedefine GMX_DLOPEN
+/* Use sub-counters */
+#cmakedefine GMX_CYCLE_SUBCOUNTERS
+
+/* Compile with plugin support */
+#cmakedefine GMX_USE_PLUGINS
+
+/* Fallback path for VMD plug-ins */
+#define GMX_VMD_PLUGIN_PATH "@GMX_VMD_PLUGIN_PATH@"
/* Define when pthreads are used */
#cmakedefine THREAD_PTHREADS
/* Define when Windows threads are used */
#cmakedefine THREAD_WINDOWS
+/* Define when thread-MPI atomic operations are available */
+#cmakedefine TMPI_ATOMICS
+
/* Define for busy wait option */
#cmakedefine TMPI_WAIT_FOR_NO_ONE
/* Define for GetSystemInfo() */
#cmakedefine HAVE_SYSTEM_INFO
-/* Single-precision SSE instructions on X86_64 */
-#cmakedefine GMX_X86_64_SSE
-
-/* Double-precision SSE2 instructions on X86_64 */
-#cmakedefine GMX_X86_64_SSE2
-
/* Enable x86 gcc inline assembly */
#cmakedefine GMX_X86_GCC_INLINE_ASM
-/* Enable x86 MSVC inline assembly */
-#cmakedefine GMX_X86_MSVC_INLINE_ASM
-
-/* Support for SSE intrinsics */
-#cmakedefine GMX_SSE
-
-/* Support for SSE2 intrinsics */
-#cmakedefine GMX_SSE2
-
-/* Support for SSE3 intrinsics */
-#cmakedefine GMX_SSE3
-
-/* Support for SSE4.1 intrinsics */
-#cmakedefine GMX_SSE4_1
-
-/* Define to 1 if you have the <altivec.h> header file. */
-#cmakedefine HAVE_ALTIVEC_H
+/* Use GPU native acceleration */
+#cmakedefine GMX_GPU
/* Define to 1 if the system has the type gmx_bool. */
#cmakedefine HAVE_BOOL
/* Define to 1 if you have the gsl library (-lgsl). */
#cmakedefine HAVE_LIBGSL
-/* Define to 1 if you have the xml2 library (-lxml2). */
-#cmakedefine HAVE_LIBXML2
-
/* Define to 1 if you have the dl library (-ldl). */
#cmakedefine HAVE_LIBDL
/* Define to 1 if you have the _fileno() function. */
#cmakedefine HAVE__FILENO
+/* Define to 1 if you have the sigaction() function. */
+#cmakedefine HAVE_SIGACTION
+
+/* Define to 1 if you have the rsqrt() function. */
+#cmakedefine HAVE_RSQRT
+
+/* Define to 1 if you have the rsqrtf() function. */
+#cmakedefine HAVE_RSQRTF
+
+/* Define to 1 if you have the sqrtf() function. */
+#cmakedefine HAVE_SQRTF
+
/* Define to 1 if you have the <string.h> header file. */
#cmakedefine HAVE_STRING_H
/* Define to 1 if you have the <rpc/xdr.h> header file. */
#cmakedefine HAVE_RPC_XDR_H
-/* Define to 1 if yo have the <xmmintrin.h> header file. */
-#cmakedefine HAVE_XMMINTRIN_H
+/* Define to 1 if you have the <x86intrin.h> header file */
+#cmakedefine HAVE_X86INTRIN_H
-/* Define to 1 if yo have the <emmintrin.h> header file. */
-#cmakedefine HAVE_EMMINTRIN_H
+/* Define to 1 if you have the <intrin.h> header file */
+#cmakedefine HAVE_INTRIN_H
-/* Define to 1 if yo have the <pmmintrin.h> header file. */
-#cmakedefine HAVE_PMMINTRIN_H
-
-/* Define to 1 if yo have the <smmintrin.h> header file. */
-#cmakedefine HAVE_SMMINTRIN_H
-
-/* Define for sched.h (this is for thread_mpi)*/
-#define HAVE_SCHED_H
+/* Define to 1 if you have the <sched.h> header */
+#cmakedefine HAVE_SCHED_H
/* Define to 1 if you have the vprintf() function. */
#cmakedefine HAVE_VPRINTF
+/* Define to 1 if you have the sysconf() function */
+#cmakedefine HAVE_SYSCONF
+
+/* Define to 1 if you have the sched_getaffinity() function */
+#cmakedefine HAVE_SCHED_GETAFFINITY
+
+/* Define to 1 if you have the sched_setaffinity() function */
+#cmakedefine HAVE_SCHED_SETAFFINITY
+
/* Bytes in IEEE fp word are in big-endian order if set, little-endian if not.
Only relevant when FLOAT_FORMAT_IEEE754 is defined. */
#cmakedefine GMX_IEEE754_BIG_ENDIAN_BYTE_ORDER
order! Only relevant when FLOAT_FORMAT_IEEE754 is defined. */
#cmakedefine GMX_IEEE754_BIG_ENDIAN_WORD_ORDER
-/* Define as the return type of signal handlers (int or void). */
-#cmakedefine RETSIGTYPE @RETSIGTYPE@
-
/* Define if SIGUSR1 is present */
#cmakedefine HAVE_SIGUSR1
#cmakedefine gid_t int
/* Define to __inline__ or __inline if that is what the C compiler
- calls it, or to nothing if inline is not supported under any name. */
+ calls it, or to nothing if inline is not supported under any name.
+ Please do NOT remove the gmx_inline keyword from here. The classical
+ C++ inline keyword is merely a recommendation to the compiler, and
+ many compilers support stronger alternatives (e.g. __forceinline)
+ that we might want to use. */
+#define gmx_inline ${INLINE_KEYWORD}
#ifndef __cplusplus
#define inline ${INLINE_KEYWORD}
#endif
/* Define to __restrict__ or __restrict if that is what the C compiler
- calls it, or to nothing if restrict is not supported under any name. */
-#define restrict ${RESTRICT_KEYWORD}
+ calls it, unless we are on C99 when it is simply called restrict.
+ Since restrict is a reserved key word in C99 we are not allowed to
+ redefine the word itself, so call this gmx_restrict to avoid having
+ to identify the language standard level. If it is not supported, it
+ is still defined to an empty string here. */
+#define gmx_restrict ${RESTRICT_KEYWORD}
#ifndef CPLUSPLUS
#ifdef __cplusplus
#endif
/* Define to long int if <sys/types.h> does not define. */
-#cmakedefine off_t int
-
+#cmakedefine off_t int
+
/* Define to unsigned int if <sys/types.h> does not define. */
-#cmakedefine size_t int
+#cmakedefine size_t int
/* Define to int if <sys/types.h> does not define. */
#cmakedefine uid_t int
-
+
/* Build special-purpose mdrun library */
#cmakedefine GMX_FAHCORE