version: 17.11-rc3
[dpdk.git] / lib / librte_eal / common / include / rte_version.h
index c101a21..d08cf48 100644 (file)
@@ -1,13 +1,13 @@
 /*-
  *   BSD LICENSE
- * 
- *   Copyright(c) 2010-2013 Intel Corporation. All rights reserved.
+ *
+ *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
  *   All rights reserved.
- * 
+ *
  *   Redistribution and use in source and binary forms, with or without
  *   modification, are permitted provided that the following conditions
  *   are met:
- * 
+ *
  *     * Redistributions of source code must retain the above copyright
  *       notice, this list of conditions and the following disclaimer.
  *     * Redistributions in binary form must reproduce the above copyright
@@ -17,7 +17,7 @@
  *     * Neither the name of Intel Corporation nor the names of its
  *       contributors may be used to endorse or promote products derived
  *       from this software without specific prior written permission.
- * 
+ *
  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -33,7 +33,7 @@
 
 /**
  * @file
- * Definitions of Intel(R) DPDK version numbers
+ * Definitions of DPDK version numbers
  */
 
 #ifndef _RTE_VERSION_H_
@@ -44,52 +44,84 @@ extern "C" {
 #endif
 
 #include <stdint.h>
+#include <string.h>
+#include <stdio.h>
 #include <rte_common.h>
 
 /**
  * String that appears before the version number
  */
-#define RTE_VER_PREFIX "RTE"
+#define RTE_VER_PREFIX "DPDK"
 
 /**
- * Major version number i.e. the x in x.y.z
+ * Major version/year number i.e. the yy in yy.mm.z
  */
-#define RTE_VER_MAJOR 1
+#define RTE_VER_YEAR 17
 
 /**
- * Minor version number i.e. the y in x.y.z
+ * Minor version/month number i.e. the mm in yy.mm.z
  */
-#define RTE_VER_MINOR 5
+#define RTE_VER_MONTH 11
 
 /**
- * Patch level number i.e. the z in x.y.z
+ * Patch level number i.e. the z in yy.mm.z
  */
-#define RTE_VER_PATCH_LEVEL 1
+#define RTE_VER_MINOR 0
 
 /**
- * Extra string to be appended to version number,
- * for example: pre1, EAR, final etc.
+ * Extra string to be appended to version number
  */
-#define RTE_VER_SUFFIX ""
+#define RTE_VER_SUFFIX "-rc"
 
 /**
- * Function returning string of version number: "RTE x.y.z"
+ * Patch release number
+ *   0-15 = release candidates
+ *   16   = release
+ */
+#define RTE_VER_RELEASE 3
+
+/**
+ * Macro to compute a version number usable for comparisons
+ */
+#define RTE_VERSION_NUM(a,b,c,d) ((a) << 24 | (b) << 16 | (c) << 8 | (d))
+
+/**
+ * All version numbers in one to compare with RTE_VERSION_NUM()
+ */
+#define RTE_VERSION RTE_VERSION_NUM( \
+                       RTE_VER_YEAR, \
+                       RTE_VER_MONTH, \
+                       RTE_VER_MINOR, \
+                       RTE_VER_RELEASE)
+
+/**
+ * Function returning version string
  * @return
  *     string
  */
 static inline const char *
-rte_version(void) {
-       if (sizeof(RTE_VER_SUFFIX) > sizeof(""))
-               return RTE_VER_PREFIX" "
-                               RTE_STR(RTE_VER_MAJOR)"."
-                               RTE_STR(RTE_VER_MINOR)"."
-                               RTE_STR(RTE_VER_PATCH_LEVEL)
-                               "-"RTE_VER_SUFFIX;
+rte_version(void)
+{
+       static char version[32];
+       if (version[0] != 0)
+               return version;
+       if (strlen(RTE_VER_SUFFIX) == 0)
+               snprintf(version, sizeof(version), "%s %d.%02d.%d",
+                       RTE_VER_PREFIX,
+                       RTE_VER_YEAR,
+                       RTE_VER_MONTH,
+                       RTE_VER_MINOR);
        else
-               return RTE_VER_PREFIX" "
-                               RTE_STR(RTE_VER_MAJOR)"."
-                               RTE_STR(RTE_VER_MINOR)"."
-                               RTE_STR(RTE_VER_PATCH_LEVEL);
+               snprintf(version, sizeof(version), "%s %d.%02d.%d%s%d",
+                       RTE_VER_PREFIX,
+                       RTE_VER_YEAR,
+                       RTE_VER_MONTH,
+                       RTE_VER_MINOR,
+                       RTE_VER_SUFFIX,
+                       RTE_VER_RELEASE < 16 ?
+                               RTE_VER_RELEASE :
+                               RTE_VER_RELEASE - 16);
+       return version;
 }
 
 #ifdef __cplusplus