Sort all includes in src/gromacs
[alexxy/gromacs.git] / src / gromacs / gmxlib / copyrite.cpp
index 249810e6ab4115d6ce89569c4c4a6e65c10abf9e..fe7045a22e5881c53800a34b3656a48024c36cd0 100644 (file)
  * To help us fund GROMACS development, we humbly ask that you cite
  * the research papers on the package. Check out http://www.gromacs.org.
  */
-#include "copyrite.h"
+#include "gmxpre.h"
+
+#include "gromacs/legacyheaders/copyrite.h"
 
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include <stdio.h>
 #include <stdlib.h>
 #ifdef HAVE_LIBMKL
 #include <mkl.h>
 #endif
-
+#ifdef HAVE_EXTRAE
+#include <extrae_user_events.h>
+#endif
 #include <boost/version.hpp>
 
 /* This file is completely threadsafe - keep it that way! */
 
-#include "gromacs/legacyheaders/macros.h"
-#include "gromacs/random/random.h"
-#include "gromacs/legacyheaders/smalloc.h"
-#include "gromacs/legacyheaders/string2.h"
-#include "gromacs/legacyheaders/vec.h"
-
+#include "buildinfo.h"
 #include "gromacs/fft/fft.h"
-#include "gromacs/fileio/futil.h"
 #include "gromacs/fileio/strdb.h"
+#include "gromacs/legacyheaders/macros.h"
+#include "gromacs/math/vec.h"
+#include "gromacs/random/random.h"
+#include "gromacs/utility/baseversion.h"
+#include "gromacs/utility/cstringutil.h"
 #include "gromacs/utility/exceptions.h"
+#include "gromacs/utility/futil.h"
 #include "gromacs/utility/gmxassert.h"
 #include "gromacs/utility/programcontext.h"
-
-#include "buildinfo.h"
+#include "gromacs/utility/smalloc.h"
 
 static gmx_bool be_cool(void)
 {
@@ -561,7 +562,12 @@ void please_cite(FILE *fp, const char *key)
           "M. Lundborg, R. Apostolov, D. Spangberg, A. Gardenas, D. van der Spoel and E. Lindahl",
           "An efficient and extensible format, library, and API for binary trajectory data from molecular simulations",
           "J. Comput. Chem.",
-          35, 2014, "260-269"}
+          35, 2014, "260-269"},
+        { "Goga2012",
+          "N. Goga and A. J. Rzepiela and A. H. de Vries and S. J. Marrink and H. J. C. Berendsen",
+          "Efficient Algorithms for Langevin and DPD Dynamics",
+          "J. Chem. Theory Comput.",
+          8, 2012, "3637--3649"}
     };
 #define NSTR (int)asize(citedb)
 
@@ -601,27 +607,23 @@ void please_cite(FILE *fp, const char *key)
     fflush(fp);
 }
 
-#ifdef GMX_GIT_VERSION_INFO
-/* Version information generated at compile time. */
-#include "gromacs/utility/gitversion.h"
-#else
-/* Fall back to statically defined version. */
-static const char _gmx_ver_string[] = "VERSION " VERSION;
-#endif
-
 const char *GromacsVersion()
 {
-    return _gmx_ver_string;
+    return gmx_version();
 }
 
 const char *ShortProgram(void)
 {
+    const char *programName = NULL;
+
     try
     {
         // TODO: Use the display name once it doesn't break anything.
-        return gmx::getProgramContext().programName();
+        programName = gmx::getProgramContext().programName();
     }
     GMX_CATCH_ALL_AND_EXIT_WITH_FATAL_ERROR;
+
+    return programName;
 }
 
 const char *Program(void)
@@ -638,18 +640,17 @@ extern void gmx_print_version_info_gpu(FILE *fp);
 
 static void gmx_print_version_info(FILE *fp)
 {
-    fprintf(fp, "Gromacs version:    %s\n", _gmx_ver_string);
-#ifdef GMX_GIT_VERSION_INFO
-    fprintf(fp, "GIT SHA1 hash:      %s\n", _gmx_full_git_hash);
-    /* Only print out the branch information if present.
-     * The generating script checks whether the branch point actually
-     * coincides with the hash reported above, and produces an empty string
-     * in such cases. */
-    if (_gmx_central_base_hash[0] != 0)
+    fprintf(fp, "Gromacs version:    %s\n", gmx_version());
+    const char *const git_hash = gmx_version_git_full_hash();
+    if (git_hash[0] != '\0')
     {
-        fprintf(fp, "Branched from:      %s\n", _gmx_central_base_hash);
+        fprintf(fp, "GIT SHA1 hash:      %s\n", git_hash);
+    }
+    const char *const base_hash = gmx_version_git_central_base_hash();
+    if (base_hash[0] != '\0')
+    {
+        fprintf(fp, "Branched from:      %s\n", base_hash);
     }
-#endif
 
 #ifdef GMX_DOUBLE
     fprintf(fp, "Precision:          double\n");
@@ -679,7 +680,11 @@ static void gmx_print_version_info(FILE *fp)
 #define gmx_stringify2(x) #x
 #define gmx_stringify(x) gmx_stringify2(x)
     fprintf(fp, "invsqrt routine:    %s\n", gmx_stringify(gmx_invsqrt(x)));
+#ifndef __MIC__
     fprintf(fp, "SIMD instructions:  %s\n", GMX_SIMD_STRING);
+#else
+    fprintf(fp, "SIMD instructions:  %s\n", "Intel MIC");
+#endif
 
     fprintf(fp, "FFT library:        %s\n", gmx_fft_get_version_info());
 #ifdef HAVE_RDTSCP
@@ -697,6 +702,14 @@ static void gmx_print_version_info(FILE *fp)
 #else
     fprintf(fp, "TNG support:        disabled\n");
 #endif
+#ifdef HAVE_EXTRAE
+    unsigned major, minor, revision;
+    Extrae_get_version(&major, &minor, &revision);
+    fprintf(fp, "Tracing support:    enabled. Using Extrae-%d.%d.%d\n", major, minor, revision);
+#else
+    fprintf(fp, "Tracing support:    disabled\n");
+#endif
+
 
     fprintf(fp, "Built on:           %s\n", BUILD_TIME);
     fprintf(fp, "Built by:           %s\n", BUILD_USER);
@@ -786,17 +799,22 @@ void printBinaryInformation(FILE                            *fp,
         // Gromacs binary or some other binary that is calling Gromacs; we
         // could then print "%s is part of GROMACS" or some alternative text.
         fprintf(fp, "%sGROMACS:    %s, %s%s%s\n", prefix, name,
-                GromacsVersion(), precisionString, suffix);
+                gmx_version(), precisionString, suffix);
         fprintf(fp, "\n");
         printCopyright(fp);
         fprintf(fp, "\n");
     }
-    fprintf(fp, "%sGROMACS:    %s, %s%s%s\n", prefix, name,
-            GromacsVersion(), precisionString, suffix);
+    fprintf(fp, "%sGROMACS:      %s, %s%s%s\n", prefix, name,
+            gmx_version(), precisionString, suffix);
     const char *const binaryPath = programContext.fullBinaryPath();
     if (binaryPath != NULL && binaryPath[0] != '\0')
     {
-        fprintf(fp, "%sExecutable: %s%s\n", prefix, binaryPath, suffix);
+        fprintf(fp, "%sExecutable:   %s%s\n", prefix, binaryPath, suffix);
+    }
+    const char *const libraryPath = programContext.defaultLibraryDataPath();
+    if (libraryPath != NULL && libraryPath[0] != '\0')
+    {
+        fprintf(fp, "%sLibrary dir:  %s%s\n", prefix, libraryPath, suffix);
     }
     const char *const commandLine = programContext.commandLine();
     if (commandLine != NULL && commandLine[0] != '\0')