Anders comments have not been addressed on the list, are they resloved ?

On 13 October 2016 at 11:40, Maxim Uvarov <maxim.uva...@linaro.org> wrote:

> Merged,
>
> we also need this option to be tested in CI.
>
> Maxim.
>
>
> On 10/12/16 18:21, Bill Fischofer wrote:
>
>> This version resolves the issue with running from an installed copy of
>> ODP.
>>
>> On Thu, Sep 29, 2016 at 6:46 PM, Petri Savolainen <
>> petri.savolai...@nokia.com> 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 <petri.savolai...@nokia.com>
>>>
>>> Reviewed-and-tested-by: Bill Fischofer <bill.fischo...@linaro.org>
>>
>>
>> ---
>>>   configure.ac                                       | 26
>>> ++++++++++++-----
>>>   platform/linux-generic/.gitignore                  |  2 +-
>>>   platform/linux-generic/Makefile.am                 |  2 +-
>>>   platform/linux-generic/include/odp/api/atomic.h    |  4 +--
>>>   platform/linux-generic/include/odp/api/byteorder.h |  4 +--
>>>   .../include/odp/api/plat/inlines.h.in              | 33
>>> ----------------------
>>>   .../include/odp/api/plat/static_inline.h.in        | 32
>>> +++++++++++++++++++++
>>>   platform/linux-generic/include/odp/api/std_clib.h  |  4 +--
>>>   platform/linux-generic/include/odp/api/sync.h      |  4 +--
>>>   platform/linux-generic/m4/configure.m4             |  2 +-
>>>   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 +-
>>>   14 files changed, 66 insertions(+), 55 deletions(-)
>>>   delete mode 100644 platform/linux-generic/include
>>> /odp/api/plat/inlines.
>>> h.in
>>>   create mode 100644 platform/linux-generic/include/odp/api/plat/static_
>>> inline.h.in
>>>
>>> diff --git a/configure.ac b/configure.ac
>>> index 982aff7..f081c51 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,22 @@ AC_ARG_ENABLE([debug],
>>>   ODP_CFLAGS="$ODP_CFLAGS -DODP_DEBUG=$ODP_DEBUG"
>>>
>>>   ############################################################
>>> ##############
>>> +# Enable/disable ABI compatible build
>>> +###########################################################
>>> ###############
>>> +ODP_ABI_COMPAT=1
>>> +abi_compat=yes
>>> +AC_ARG_ENABLE([abi-compat],
>>> +    [  --enable-abi-compat     build all targets in ABI compatible mode
>>> (default=yes)],
>>> +    [if test "x$enableval" = "xyes"; then
>>> +       ODP_ABI_COMPAT=1
>>> +       abi_compat=yes
>>> +     else
>>> +       ODP_ABI_COMPAT=0
>>> +       abi_compat=no
>>> +    fi])
>>> +AC_SUBST(ODP_ABI_COMPAT)
>>> +
>>> +###########################################################
>>> ###############
>>>   # Default warning setup
>>>   ############################################################
>>> ##############
>>>   ODP_CFLAGS="$ODP_CFLAGS -W -Wall -Werror -Wstrict-prototypes
>>> -Wmissing-prototypes"
>>> @@ -307,6 +316,9 @@ AC_MSG_RESULT([
>>>          am_ldflags:             ${AM_LDFLAGS}
>>>          libs:                   ${LIBS}
>>>          defs:                   ${DEFS}
>>> +       static libraries:       ${enable_static}
>>> +       shared libraries:       ${enable_shared}
>>> +       ABI compatible:         ${abi_compat}
>>>          cunit:                  ${cunit_support}
>>>          test_vald:              ${test_vald}
>>>          test_perf:              ${test_perf}
>>> diff --git a/platform/linux-generic/.gitignore
>>> b/platform/linux-generic/.
>>> gitignore
>>> index ec6ca37..909756a 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 900ac08..0ec13d4 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 c18e68b..7886cb4 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 84d1173..ec3d0ee 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/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/plat/static_
>>> inline.h.in b/platform/linux-generic/include/odp/api/plat/static_
>>> inline.h.in
>>> new file mode 100644
>>> index 0000000..acee5f3
>>> --- /dev/null
>>> +++ b/platform/linux-generic/include/odp/api/plat/static_inline.h.in
>>> @@ -0,0 +1,32 @@
>>> +/* Copyright (c) 2016, Linaro Limited
>>> + * All rights reserved.
>>> + *
>>> + * SPDX-License-Identifier: BSD-3-Clause
>>> + */
>>> +
>>> +/**
>>> + * @file
>>> + *
>>> + * Macro for static inline functions
>>> + */
>>> +
>>> +#ifndef ODP_PLAT_STATIC_INLINE_H_
>>> +#define ODP_PLAT_STATIC_INLINE_H_
>>> +
>>> +#ifdef __cplusplus
>>> +extern "C" {
>>> +#endif
>>> +
>>> +#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
>>> diff --git a/platform/linux-generic/include/odp/api/std_clib.h
>>> b/platform/linux-generic/include/odp/api/std_clib.h
>>> index c498f68..fea4725 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 d2becb9..e1afcc7 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 6fb05c0..d3e5528 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 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
>>>
>>>
>>>
>


-- 
Mike Holmes
Program Manager - Linaro Networking Group
Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs
"Work should be fun and collaborative, the rest follows"

Reply via email to