Technically, GROMACS can be compiled on any platform with an ANSI C99
and C++98 compiler, and their respective standard C/C++ libraries.
+We use only a few C99 features, but note that the C++ compiler also needs to
+support these C99 features (notably, int64_t and related things), which are not
+part of the C++98 standard.
Getting good performance on an OS and architecture requires choosing a
good compiler. In practice, many compilers struggle to do a good job
optimizing the GROMACS architecture-optimized SIMD kernels.
#define _GNU_SOURCE 1
#endif
+/* Some C++(?) compilers require these to be defined to get the integer limits
+ * and format specifier macros from stdint.h and inttypes.h, respectively.
+ * The macros are in C99 and C++11, but not in C++98...
+ * As with _GNU_SOURCE, these need to be defined before these headers get first
+ * included. Unlike _GNU_SOURCE, these headers are included indirectly in most
+ * header and source files (even though the macros are not used that often), so
+ * there is no easy alternative to defining them here, either.
+ * If someone happens to use such a compiler to compile against the installed
+ * Gromacs headers, they need for now take care to define the macros themselves
+ * (as there is no way Gromacs can do that consistently).
+ */
+#define __STDC_LIMIT_MACROS
+#define __STDC_FORMAT_MACROS
+
#ifdef GMX_FAHCORE
#define FULLINDIRECT 1
#define USE_FAH_XDR 1