With that caveat that v2 will change the default for --enable-abi-compat to
yes...

On Thu, Sep 8, 2016 at 9:24 AM, Petri Savolainen <[email protected]
> wrote:

> 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 <[email protected]>
>

Reviewed-and-tested-by: Bill Fischofer <[email protected]>


> ---
>  configure.ac                                       | 20 ++++++++-----
>  platform/linux-generic/.gitignore                  |  1 -
>  platform/linux-generic/include/odp/api/atomic.h    |  2 +-
>  platform/linux-generic/include/odp/api/byteorder.h |  2 +-
>  .../linux-generic/include/odp/api/plat/inlines.h   | 16 +++++++++++
>  .../include/odp/api/plat/inlines.h.in              | 33
> ----------------------
>  platform/linux-generic/include/odp/api/std_clib.h  |  2 +-
>  platform/linux-generic/include/odp/api/sync.h      |  2 +-
>  platform/linux-generic/m4/configure.m4             |  3 +-
>  platform/linux-generic/odp_atomic.c                |  2 +-
>  platform/linux-generic/odp_byteorder.c             |  2 +-
>  platform/linux-generic/odp_std_clib.c              |  2 +-
>  platform/linux-generic/odp_sync.c                  |  2 +-
>  13 files changed, 38 insertions(+), 51 deletions(-)
>  delete mode 100644 platform/linux-generic/.gitignore
>  create mode 100644 platform/linux-generic/include/odp/api/plat/inlines.h
>  delete mode 100644 platform/linux-generic/include/odp/api/plat/inlines.
> h.in
>
> diff --git a/configure.ac b/configure.ac
> index 982aff7..583542f 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -176,13 +176,6 @@ AM_CONDITIONAL([test_example], [test x$test_example =
> xyes ])
>  AM_CONDITIONAL([HAVE_DOXYGEN], [test "x${DOXYGEN}" = "xdoxygen"])
>  AM_CONDITIONAL([user_guide], [test "x${user_guides}" = "xyes" ])
>  AM_CONDITIONAL([HAVE_MSCGEN], [test "x${MSCGEN}" = "xmscgen"])
> -if test x$enable_shared != xyes;
> -then
> -       _ODP_INLINES="_ODP_INLINES"
> -else
> -       _ODP_INLINES="_ODP_NO_INLINES"
> -fi
> -AC_SUBST(_ODP_INLINES)
>
>  ############################################################
> ##############
>  # Setup doxygen documentation
> @@ -225,6 +218,19 @@ AC_ARG_ENABLE([debug],
>  ODP_CFLAGS="$ODP_CFLAGS -DODP_DEBUG=$ODP_DEBUG"
>
>  ############################################################
> ##############
> +# Enable/disable ABI compatible build
> +###########################################################
> ###############
> +ODP_ABI_COMPAT=0
> +AC_ARG_ENABLE([abi-compat],
> +    [  --enable-abi-compat     build in ABI specification compatible
> mode],
> +    [if test "x$enableval" = "xyes"; then
> +       ODP_ABI_COMPAT=1
> +     else
> +       ODP_ABI_COMPAT=0
> +    fi])
> +ODP_CFLAGS="$ODP_CFLAGS -DODP_ABI_COMPAT=$ODP_ABI_COMPAT"
> +
> +###########################################################
> ###############
>  # Default warning setup
>  ############################################################
> ##############
>  ODP_CFLAGS="$ODP_CFLAGS -W -Wall -Werror -Wstrict-prototypes
> -Wmissing-prototypes"
> diff --git a/platform/linux-generic/.gitignore b/platform/linux-generic/.
> gitignore
> deleted file mode 100644
> index ec6ca37..0000000
> --- a/platform/linux-generic/.gitignore
> +++ /dev/null
> @@ -1 +0,0 @@
> -include/odp/api/plat/inlines.h
> diff --git a/platform/linux-generic/include/odp/api/atomic.h
> b/platform/linux-generic/include/odp/api/atomic.h
> index c18e68b..66cfef7 100644
> --- a/platform/linux-generic/include/odp/api/atomic.h
> +++ b/platform/linux-generic/include/odp/api/atomic.h
> @@ -25,7 +25,7 @@ extern "C" {
>   */
>
>  #include <odp/api/plat/inlines.h>
> -#ifdef _ODP_INLINES
> +#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 84d1173..37f5636 100644
> --- a/platform/linux-generic/include/odp/api/byteorder.h
> +++ b/platform/linux-generic/include/odp/api/byteorder.h
> @@ -26,7 +26,7 @@ extern "C" {
>   */
>
>  #include <odp/api/plat/inlines.h>
> -#ifdef _ODP_INLINES
> +#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
> b/platform/linux-generic/include/odp/api/plat/inlines.h
> new file mode 100644
> index 0000000..e042bd7
> --- /dev/null
> +++ b/platform/linux-generic/include/odp/api/plat/inlines.h
> @@ -0,0 +1,16 @@
> +/* Copyright (c) 2016, Linaro Limited
> + * All rights reserved.
> + *
> + * SPDX-License-Identifier: BSD-3-Clause
> + */
> +
> +/**
> + * @file
> + *
> + * Macro for static inline functions
> + */
> +#if ODP_ABI_COMPAT == 0
> +#define _STATIC static inline
> +#else
> +#define _STATIC
> +#endif
> diff --git a/platform/linux-generic/include/odp/api/plat/inlines.h.in
> b/platform/linux-generic/include/odp/api/plat/inlines.h.in
> deleted file mode 100644
> index 5d8c0dc..0000000
> --- a/platform/linux-generic/include/odp/api/plat/inlines.h.in
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -/* Copyright (c) 2016, Linaro Limited
> - * All rights reserved.
> - *
> - * SPDX-License-Identifier: BSD-3-Clause
> - */
> -
> -/**
> - * @file
> - *
> - * ODP platform inline functions
> - */
> -
> -#ifndef ODP_PLAT_INLINES_H_
> -#define ODP_PLAT_INLINES_H_
> -
> -#ifdef __cplusplus
> -extern "C" {
> -#endif
> -
> -#define @_ODP_INLINES@
> -
> -#ifdef _ODP_INLINES
> -#define _STATIC static inline
> -#else
> -#define _STATIC
> -#endif
> -
> -#ifdef __cplusplus
> -}
> -#endif
> -
> -
> -#endif /* ODP_PLAT_INLINES_H_ */
> diff --git a/platform/linux-generic/include/odp/api/std_clib.h
> b/platform/linux-generic/include/odp/api/std_clib.h
> index c498f68..7fcd6f3 100644
> --- a/platform/linux-generic/include/odp/api/std_clib.h
> +++ b/platform/linux-generic/include/odp/api/std_clib.h
> @@ -15,7 +15,7 @@ extern "C" {
>  #include <string.h>
>
>  #include <odp/api/plat/inlines.h>
> -#ifdef _ODP_INLINES
> +#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 d2becb9..1423a69 100644
> --- a/platform/linux-generic/include/odp/api/sync.h
> +++ b/platform/linux-generic/include/odp/api/sync.h
> @@ -22,7 +22,7 @@ extern "C" {
>   */
>
>  #include <odp/api/plat/inlines.h>
> -#ifdef _ODP_INLINES
> +#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 6fb05c0..1b1b883 100644
> --- a/platform/linux-generic/m4/configure.m4
> +++ b/platform/linux-generic/m4/configure.m4
> @@ -36,5 +36,4 @@ m4_include([platform/linux-generic/m4/odp_dpdk.m4])
>  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])
> +AC_CONFIG_FILES([platform/linux-generic/Makefile])
> diff --git a/platform/linux-generic/odp_atomic.c
> b/platform/linux-generic/odp_atomic.c
> index e9a3ed0..0e40cda 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 fc87291..a344c53 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 611ba12..24df249 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 f31c389..b7eb503 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
> --
> 2.8.1
>
>

Reply via email to