Reviewed-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com>

On 22 June 2017 at 11:58, Maxim Uvarov <maxim.uva...@linaro.org> wrote:
> On 06/22/17 19:54, Brian Brooks wrote:
>> On 06/22 19:44:45, Maxim Uvarov wrote:
>>> On 06/22/17 19:19, Brian Brooks wrote:
>>>> On 06/22 19:06:01, Maxim Uvarov wrote:
>>>>> On 06/22/17 17:17, Brian Brooks wrote:
>>>>>> On 06/22 11:13:57, Maxim Uvarov wrote:
>>>>>>> On 22 June 2017 at 06:24, Brian Brooks <brian.bro...@arm.com> wrote:
>>>>>>>
>>>>>>>> Explicitly add all arch/<arch>/* files to respective _SOURCES
>>>>>>>> variables instead of using @ARCH_DIR@ substitution.
>>>>>>>>
>>>>>>>> This patch fixes the broken build for ARM, PPC, and MIPS
>>>>>>>> introduced by [1] and the similar issue reported while
>>>>>>>> testing [2].
>>>>>>>>
>>>>>>>> From the Autoconf manual [3]:
>>>>>>>>
>>>>>>>>   You can't put a configure substitution (e.g., '@FOO@' or
>>>>>>>>   '$(FOO)' where FOO is defined via AC_SUBST) into a _SOURCES
>>>>>>>>   variable. The reason for this is a bit hard to explain, but
>>>>>>>>   suffice to say that it simply won't work.
>>>>>>>>
>>>>>
>>>>>
>>>>> not clean why $(srcdir) work and $(ARCH_DIR) will not work.
>>>>>
>>>>> I changed this in your patch and it works well:
>>>>>
>>>>> -odpapiinclude_HEADERS += $(srcdir)/arch/x86/odp/api/cpu_arch.h
>>>>> +odpapiinclude_HEADERS += $(srcdir)/arch/$(ARCH_DIR)/odp/api/cpu_arch.h
>>>>
>>>> Tried it on ARM and it breaks. If you read the Autoconf manual (above) it
>>>> explicitly states that you cannot use variable substitution in _SOURCES
>>>> (obviously also _HEADERS). As you point out, this is probably also only
>>>> for user-defined variables (e.g. configure.ac) instead of preset output
>>>> variables (e.g. srcdir).
>>>>
>>>
>>> ok thanks. then only one comment for alphabetical reorder.
>>
>> They are in alphabetical order according to arch: A > M > P > X
>> Do you see something else?
>>
>
> cpu flags before odp_
>
> +__LIB__libodp_linux_la_SOURCES += arch/x86/odp_cpu_arch.c \
> +                                 arch/x86/odp_sysinfo_parse.c \
> +                                 arch/x86/cpu_flags.c
>
>>> I think we can try to add arm-qemu to travis to also capture such bugs.
>>
>> I thought there were ARM machines in LNG CI? Is there a way for users
>> to trigger a CI run over there before submitting a patch?
>>
>
> it's possible to integrate it with github. And it has to do the same
> thing which travis do now. I created ticket to automation team to do it.
> But looks like it's very low priority for then. I can not do it because
> it requires admin rights to Jenkins I think.
>
> Maxim.
>
>
>>> Maxim.
>>>
>>>
>>>>> Maxim.
>>>>>
>>>>>
>>>>>>>> Here be dragons..
>>>>>>>>
>>>>>>>> [1] https://lists.linaro.org/pipermail/lng-odp/2017-April/030324.html
>>>>>>>> [2] https://lists.linaro.org/pipermail/lng-odp/2017-June/031598.html
>>>>>>>> [3] https://www.gnu.org/software/automake/manual/html_node/
>>>>>>>> Conditional-Sources.html
>>>>>>>>
>>>>>>>> Signed-off-by: Brian Brooks <brian.bro...@arm.com>
>>>>>>>> ---
>>>>>>>>  configure.ac                       |  3 +++
>>>>>>>>  platform/linux-generic/Makefile.am | 40 ++++++++++++++++++++++++++++++
>>>>>>>> --------
>>>>>>>>  2 files changed, 35 insertions(+), 8 deletions(-)
>>>>>>>>
>>>>>>>> diff --git a/configure.ac b/configure.ac
>>>>>>>> index 46c7bbd2..45812f66 100644
>>>>>>>> --- a/configure.ac
>>>>>>>> +++ b/configure.ac
>>>>>>>> @@ -225,6 +225,9 @@ 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"])
>>>>>>>>  AM_CONDITIONAL([helper_linux], [test x$helper_linux = xyes ])
>>>>>>>> +AM_CONDITIONAL([ARCH_IS_ARM], [test "x${ARCH_DIR}" = "xarm"])
>>>>>>>> +AM_CONDITIONAL([ARCH_IS_MIPS64], [test "x${ARCH_DIR}" = "xmips64"])
>>>>>>>> +AM_CONDITIONAL([ARCH_IS_POWERPC], [test "x${ARCH_DIR}" = "xpowerpc"])
>>>>>>>>  AM_CONDITIONAL([ARCH_IS_X86], [test "x${ARCH_DIR}" = "xx86"])
>>>>>>>>
>>>>>>>>  ############################################################
>>>>>>>> ##############
>>>>>>>> diff --git a/platform/linux-generic/Makefile.am 
>>>>>>>> b/platform/linux-generic/
>>>>>>>> Makefile.am
>>>>>>>> index 8dcdebd2..385c5304 100644
>>>>>>>> --- a/platform/linux-generic/Makefile.am
>>>>>>>> +++ b/platform/linux-generic/Makefile.am
>>>>>>>> @@ -63,8 +63,20 @@ odpapiinclude_HEADERS = \
>>>>>>>>                   $(srcdir)/include/odp/api/time.h \
>>>>>>>>                   $(srcdir)/include/odp/api/timer.h \
>>>>>>>>                   $(srcdir)/include/odp/api/traffic_mngr.h \
>>>>>>>> -                 $(srcdir)/include/odp/api/version.h \
>>>>>>>> -                 $(srcdir)/arch/@ARCH_DIR@/odp/api/cpu_arch.h
>>>>>>>> +                 $(srcdir)/include/odp/api/version.h
>>>>>>>> +
>>>>>>>> +if ARCH_IS_ARM
>>>>>>>> +odpapiinclude_HEADERS += $(srcdir)/arch/arm/odp/api/cpu_arch.h
>>>>>>>> +endif
>>>>>>>> +if ARCH_IS_MIPS64
>>>>>>>> +odpapiinclude_HEADERS += $(srcdir)/arch/mips64/odp/api/cpu_arch.h
>>>>>>>> +endif
>>>>>>>> +if ARCH_IS_POWERPC
>>>>>>>> +odpapiinclude_HEADERS += $(srcdir)/arch/powerpc/odp/api/cpu_arch.h
>>>>>>>> +endif
>>>>>>>> +if ARCH_IS_X86
>>>>>>>> +odpapiinclude_HEADERS += $(srcdir)/arch/x86/odp/api/cpu_arch.h
>>>>>>>> +endif
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> If - else is better to be here. Something like:
>>>>>>>
>>>>>>> ifeq ($ARCH_IS_ARM), 1)
>>>>>>> ..
>>>>>>>
>>>>>>> else ifeq ($ARCH_IS_MIPS64, 1)
>>>>>>>
>>>>>>> else
>>>>>>>      unsupported
>>>>>>> endif
>>>>>>>
>>>>>>>
>>>>>>> It will be more nice if it would be:
>>>>>>> ifeq ($ARCH, arm)
>>>>>>> ..
>>>>>>> else ifeq ($ARCH, mips)
>>>>>>
>>>>>> Can't do this because ifeq, ifneq, ifdef, and ifndef are Makefile 
>>>>>> conditionals,
>>>>>> not Automake conditionals.
>>>>>>
>>>>>>>  odpapiplatincludedir= $(includedir)/odp/api/plat
>>>>>>>>  odpapiplatinclude_HEADERS = \
>>>>>>>> @@ -217,20 +229,32 @@ __LIB__libodp_linux_la_SOURCES = \
>>>>>>>>                            odp_timer_wheel.c \
>>>>>>>>                            odp_traffic_mngr.c \
>>>>>>>>                            odp_version.c \
>>>>>>>> -                          odp_weak.c \
>>>>>>>> -                          arch/@ARCH_DIR@/odp_cpu_arch.c \
>>>>>>>> -                          arch/@ARCH_DIR@/odp_sysinfo_parse.c
>>>>>>>> -
>>>>>>>> -__LIB__libodp_linux_la_LIBADD = $(ATOMIC_LIBS)
>>>>>>>> +                          odp_weak.c
>>>>>>>>
>>>>>>>> +if ARCH_IS_ARM
>>>>>>>> +__LIB__libodp_linux_la_SOURCES += arch/arm/odp_cpu_arch.c \
>>>>>>>> +                                 arch/arm/odp_sysinfo_parse.c
>>>>>>>> +endif
>>>>>>>> +if ARCH_IS_MIPS64
>>>>>>>> +__LIB__libodp_linux_la_SOURCES += arch/mips64/odp_cpu_arch.c \
>>>>>>>> +                                 arch/mips64/odp_sysinfo_parse.c
>>>>>>>> +endif
>>>>>>>> +if ARCH_IS_POWERPC
>>>>>>>> +__LIB__libodp_linux_la_SOURCES += arch/powerpc/odp_cpu_arch.c \
>>>>>>>> +                                 arch/powerpc/odp_sysinfo_parse.c
>>>>>>>> +endif
>>>>>>>>  if ARCH_IS_X86
>>>>>>>> -__LIB__libodp_linux_la_SOURCES += arch/@ARCH_DIR@/cpu_flags.c
>>>>>>>> +__LIB__libodp_linux_la_SOURCES += arch/x86/odp_cpu_arch.c \
>>>>>>>> +                                 arch/x86/odp_sysinfo_parse.c \
>>>>>>>> +                                 arch/x86/cpu_flags.c
>>>>>>>>
>>>>>>>
>>>>>>> sort this.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>  endif
>>>>>>>>
>>>>>>>>  if HAVE_PCAP
>>>>>>>>  __LIB__libodp_linux_la_SOURCES += pktio/pcap.c
>>>>>>>>  endif
>>>>>>>>
>>>>>>>> +__LIB__libodp_linux_la_LIBADD = $(ATOMIC_LIBS)
>>>>>>>> +
>>>>>>>>  # Create symlink for ABI header files. Application does not need to 
>>>>>>>> use
>>>>>>>> the arch
>>>>>>>>  # specific include path for installed files.
>>>>>>>>  install-data-hook:
>>>>>>>> --
>>>>>>>> 2.13.1
>>>>>>>>
>>>>>>>>
>>>>>
>>>
>

Reply via email to