Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
move version related content to a dedicated file
[simgrid.git] / src / simgrid / sg_version.cpp
diff --git a/src/simgrid/sg_version.cpp b/src/simgrid/sg_version.cpp
new file mode 100644 (file)
index 0000000..c538272
--- /dev/null
@@ -0,0 +1,90 @@
+/* Copyright (c) 2019. The SimGrid Team. All rights reserved.          */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+#include "simgrid/config.h"
+#include "src/simgrid/version.h"
+#include "xbt/base.h"
+#include "xbt/log.h"
+#include "xbt/misc.h"
+#include "xbt/sysdep.h"
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(sg_version, surf, "About the versioning of SimGrid");
+
+void sg_version_check(int lib_version_major, int lib_version_minor, int lib_version_patch)
+{
+  if ((lib_version_major != SIMGRID_VERSION_MAJOR) || (lib_version_minor != SIMGRID_VERSION_MINOR)) {
+    fprintf(stderr,
+            "FATAL ERROR: Your program was compiled with SimGrid version %d.%d.%d, "
+            "and then linked against SimGrid %d.%d.%d. Please fix this.\n",
+            lib_version_major, lib_version_minor, lib_version_patch, SIMGRID_VERSION_MAJOR, SIMGRID_VERSION_MINOR,
+            SIMGRID_VERSION_PATCH);
+    abort();
+  }
+  if (lib_version_patch != SIMGRID_VERSION_PATCH) {
+    if (SIMGRID_VERSION_PATCH > 89 || lib_version_patch > 89) {
+      fprintf(
+          stderr,
+          "FATAL ERROR: Your program was compiled with SimGrid version %d.%d.%d, "
+          "and then linked against SimGrid %d.%d.%d. \n"
+          "One of them is a development version, and should not be mixed with the stable release. Please fix this.\n",
+          lib_version_major, lib_version_minor, lib_version_patch, SIMGRID_VERSION_MAJOR, SIMGRID_VERSION_MINOR,
+          SIMGRID_VERSION_PATCH);
+      abort();
+    }
+    fprintf(stderr,
+            "Warning: Your program was compiled with SimGrid version %d.%d.%d, "
+            "and then linked against SimGrid %d.%d.%d. Proceeding anyway.\n",
+            lib_version_major, lib_version_minor, lib_version_patch, SIMGRID_VERSION_MAJOR, SIMGRID_VERSION_MINOR,
+            SIMGRID_VERSION_PATCH);
+  }
+}
+
+void sg_version_get(int* ver_major, int* ver_minor, int* ver_patch)
+{
+  *ver_major = SIMGRID_VERSION_MAJOR;
+  *ver_minor = SIMGRID_VERSION_MINOR;
+  *ver_patch = SIMGRID_VERSION_PATCH;
+}
+
+void sg_version()
+{
+  XBT_HELP("This program was linked against %s (git: %s), found in %s.", SIMGRID_VERSION_STRING, SIMGRID_GIT_VERSION,
+           SIMGRID_INSTALL_PREFIX);
+
+#if SIMGRID_HAVE_MC
+  XBT_HELP("   Model-checking support compiled in.");
+#else
+  XBT_HELP("   Model-checking support disabled at compilation.");
+#endif
+
+#if SIMGRID_HAVE_NS3
+  XBT_HELP("   ns-3 support compiled in.");
+#else
+  XBT_HELP("   ns-3 support disabled at compilation.");
+#endif
+
+#if SIMGRID_HAVE_JEDULE
+  XBT_HELP("   Jedule support compiled in.");
+#else
+  XBT_HELP("   Jedule support disabled at compilation.");
+#endif
+
+#if SIMGRID_HAVE_LUA
+  XBT_HELP("   Lua support compiled in.");
+#else
+  XBT_HELP("   Lua support disabled at compilation.");
+#endif
+
+#if SIMGRID_HAVE_MALLOCATOR
+  XBT_HELP("   Mallocator support compiled in.");
+#else
+  XBT_HELP("   Mallocator support disabled at compilation.");
+#endif
+
+  XBT_HELP("\nTo cite SimGrid in a publication, please use:\n"
+           "   Henri Casanova, Arnaud Giersch, Arnaud Legrand, Martin Quinson, Frédéric Suter. \n"
+           "   Versatile, Scalable, and Accurate Simulation of Distributed Applications and Platforms. \n"
+           "   Journal of Parallel and Distributed Computing, Elsevier, 2014, 74 (10), pp.2899-2917.\n"
+           "The pdf file and a BibTeX entry for LaTeX users can be found at http://hal.inria.fr/hal-01017319");
+}