diff options
author | Petri Savolainen <petri.savolainen@nokia.com> | 2016-09-30 02:46:08 +0300 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2016-10-13 18:36:42 +0300 |
commit | f83b71e6a9c685227615455df1f9e4fefeff19ae (patch) | |
tree | 4d9cbecdb18c3c28c6c258ee9b4a30eb37de38da /platform/linux-generic | |
parent | a8e5a8f6853ddc998430d112c22994928ddb4070 (diff) |
linux-gen: build: de-couple abi compatibility from shared lib
Building ABI compatible or shared library are two different
targets. A shared library may be used also without ABI
compatibility. A new --enable-abi-compat configuration option
is introduced. By default libraries are not built in ABI compat
mode to enable function inlining. There is a noticeable
performance difference when e.g. odp_atomic_xxx calls
are not inlined.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-generic')
-rw-r--r-- | platform/linux-generic/.gitignore | 2 | ||||
-rw-r--r-- | platform/linux-generic/Makefile.am | 2 | ||||
-rw-r--r-- | platform/linux-generic/include/odp/api/atomic.h | 4 | ||||
-rw-r--r-- | platform/linux-generic/include/odp/api/byteorder.h | 4 | ||||
-rw-r--r-- | platform/linux-generic/include/odp/api/plat/static_inline.h.in (renamed from platform/linux-generic/include/odp/api/plat/inlines.h.in) | 19 | ||||
-rw-r--r-- | platform/linux-generic/include/odp/api/std_clib.h | 4 | ||||
-rw-r--r-- | platform/linux-generic/include/odp/api/sync.h | 4 | ||||
-rw-r--r-- | platform/linux-generic/m4/configure.m4 | 2 | ||||
-rw-r--r-- | platform/linux-generic/odp_atomic.c | 2 | ||||
-rw-r--r-- | platform/linux-generic/odp_byteorder.c | 2 | ||||
-rw-r--r-- | platform/linux-generic/odp_std_clib.c | 2 | ||||
-rw-r--r-- | platform/linux-generic/odp_sync.c | 2 |
12 files changed, 24 insertions, 25 deletions
diff --git a/platform/linux-generic/.gitignore b/platform/linux-generic/.gitignore index ec6ca37ed..909756a1f 100644 --- a/platform/linux-generic/.gitignore +++ b/platform/linux-generic/.gitignore @@ -1 +1 @@ -include/odp/api/plat/inlines.h +include/odp/api/plat/static_inline.h diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index 900ac0861..0ec13d402 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -61,7 +61,7 @@ odpapiinclude_HEADERS = \ odpapiplatincludedir= $(includedir)/odp/api/plat odpapiplatinclude_HEADERS = \ - $(builddir)/include/odp/api/plat/inlines.h \ + $(builddir)/include/odp/api/plat/static_inline.h \ $(srcdir)/include/odp/api/plat/atomic_inlines.h \ $(srcdir)/include/odp/api/plat/atomic_types.h \ $(srcdir)/include/odp/api/plat/barrier_types.h \ diff --git a/platform/linux-generic/include/odp/api/atomic.h b/platform/linux-generic/include/odp/api/atomic.h index c18e68bf4..7886cb4ea 100644 --- a/platform/linux-generic/include/odp/api/atomic.h +++ b/platform/linux-generic/include/odp/api/atomic.h @@ -24,8 +24,8 @@ extern "C" { * @{ */ -#include <odp/api/plat/inlines.h> -#ifdef _ODP_INLINES +#include <odp/api/plat/static_inline.h> +#if ODP_ABI_COMPAT == 0 #include <odp/api/plat/atomic_inlines.h> #endif diff --git a/platform/linux-generic/include/odp/api/byteorder.h b/platform/linux-generic/include/odp/api/byteorder.h index 84d1173e8..ec3d0eef7 100644 --- a/platform/linux-generic/include/odp/api/byteorder.h +++ b/platform/linux-generic/include/odp/api/byteorder.h @@ -25,8 +25,8 @@ extern "C" { * @{ */ -#include <odp/api/plat/inlines.h> -#ifdef _ODP_INLINES +#include <odp/api/plat/static_inline.h> +#if ODP_ABI_COMPAT == 0 #include <odp/api/plat/byteorder_inlines.h> #endif diff --git a/platform/linux-generic/include/odp/api/plat/inlines.h.in b/platform/linux-generic/include/odp/api/plat/static_inline.h.in index 5d8c0dc4b..acee5f3c1 100644 --- a/platform/linux-generic/include/odp/api/plat/inlines.h.in +++ b/platform/linux-generic/include/odp/api/plat/static_inline.h.in @@ -7,27 +7,26 @@ /** * @file * - * ODP platform inline functions + * Macro for static inline functions */ -#ifndef ODP_PLAT_INLINES_H_ -#define ODP_PLAT_INLINES_H_ +#ifndef ODP_PLAT_STATIC_INLINE_H_ +#define ODP_PLAT_STATIC_INLINE_H_ #ifdef __cplusplus extern "C" { #endif -#define @_ODP_INLINES@ - -#ifdef _ODP_INLINES -#define _STATIC static inline -#else +#if @ODP_ABI_COMPAT@ +#define ODP_ABI_COMPAT 1 #define _STATIC +#else +#define ODP_ABI_COMPAT 0 +#define _STATIC static inline #endif #ifdef __cplusplus } #endif - -#endif /* ODP_PLAT_INLINES_H_ */ +#endif diff --git a/platform/linux-generic/include/odp/api/std_clib.h b/platform/linux-generic/include/odp/api/std_clib.h index c498f68f5..fea472543 100644 --- a/platform/linux-generic/include/odp/api/std_clib.h +++ b/platform/linux-generic/include/odp/api/std_clib.h @@ -14,8 +14,8 @@ extern "C" { #include <odp/api/spec/std_types.h> #include <string.h> -#include <odp/api/plat/inlines.h> -#ifdef _ODP_INLINES +#include <odp/api/plat/static_inline.h> +#if ODP_ABI_COMPAT == 0 #include <odp/api/plat/std_clib_inlines.h> #endif diff --git a/platform/linux-generic/include/odp/api/sync.h b/platform/linux-generic/include/odp/api/sync.h index d2becb942..e1afcc722 100644 --- a/platform/linux-generic/include/odp/api/sync.h +++ b/platform/linux-generic/include/odp/api/sync.h @@ -21,8 +21,8 @@ extern "C" { * @{ */ -#include <odp/api/plat/inlines.h> -#ifdef _ODP_INLINES +#include <odp/api/plat/static_inline.h> +#if ODP_ABI_COMPAT == 0 #include <odp/api/plat/sync_inlines.h> #endif diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4 index 6fb05c082..d3e5528c1 100644 --- a/platform/linux-generic/m4/configure.m4 +++ b/platform/linux-generic/m4/configure.m4 @@ -37,4 +37,4 @@ m4_include([platform/linux-generic/m4/odp_ipc.m4]) m4_include([platform/linux-generic/m4/odp_schedule.m4]) AC_CONFIG_FILES([platform/linux-generic/Makefile - platform/linux-generic/include/odp/api/plat/inlines.h]) + platform/linux-generic/include/odp/api/plat/static_inline.h]) diff --git a/platform/linux-generic/odp_atomic.c b/platform/linux-generic/odp_atomic.c index e9a3ed0a1..0e40cda51 100644 --- a/platform/linux-generic/odp_atomic.c +++ b/platform/linux-generic/odp_atomic.c @@ -5,7 +5,7 @@ */ #include <odp/api/atomic.h> -#ifndef _ODP_INLINES +#if ODP_ABI_COMPAT == 1 #include <odp/api/plat/atomic_inlines.h> #endif diff --git a/platform/linux-generic/odp_byteorder.c b/platform/linux-generic/odp_byteorder.c index fc87291b0..a344c53f7 100644 --- a/platform/linux-generic/odp_byteorder.c +++ b/platform/linux-generic/odp_byteorder.c @@ -5,6 +5,6 @@ */ #include <odp/api/byteorder.h> -#ifndef _ODP_INLINES +#if ODP_ABI_COMPAT == 1 #include <odp/api/plat/byteorder_inlines.h> #endif diff --git a/platform/linux-generic/odp_std_clib.c b/platform/linux-generic/odp_std_clib.c index 611ba12e8..24df249db 100644 --- a/platform/linux-generic/odp_std_clib.c +++ b/platform/linux-generic/odp_std_clib.c @@ -5,6 +5,6 @@ */ #include <odp/api/std_clib.h> -#ifndef _ODP_INLINES +#if ODP_ABI_COMPAT == 1 #include <odp/api/plat/std_clib_inlines.h> #endif diff --git a/platform/linux-generic/odp_sync.c b/platform/linux-generic/odp_sync.c index f31c38949..b7eb503ca 100644 --- a/platform/linux-generic/odp_sync.c +++ b/platform/linux-generic/odp_sync.c @@ -5,6 +5,6 @@ */ #include <odp/api/sync.h> -#ifndef _ODP_INLINES +#if ODP_ABI_COMPAT == 1 #include <odp/api/plat/sync_inlines.h> #endif |