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