diff mbox series

[1/1] linux/linux.mk: Use '-isystem' instead of '-I' in HOST_CFLAGS

Message ID 20180830095748.30297-1-david.degrave@mind.be
State Changes Requested
Headers show
Series [1/1] linux/linux.mk: Use '-isystem' instead of '-I' in HOST_CFLAGS | expand

Commit Message

David De Grave (Essensium/Mind) Aug. 30, 2018, 9:57 a.m. UTC
Since the last update of the DTC package, linux build breaks at some point
with the following error:

    In file included from {output}/host/include/libfdt.h:54:0,
                     from scripts/dtc/libfdt/fdt.c:54:
    {output}/host/include/libfdt_env.h:82:24: error: redefinition of \
    ‘fdt16_to_cpu’
     static inline uint16_t fdt16_to_cpu(fdt16_t x)
                            ^~~~~~~~~~~~
    In file included from scripts/dtc/libfdt/fdt.c:51:0:
    scripts/dtc/libfdt/libfdt_env.h:81:24: note: previous definition of \
    ‘fdt16_to_cpu’ was here

This is because the HOST_CFLAGS is added before Linux's makefile add it's
own local ones (-Iscripts/dtc/libfdt), resulting in a mix of local and host
headers beeing used.

So, to fix this the '-I' is substituted by '-isystem' to let it search for
the headers in the right location first.

Signed-off-by: David De Grave (Essensium/Mind) <david.degrave@mind.be>
---
 linux/linux.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Thomas Petazzoni Sept. 1, 2018, 7:55 a.m. UTC | #1
Hello,

On Thu, 30 Aug 2018 11:57:48 +0200, David De Grave (Essensium/Mind)
wrote:
> Since the last update of the DTC package, linux build breaks at some point
> with the following error:
> 
>     In file included from {output}/host/include/libfdt.h:54:0,
>                      from scripts/dtc/libfdt/fdt.c:54:
>     {output}/host/include/libfdt_env.h:82:24: error: redefinition of \
>     ‘fdt16_to_cpu’
>      static inline uint16_t fdt16_to_cpu(fdt16_t x)
>                             ^~~~~~~~~~~~
>     In file included from scripts/dtc/libfdt/fdt.c:51:0:
>     scripts/dtc/libfdt/libfdt_env.h:81:24: note: previous definition of \
>     ‘fdt16_to_cpu’ was here
> 
> This is because the HOST_CFLAGS is added before Linux's makefile add it's
> own local ones (-Iscripts/dtc/libfdt), resulting in a mix of local and host
> headers beeing used.
> 
> So, to fix this the '-I' is substituted by '-isystem' to let it search for
> the headers in the right location first.
> 
> Signed-off-by: David De Grave (Essensium/Mind) <david.degrave@mind.be>
> ---
>  linux/linux.mk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

I suspect this one is superseded by your new patch series
http://patchwork.ozlabs.org/project/buildroot/list/?series=63524, so
I've marked this patch as Changes Requested.

Note that
http://patchwork.ozlabs.org/project/buildroot/list/?series=63524
doesn't contain PATCH 2/3 due to a patchwork issue when associating
patches to series, but PATCH 2/3 has been recorded by patchwork.

Best regards,

Thomas
David De Grave (Essensium/Mind) Sept. 1, 2018, 7:02 p.m. UTC | #2
Hi Thomas,

Indeed the series can replace that one... Thanks.

Regards,
David.


On Sat, Sep 1, 2018 at 9:55 AM, Thomas Petazzoni <
thomas.petazzoni@bootlin.com> wrote:

> Hello,
>
> On Thu, 30 Aug 2018 11:57:48 +0200, David De Grave (Essensium/Mind)
> wrote:
> > Since the last update of the DTC package, linux build breaks at some
> point
> > with the following error:
> >
> >     In file included from {output}/host/include/libfdt.h:54:0,
> >                      from scripts/dtc/libfdt/fdt.c:54:
> >     {output}/host/include/libfdt_env.h:82:24: error: redefinition of \
> >     ‘fdt16_to_cpu’
> >      static inline uint16_t fdt16_to_cpu(fdt16_t x)
> >                             ^~~~~~~~~~~~
> >     In file included from scripts/dtc/libfdt/fdt.c:51:0:
> >     scripts/dtc/libfdt/libfdt_env.h:81:24: note: previous definition of
> \
> >     ‘fdt16_to_cpu’ was here
> >
> > This is because the HOST_CFLAGS is added before Linux's makefile add it's
> > own local ones (-Iscripts/dtc/libfdt), resulting in a mix of local and
> host
> > headers beeing used.
> >
> > So, to fix this the '-I' is substituted by '-isystem' to let it search
> for
> > the headers in the right location first.
> >
> > Signed-off-by: David De Grave (Essensium/Mind) <david.degrave@mind.be>
> > ---
> >  linux/linux.mk | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
>
> I suspect this one is superseded by your new patch series
> http://patchwork.ozlabs.org/project/buildroot/list/?series=63524, so
> I've marked this patch as Changes Requested.
>
> Note that
> http://patchwork.ozlabs.org/project/buildroot/list/?series=63524
> doesn't contain PATCH 2/3 due to a patchwork issue when associating
> patches to series, but PATCH 2/3 has been recorded by patchwork.
>
> Best regards,
>
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
Arnout Vandecappelle Sept. 3, 2018, 10:30 p.m. UTC | #3
On 01/09/2018 09:55, Thomas Petazzoni wrote:
> Hello,
> 
> On Thu, 30 Aug 2018 11:57:48 +0200, David De Grave (Essensium/Mind)
> wrote:
>> Since the last update of the DTC package, linux build breaks at some point
>> with the following error:
>>
>>     In file included from {output}/host/include/libfdt.h:54:0,
>>                      from scripts/dtc/libfdt/fdt.c:54:
>>     {output}/host/include/libfdt_env.h:82:24: error: redefinition of \
>>     ‘fdt16_to_cpu’
>>      static inline uint16_t fdt16_to_cpu(fdt16_t x)
>>                             ^~~~~~~~~~~~
>>     In file included from scripts/dtc/libfdt/fdt.c:51:0:
>>     scripts/dtc/libfdt/libfdt_env.h:81:24: note: previous definition of \
>>     ‘fdt16_to_cpu’ was here
>>
>> This is because the HOST_CFLAGS is added before Linux's makefile add it's
>> own local ones (-Iscripts/dtc/libfdt), resulting in a mix of local and host
>> headers beeing used.
>>
>> So, to fix this the '-I' is substituted by '-isystem' to let it search for
>> the headers in the right location first.
>>
>> Signed-off-by: David De Grave (Essensium/Mind) <david.degrave@mind.be>
>> ---
>>  linux/linux.mk | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> I suspect this one is superseded by your new patch series
> http://patchwork.ozlabs.org/project/buildroot/list/?series=63524, so
> I've marked this patch as Changes Requested.

 Actually, the idea was to apply this patch on master because it fixes a bug,
and the series on next because it is more invasive.

 It turns out, however, that the problem only occurs for the beaglebone kernel
on github, because that one builds its fdtoverlay host tool. "Normal" kernels
don't build libfdt at all for the host, so the error reported doesn't occur.

> 
> Note that
> http://patchwork.ozlabs.org/project/buildroot/list/?series=63524
> doesn't contain PATCH 2/3 due to a patchwork issue when associating
> patches to series, but PATCH 2/3 has been recorded by patchwork.

 Patch 2/3 actually doesn't apply, it's a revert of this patch... So I've marked
that one as N/A.

 Regards,
 Arnout

> 
> Best regards,
> 
> Thomas
>
diff mbox series

Patch

diff --git a/linux/linux.mk b/linux/linux.mk
index 675e7906a8..a31617ca22 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -115,7 +115,7 @@  LINUX_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL)
 endif
 
 LINUX_MAKE_FLAGS = \
-	HOSTCC="$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS)" \
+	HOSTCC="$(HOSTCC) $(patsubst -I%,-isystem %,$(HOST_CFLAGS)) $(HOST_LDFLAGS)" \
 	ARCH=$(KERNEL_ARCH) \
 	INSTALL_MOD_PATH=$(TARGET_DIR) \
 	CROSS_COMPILE="$(TARGET_CROSS)" \