diff mbox

[PATCHv3] api: fix odp_version_api_str()

Message ID 1423046129-19463-1-git-send-email-maxim.uvarov@linaro.org
State New
Headers show

Commit Message

Maxim Uvarov Feb. 4, 2015, 10:35 a.m. UTC
odp_version_api_str() has to be in API header while
odp_version_impl_str() should be in linux-generic.
That change fixes:
https://bugs.linaro.org/show_bug.cgi?id=1194

Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
---
 v3: make implementation version not online, for that
	odp_impl.c goes away and replaced with odp_version.c, which
	has implementation for version strings (api and implementation).

 include/odp/api/version.h                          | 12 -------
 platform/linux-generic/Makefile.am                 |  5 ++-
 .../linux-generic/include/odp/plat/version_types.h | 30 -----------------
 platform/linux-generic/include/odp/version.h       | 25 +++++++-------
 platform/linux-generic/odp_impl.c                  | 35 -------------------
 platform/linux-generic/odp_version.c               | 39 ++++++++++++++++++++++
 6 files changed, 53 insertions(+), 93 deletions(-)
 delete mode 100644 platform/linux-generic/include/odp/plat/version_types.h
 delete mode 100644 platform/linux-generic/odp_impl.c
 create mode 100644 platform/linux-generic/odp_version.c

Comments

Ola Liljedahl Feb. 4, 2015, 10:41 a.m. UTC | #1
On 4 February 2015 at 11:35, Maxim Uvarov <maxim.uvarov@linaro.org> wrote:
> odp_version_api_str() has to be in API header while
> odp_version_impl_str() should be in linux-generic.
The definition of odp_version_impl_str() could (should) be part of the
ODP API and thus defined in include/odp/api/version.h.
The value (string) it returns is implementation specific (that being
the whole purpose of the function).

Why was the definition removed from include/odp/api/version.h?



> That change fixes:
> https://bugs.linaro.org/show_bug.cgi?id=1194
>
> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
> ---
>  v3: make implementation version not online, for that
>         odp_impl.c goes away and replaced with odp_version.c, which
>         has implementation for version strings (api and implementation).
>
>  include/odp/api/version.h                          | 12 -------
>  platform/linux-generic/Makefile.am                 |  5 ++-
>  .../linux-generic/include/odp/plat/version_types.h | 30 -----------------
>  platform/linux-generic/include/odp/version.h       | 25 +++++++-------
>  platform/linux-generic/odp_impl.c                  | 35 -------------------
>  platform/linux-generic/odp_version.c               | 39 ++++++++++++++++++++++
>  6 files changed, 53 insertions(+), 93 deletions(-)
>  delete mode 100644 platform/linux-generic/include/odp/plat/version_types.h
>  delete mode 100644 platform/linux-generic/odp_impl.c
>  create mode 100644 platform/linux-generic/odp_version.c
>
> diff --git a/include/odp/api/version.h b/include/odp/api/version.h
> index 0889d9c..834835e 100644
> --- a/include/odp/api/version.h
> +++ b/include/odp/api/version.h
> @@ -53,18 +53,6 @@ extern "C" {
>   */
>  const char *odp_version_api_str(void);
>
> -
> -/**
> - * Returns ODP implementation version string
> - *
> - * Every implementation of ODP may receive bug fixes independent of the version
> - * of the API changing, this function returns that indication string.
> - * @note This string is implementation specific.
> - * @sa odp_version_api_str()
> - *
> - * @return null terminated implementation specific version identifier string
> -  */
> -const char *odp_version_impl_str(void);
>  /**
>   * @}
>   */
> diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am
> index 81245b1..68603c7 100644
> --- a/platform/linux-generic/Makefile.am
> +++ b/platform/linux-generic/Makefile.am
> @@ -57,8 +57,7 @@ odpplatinclude_HEADERS = \
>                   $(top_srcdir)/platform/linux-generic/include/odp/plat/queue_types.h \
>                   $(top_srcdir)/platform/linux-generic/include/odp/plat/schedule_types.h \
>                   $(top_srcdir)/platform/linux-generic/include/odp/plat/shared_memory_types.h \
> -                 $(top_srcdir)/platform/linux-generic/include/odp/plat/strong_types.h \
> -                 $(top_srcdir)/platform/linux-generic/include/odp/plat/version_types.h
> +                 $(top_srcdir)/platform/linux-generic/include/odp/plat/strong_types.h
>
>  odpapiincludedir= $(includedir)/odp/api
>  odpapiinclude_HEADERS = \
> @@ -137,7 +136,6 @@ __LIB__libodp_la_SOURCES = \
>                            odp_crypto.c \
>                            odp_event.c \
>                            odp_init.c \
> -                          odp_impl.c \
>                            odp_linux.c \
>                            odp_packet.c \
>                            odp_packet_flags.c \
> @@ -154,4 +152,5 @@ __LIB__libodp_la_SOURCES = \
>                            odp_ticketlock.c \
>                            odp_time.c \
>                            odp_timer.c \
> +                          odp_version.c \
>                            odp_weak.c
> diff --git a/platform/linux-generic/include/odp/plat/version_types.h b/platform/linux-generic/include/odp/plat/version_types.h
> deleted file mode 100644
> index e3327eb..0000000
> --- a/platform/linux-generic/include/odp/plat/version_types.h
> +++ /dev/null
> @@ -1,30 +0,0 @@
> -/* Copyright (c) 2015, Linaro Limited
> - * All rights reserved.
> - *
> - * SPDX-License-Identifier:     BSD-3-Clause
> - */
> -
> -#ifndef ODP_VERSION_TYPESH_
> -#define ODP_VERSION_TYPESH_
> -
> -#ifdef __cplusplus
> -extern "C" {
> -#endif
> -
> -/** @internal Version string expand */
> -#define ODP_VERSION_STR_EXPAND(x)  #x
> -
> -/** @internal Version to string */
> -#define ODP_VERSION_TO_STR(x)      ODP_VERSION_STR_EXPAND(x)
> -
> -/** @internal API version string */
> -#define ODP_VERSION_API_STR \
> -ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
> -ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
> -ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR)
> -
> -#ifdef __cplusplus
> -}
> -#endif
> -
> -#endif
> diff --git a/platform/linux-generic/include/odp/version.h b/platform/linux-generic/include/odp/version.h
> index f29320a..0c50826 100644
> --- a/platform/linux-generic/include/odp/version.h
> +++ b/platform/linux-generic/include/odp/version.h
> @@ -17,22 +17,21 @@
>  extern "C" {
>  #endif
>
> -#include <odp/plat/version_types.h>
> +#include <odp/api/version.h>
>
> -/** @ingroup odp_ver_abt_log_dbg
> - *  @{
> - */
> -
> -static inline const char *odp_version_api_str(void)
> -{
> -       return ODP_VERSION_API_STR;
> -}
> +#define  ODP_VERSION_IMPL 0
>
>  /**
> - * @}
> - */
> -
> -#include <odp/api/version.h>
> + * Returns ODP implementation version string
> + *
> + * Every implementation of ODP may receive bug fixes independent of the version
> + * of the API changing, this function returns that indication string.
> + * @note This string is implementation specific.
> + * @sa odp_version_api_str()
> + *
> + * @return null terminated implementation specific version identifier string
> +  */
> +const char *odp_version_impl_str(void);
>
>  #ifdef __cplusplus
>  }
> diff --git a/platform/linux-generic/odp_impl.c b/platform/linux-generic/odp_impl.c
> deleted file mode 100644
> index ca3224d..0000000
> --- a/platform/linux-generic/odp_impl.c
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -/* Copyright (c) 2014, Linaro Limited
> - * All rights reserved.
> - *
> - * SPDX-License-Identifier:     BSD-3-Clause
> - */
> -
> -
> -/**
> - * @file
> - *
> - * ODP Implementation information
> - */
> -
> -#ifndef ODP_IMPL_H_
> -#define ODP_IMPL_H_
> -
> -#ifdef __cplusplus
> -extern "C" {
> -#endif
> -
> -#include <odp/version.h>
> -
> -#define  ODP_VERSION_IMPL 0
> -#define  ODP_VERSION_IMPL_STR ODP_VERSION_TO_STR(ODP_VERSION_IMPL)
> -
> -const char *odp_version_impl_str(void)
> -{
> -       return ODP_VERSION_IMPL_STR;
> -}
> -
> -#ifdef __cplusplus
> -}
> -#endif
> -
> -#endif
> diff --git a/platform/linux-generic/odp_version.c b/platform/linux-generic/odp_version.c
> new file mode 100644
> index 0000000..032564d
> --- /dev/null
> +++ b/platform/linux-generic/odp_version.c
> @@ -0,0 +1,39 @@
> +/* Copyright (c) 2014, Linaro Limited
> + * All rights reserved.
> + *
> + * SPDX-License-Identifier:     BSD-3-Clause
> + */
> +
> +/**
> + * @file
> + *
> + * ODP API and Implementation information
> + */
> +
> +#include <odp/api/version.h>
> +#include <odp/version.h>
> +
> +/** @internal Version string expand */
> +#define ODP_VERSION_STR_EXPAND(x)  #x
> +
> +/** @internal Version to string */
> +#define ODP_VERSION_TO_STR(x)      ODP_VERSION_STR_EXPAND(x)
> +
> +/** @internal API version string */
> +#define ODP_VERSION_API_STR \
> +ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
> +ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
> +ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR)
> +
> +const char *odp_version_api_str(void)
> +{
> +       return ODP_VERSION_API_STR;
> +}
> +
> +/** @internal Implementation version to string */
> +#define  ODP_VERSION_IMPL_STR ODP_VERSION_TO_STR(ODP_VERSION_IMPL)
> +
> +const char *odp_version_impl_str(void)
> +{
> +       return ODP_VERSION_IMPL_STR;
> +}
> --
> 1.8.5.1.163.gd7aced9
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
Mike Holmes Feb. 4, 2015, 2:48 p.m. UTC | #2
nack:  I believe the public api needs to be in include/odp/api/version.h
and that const char *odp_version_impl_str(void); is part of the public API

On 4 February 2015 at 05:41, Ola Liljedahl <ola.liljedahl@linaro.org> wrote:

> On 4 February 2015 at 11:35, Maxim Uvarov <maxim.uvarov@linaro.org> wrote:
> > odp_version_api_str() has to be in API header while
> > odp_version_impl_str() should be in linux-generic.
> The definition of odp_version_impl_str() could (should) be part of the
> ODP API and thus defined in include/odp/api/version.h.
> The value (string) it returns is implementation specific (that being
> the whole purpose of the function).
>
> Why was the definition removed from include/odp/api/version.h?
>
>
>
> > That change fixes:
> > https://bugs.linaro.org/show_bug.cgi?id=1194
> >
> > Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
> > ---
> >  v3: make implementation version not online, for that
> >         odp_impl.c goes away and replaced with odp_version.c, which
> >         has implementation for version strings (api and implementation).
> >
> >  include/odp/api/version.h                          | 12 -------
> >  platform/linux-generic/Makefile.am                 |  5 ++-
> >  .../linux-generic/include/odp/plat/version_types.h | 30
> -----------------
> >  platform/linux-generic/include/odp/version.h       | 25 +++++++-------
> >  platform/linux-generic/odp_impl.c                  | 35
> -------------------
> >  platform/linux-generic/odp_version.c               | 39
> ++++++++++++++++++++++
> >  6 files changed, 53 insertions(+), 93 deletions(-)
> >  delete mode 100644
> platform/linux-generic/include/odp/plat/version_types.h
> >  delete mode 100644 platform/linux-generic/odp_impl.c
> >  create mode 100644 platform/linux-generic/odp_version.c
> >
> > diff --git a/include/odp/api/version.h b/include/odp/api/version.h
> > index 0889d9c..834835e 100644
> > --- a/include/odp/api/version.h
> > +++ b/include/odp/api/version.h
> > @@ -53,18 +53,6 @@ extern "C" {
> >   */
> >  const char *odp_version_api_str(void);
> >
> > -
> > -/**
> > - * Returns ODP implementation version string
> > - *
> > - * Every implementation of ODP may receive bug fixes independent of the
> version
> > - * of the API changing, this function returns that indication string.
> > - * @note This string is implementation specific.
> > - * @sa odp_version_api_str()
> > - *
> > - * @return null terminated implementation specific version identifier
> string
> > -  */
> > -const char *odp_version_impl_str(void);
> >  /**
> >   * @}
> >   */
> > diff --git a/platform/linux-generic/Makefile.am
> b/platform/linux-generic/Makefile.am
> > index 81245b1..68603c7 100644
> > --- a/platform/linux-generic/Makefile.am
> > +++ b/platform/linux-generic/Makefile.am
> > @@ -57,8 +57,7 @@ odpplatinclude_HEADERS = \
> >
>  $(top_srcdir)/platform/linux-generic/include/odp/plat/queue_types.h \
> >
>  $(top_srcdir)/platform/linux-generic/include/odp/plat/schedule_types.h \
> >
>  $(top_srcdir)/platform/linux-generic/include/odp/plat/shared_memory_types.h
> \
> > -
>  $(top_srcdir)/platform/linux-generic/include/odp/plat/strong_types.h \
> > -
>  $(top_srcdir)/platform/linux-generic/include/odp/plat/version_types.h
> > +
>  $(top_srcdir)/platform/linux-generic/include/odp/plat/strong_types.h
> >
> >  odpapiincludedir= $(includedir)/odp/api
> >  odpapiinclude_HEADERS = \
> > @@ -137,7 +136,6 @@ __LIB__libodp_la_SOURCES = \
> >                            odp_crypto.c \
> >                            odp_event.c \
> >                            odp_init.c \
> > -                          odp_impl.c \
> >                            odp_linux.c \
> >                            odp_packet.c \
> >                            odp_packet_flags.c \
> > @@ -154,4 +152,5 @@ __LIB__libodp_la_SOURCES = \
> >                            odp_ticketlock.c \
> >                            odp_time.c \
> >                            odp_timer.c \
> > +                          odp_version.c \
> >                            odp_weak.c
> > diff --git a/platform/linux-generic/include/odp/plat/version_types.h
> b/platform/linux-generic/include/odp/plat/version_types.h
> > deleted file mode 100644
> > index e3327eb..0000000
> > --- a/platform/linux-generic/include/odp/plat/version_types.h
> > +++ /dev/null
> > @@ -1,30 +0,0 @@
> > -/* Copyright (c) 2015, Linaro Limited
> > - * All rights reserved.
> > - *
> > - * SPDX-License-Identifier:     BSD-3-Clause
> > - */
> > -
> > -#ifndef ODP_VERSION_TYPESH_
> > -#define ODP_VERSION_TYPESH_
> > -
> > -#ifdef __cplusplus
> > -extern "C" {
> > -#endif
> > -
> > -/** @internal Version string expand */
> > -#define ODP_VERSION_STR_EXPAND(x)  #x
> > -
> > -/** @internal Version to string */
> > -#define ODP_VERSION_TO_STR(x)      ODP_VERSION_STR_EXPAND(x)
> > -
> > -/** @internal API version string */
> > -#define ODP_VERSION_API_STR \
> > -ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
> > -ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
> > -ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR)
> > -
> > -#ifdef __cplusplus
> > -}
> > -#endif
> > -
> > -#endif
> > diff --git a/platform/linux-generic/include/odp/version.h
> b/platform/linux-generic/include/odp/version.h
> > index f29320a..0c50826 100644
> > --- a/platform/linux-generic/include/odp/version.h
> > +++ b/platform/linux-generic/include/odp/version.h
> > @@ -17,22 +17,21 @@
> >  extern "C" {
> >  #endif
> >
> > -#include <odp/plat/version_types.h>
> > +#include <odp/api/version.h>
> >
> > -/** @ingroup odp_ver_abt_log_dbg
> > - *  @{
> > - */
> > -
> > -static inline const char *odp_version_api_str(void)
> > -{
> > -       return ODP_VERSION_API_STR;
> > -}
> > +#define  ODP_VERSION_IMPL 0
> >
> >  /**
> > - * @}
> > - */
> > -
> > -#include <odp/api/version.h>
> > + * Returns ODP implementation version string
> > + *
> > + * Every implementation of ODP may receive bug fixes independent of the
> version
> > + * of the API changing, this function returns that indication string.
> > + * @note This string is implementation specific.
> > + * @sa odp_version_api_str()
> > + *
> > + * @return null terminated implementation specific version identifier
> string
> > +  */
> > +const char *odp_version_impl_str(void);
> >
> >  #ifdef __cplusplus
> >  }
> > diff --git a/platform/linux-generic/odp_impl.c
> b/platform/linux-generic/odp_impl.c
> > deleted file mode 100644
> > index ca3224d..0000000
> > --- a/platform/linux-generic/odp_impl.c
> > +++ /dev/null
> > @@ -1,35 +0,0 @@
> > -/* Copyright (c) 2014, Linaro Limited
> > - * All rights reserved.
> > - *
> > - * SPDX-License-Identifier:     BSD-3-Clause
> > - */
> > -
> > -
> > -/**
> > - * @file
> > - *
> > - * ODP Implementation information
> > - */
> > -
> > -#ifndef ODP_IMPL_H_
> > -#define ODP_IMPL_H_
> > -
> > -#ifdef __cplusplus
> > -extern "C" {
> > -#endif
> > -
> > -#include <odp/version.h>
> > -
> > -#define  ODP_VERSION_IMPL 0
> > -#define  ODP_VERSION_IMPL_STR ODP_VERSION_TO_STR(ODP_VERSION_IMPL)
> > -
> > -const char *odp_version_impl_str(void)
> > -{
> > -       return ODP_VERSION_IMPL_STR;
> > -}
> > -
> > -#ifdef __cplusplus
> > -}
> > -#endif
> > -
> > -#endif
> > diff --git a/platform/linux-generic/odp_version.c
> b/platform/linux-generic/odp_version.c
> > new file mode 100644
> > index 0000000..032564d
> > --- /dev/null
> > +++ b/platform/linux-generic/odp_version.c
> > @@ -0,0 +1,39 @@
> > +/* Copyright (c) 2014, Linaro Limited
> > + * All rights reserved.
> > + *
> > + * SPDX-License-Identifier:     BSD-3-Clause
> > + */
> > +
> > +/**
> > + * @file
> > + *
> > + * ODP API and Implementation information
> > + */
> > +
> > +#include <odp/api/version.h>
> > +#include <odp/version.h>
> > +
> > +/** @internal Version string expand */
> > +#define ODP_VERSION_STR_EXPAND(x)  #x
> > +
> > +/** @internal Version to string */
> > +#define ODP_VERSION_TO_STR(x)      ODP_VERSION_STR_EXPAND(x)
> > +
> > +/** @internal API version string */
> > +#define ODP_VERSION_API_STR \
> > +ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
> > +ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
> > +ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR)
> > +
> > +const char *odp_version_api_str(void)
> > +{
> > +       return ODP_VERSION_API_STR;
> > +}
> > +
> > +/** @internal Implementation version to string */
> > +#define  ODP_VERSION_IMPL_STR ODP_VERSION_TO_STR(ODP_VERSION_IMPL)
> > +
> > +const char *odp_version_impl_str(void)
> > +{
> > +       return ODP_VERSION_IMPL_STR;
> > +}
> > --
> > 1.8.5.1.163.gd7aced9
> >
> >
> > _______________________________________________
> > lng-odp mailing list
> > lng-odp@lists.linaro.org
> > http://lists.linaro.org/mailman/listinfo/lng-odp
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
diff mbox

Patch

diff --git a/include/odp/api/version.h b/include/odp/api/version.h
index 0889d9c..834835e 100644
--- a/include/odp/api/version.h
+++ b/include/odp/api/version.h
@@ -53,18 +53,6 @@  extern "C" {
  */
 const char *odp_version_api_str(void);
 
-
-/**
- * Returns ODP implementation version string
- *
- * Every implementation of ODP may receive bug fixes independent of the version
- * of the API changing, this function returns that indication string.
- * @note This string is implementation specific.
- * @sa odp_version_api_str()
- *
- * @return null terminated implementation specific version identifier string
-  */
-const char *odp_version_impl_str(void);
 /**
  * @}
  */
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am
index 81245b1..68603c7 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -57,8 +57,7 @@  odpplatinclude_HEADERS = \
 		  $(top_srcdir)/platform/linux-generic/include/odp/plat/queue_types.h \
 		  $(top_srcdir)/platform/linux-generic/include/odp/plat/schedule_types.h \
 		  $(top_srcdir)/platform/linux-generic/include/odp/plat/shared_memory_types.h \
-		  $(top_srcdir)/platform/linux-generic/include/odp/plat/strong_types.h \
-		  $(top_srcdir)/platform/linux-generic/include/odp/plat/version_types.h
+		  $(top_srcdir)/platform/linux-generic/include/odp/plat/strong_types.h
 
 odpapiincludedir= $(includedir)/odp/api
 odpapiinclude_HEADERS = \
@@ -137,7 +136,6 @@  __LIB__libodp_la_SOURCES = \
 			   odp_crypto.c \
 			   odp_event.c \
 			   odp_init.c \
-			   odp_impl.c \
 			   odp_linux.c \
 			   odp_packet.c \
 			   odp_packet_flags.c \
@@ -154,4 +152,5 @@  __LIB__libodp_la_SOURCES = \
 			   odp_ticketlock.c \
 			   odp_time.c \
 			   odp_timer.c \
+			   odp_version.c \
 			   odp_weak.c
diff --git a/platform/linux-generic/include/odp/plat/version_types.h b/platform/linux-generic/include/odp/plat/version_types.h
deleted file mode 100644
index e3327eb..0000000
--- a/platform/linux-generic/include/odp/plat/version_types.h
+++ /dev/null
@@ -1,30 +0,0 @@ 
-/* Copyright (c) 2015, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-#ifndef ODP_VERSION_TYPESH_
-#define ODP_VERSION_TYPESH_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @internal Version string expand */
-#define ODP_VERSION_STR_EXPAND(x)  #x
-
-/** @internal Version to string */
-#define ODP_VERSION_TO_STR(x)      ODP_VERSION_STR_EXPAND(x)
-
-/** @internal API version string */
-#define ODP_VERSION_API_STR \
-ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
-ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
-ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/include/odp/version.h b/platform/linux-generic/include/odp/version.h
index f29320a..0c50826 100644
--- a/platform/linux-generic/include/odp/version.h
+++ b/platform/linux-generic/include/odp/version.h
@@ -17,22 +17,21 @@ 
 extern "C" {
 #endif
 
-#include <odp/plat/version_types.h>
+#include <odp/api/version.h>
 
-/** @ingroup odp_ver_abt_log_dbg
- *  @{
- */
-
-static inline const char *odp_version_api_str(void)
-{
-	return ODP_VERSION_API_STR;
-}
+#define  ODP_VERSION_IMPL 0
 
 /**
- * @}
- */
-
-#include <odp/api/version.h>
+ * Returns ODP implementation version string
+ *
+ * Every implementation of ODP may receive bug fixes independent of the version
+ * of the API changing, this function returns that indication string.
+ * @note This string is implementation specific.
+ * @sa odp_version_api_str()
+ *
+ * @return null terminated implementation specific version identifier string
+  */
+const char *odp_version_impl_str(void);
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/odp_impl.c b/platform/linux-generic/odp_impl.c
deleted file mode 100644
index ca3224d..0000000
--- a/platform/linux-generic/odp_impl.c
+++ /dev/null
@@ -1,35 +0,0 @@ 
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-
-/**
- * @file
- *
- * ODP Implementation information
- */
-
-#ifndef ODP_IMPL_H_
-#define ODP_IMPL_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <odp/version.h>
-
-#define  ODP_VERSION_IMPL 0
-#define  ODP_VERSION_IMPL_STR ODP_VERSION_TO_STR(ODP_VERSION_IMPL)
-
-const char *odp_version_impl_str(void)
-{
-	return ODP_VERSION_IMPL_STR;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/platform/linux-generic/odp_version.c b/platform/linux-generic/odp_version.c
new file mode 100644
index 0000000..032564d
--- /dev/null
+++ b/platform/linux-generic/odp_version.c
@@ -0,0 +1,39 @@ 
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+
+/**
+ * @file
+ *
+ * ODP API and Implementation information
+ */
+
+#include <odp/api/version.h>
+#include <odp/version.h>
+
+/** @internal Version string expand */
+#define ODP_VERSION_STR_EXPAND(x)  #x
+
+/** @internal Version to string */
+#define ODP_VERSION_TO_STR(x)      ODP_VERSION_STR_EXPAND(x)
+
+/** @internal API version string */
+#define ODP_VERSION_API_STR \
+ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
+ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
+ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR)
+
+const char *odp_version_api_str(void)
+{
+	return ODP_VERSION_API_STR;
+}
+
+/** @internal Implementation version to string */
+#define  ODP_VERSION_IMPL_STR ODP_VERSION_TO_STR(ODP_VERSION_IMPL)
+
+const char *odp_version_impl_str(void)
+{
+	return ODP_VERSION_IMPL_STR;
+}