Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
@ 2015-03-05  0:45 Fabio Porcedda
  2015-03-05  7:02 ` Baruch Siach
  2015-03-05 13:13 ` Samuel Martin
  0 siblings, 2 replies; 11+ messages in thread
From: Fabio Porcedda @ 2015-03-05  0:45 UTC (permalink / raw)
  To: buildroot

The -I<dir> options added to CMAKE_C_FLAGS are passed to the compiler
before the -I<dir> options of the cmake internal headers, so when the
host-xz package was already built, a #include <lzma.h> directive loads
the host-xz header instead of the cmake internal one.

Because we don't want to use any header avaiable in -I$(HOST_DIR)/usr/include,
just get rid of the -I<dir> options in the HOST_CFLAGS.

Fix build failure:
.../output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_buffer_decoder.c:17:1: error: conflicting types for ?lzma_block_buffer_decode?
 lzma_block_buffer_decode(lzma_block *block, lzma_allocator *allocator,
 ^
In file included from /home/tetsuya/buildroot/br2/output/host/usr/include/lzma.h:296:0,
                 from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/common.h:34,
                 from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_decoder.h:16,
                 from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_buffer_decoder.c:13:
/home/tetsuya/buildroot/br2/output/host/usr/include/lzma/block.h:577:27: note: previous declaration of ?lzma_block_buffer_decode? was here
 extern LZMA_API(lzma_ret) lzma_block_buffer_decode(
                           ^
Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:261: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/common/block_buffer_decoder.c.o' failed
make[3]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/common/block_buffer_decoder.c.o] Error 1

Fixes:
http://autobuild.buildroot.org/results/4edf6e169dc4a00d8a8bd16a86eba2316cbbd9e5
http://autobuild.buildroot.org/results/a9ff38b22a36a2f8427d33085d3263a8cbfbd746
http://autobuild.buildroot.org/results/ecaa0227249207b5450519832a193c1585ac8177

Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
---

Notes:
    v2:
     - Instead of tring to use the system lzma library when avaiable, just
       always use the internal one.

 package/cmake/cmake.mk | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk
index 8c64b58..cadd1fd 100644
--- a/package/cmake/cmake.mk
+++ b/package/cmake/cmake.mk
@@ -12,13 +12,18 @@ CMAKE_LICENSE_FILES = Copyright.txt
 
 HOST_CMAKE_DEPENDENCIES = host-pkgconf
 
+# Get rid of -I* options to prevent that a header avaiable in
+# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
+# headers of the xz package
+HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)
+
 define HOST_CMAKE_CONFIGURE_CMDS
 	(cd $(@D); \
 		LDFLAGS="$(HOST_LDFLAGS)" \
-		CFLAGS="$(HOST_CFLAGS)" \
+		CFLAGS="$(HOST_CMAKE_CFLAGS)" \
 		./bootstrap --prefix=$(HOST_DIR)/usr \
 			--parallel=$(PARALLEL_JOBS) -- \
-			-DCMAKE_C_FLAGS="$(HOST_CFLAGS)" \
+			-DCMAKE_C_FLAGS="$(HOST_CMAKE_CFLAGS)" \
 			-DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" \
 			-DCMAKE_EXE_LINKER_FLAGS="$(HOST_LDFLAGS)" \
 			-DBUILD_CursesDialog=OFF \
-- 
2.3.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-05  0:45 [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include Fabio Porcedda
@ 2015-03-05  7:02 ` Baruch Siach
  2015-03-05  7:23   ` Fabio Porcedda
  2015-03-05 11:31   ` Thomas Petazzoni
  2015-03-05 13:13 ` Samuel Martin
  1 sibling, 2 replies; 11+ messages in thread
From: Baruch Siach @ 2015-03-05  7:02 UTC (permalink / raw)
  To: buildroot

Hi Fabio,

On Thu, Mar 05, 2015 at 01:45:33AM +0100, Fabio Porcedda wrote:
> +# Get rid of -I* options to prevent that a header avaiable in
> +# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
> +# headers of the xz package
> +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)

How about (untested):

	HOST_CMAKE_CFLAGS = $(filter-out -I%,$(HOST_CFLAGS))

baruch

-- 
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-05  7:02 ` Baruch Siach
@ 2015-03-05  7:23   ` Fabio Porcedda
  2015-03-05 11:31   ` Thomas Petazzoni
  1 sibling, 0 replies; 11+ messages in thread
From: Fabio Porcedda @ 2015-03-05  7:23 UTC (permalink / raw)
  To: buildroot

On Thu, Mar 5, 2015 at 8:02 AM, Baruch Siach <baruch@tkos.co.il> wrote:
> Hi Fabio,
>
> On Thu, Mar 05, 2015 at 01:45:33AM +0100, Fabio Porcedda wrote:
>> +# Get rid of -I* options to prevent that a header avaiable in
>> +# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
>> +# headers of the xz package
>> +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)
>
> How about (untested):
>
>         HOST_CMAKE_CFLAGS = $(filter-out -I%,$(HOST_CFLAGS))

Right, i forgot about te filter-out function, i will use that.

Thanks
-- 
Fabio Porcedda

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-05  7:02 ` Baruch Siach
  2015-03-05  7:23   ` Fabio Porcedda
@ 2015-03-05 11:31   ` Thomas Petazzoni
  2015-03-05 11:52     ` Baruch Siach
  1 sibling, 1 reply; 11+ messages in thread
From: Thomas Petazzoni @ 2015-03-05 11:31 UTC (permalink / raw)
  To: buildroot

Dear Baruch Siach,

On Thu, 5 Mar 2015 09:02:55 +0200, Baruch Siach wrote:

> On Thu, Mar 05, 2015 at 01:45:33AM +0100, Fabio Porcedda wrote:
> > +# Get rid of -I* options to prevent that a header avaiable in
> > +# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
> > +# headers of the xz package
> > +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)
> 
> How about (untested):
> 
> 	HOST_CMAKE_CFLAGS = $(filter-out -I%,$(HOST_CFLAGS))

It unfortunately works only if the form:

	-I/foo/bar

is used. If you use:

	-I /foo/bar

which is valid for gcc, then filter-out will filter the -I but
not /foo/bar.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-05 11:31   ` Thomas Petazzoni
@ 2015-03-05 11:52     ` Baruch Siach
  2015-03-05 13:11       ` Samuel Martin
  2015-03-06  4:22       ` Fabio Porcedda
  0 siblings, 2 replies; 11+ messages in thread
From: Baruch Siach @ 2015-03-05 11:52 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On Thu, Mar 05, 2015 at 12:31:48PM +0100, Thomas Petazzoni wrote:
> On Thu, 5 Mar 2015 09:02:55 +0200, Baruch Siach wrote:
> > On Thu, Mar 05, 2015 at 01:45:33AM +0100, Fabio Porcedda wrote:
> > > +# Get rid of -I* options to prevent that a header avaiable in
> > > +# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
> > > +# headers of the xz package
> > > +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)
> > 
> > How about (untested):
> > 
> > 	HOST_CMAKE_CFLAGS = $(filter-out -I%,$(HOST_CFLAGS))
> 
> It unfortunately works only if the form:
> 
> 	-I/foo/bar
> 
> is used. If you use:
> 
> 	-I /foo/bar
> 
> which is valid for gcc, then filter-out will filter the -I but
> not /foo/bar.

Right. But the original sed expression doesn't work either. This one seems to 
work:

	s/[[:space:]]-I[[:space:]]*[^\ ]*//

baruch

-- 
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-05 11:52     ` Baruch Siach
@ 2015-03-05 13:11       ` Samuel Martin
  2015-03-06  4:22       ` Fabio Porcedda
  1 sibling, 0 replies; 11+ messages in thread
From: Samuel Martin @ 2015-03-05 13:11 UTC (permalink / raw)
  To: buildroot

On Thu, Mar 5, 2015 at 12:52 PM, Baruch Siach <baruch@tkos.co.il> wrote:
> Hi Thomas,
>
> On Thu, Mar 05, 2015 at 12:31:48PM +0100, Thomas Petazzoni wrote:
>> On Thu, 5 Mar 2015 09:02:55 +0200, Baruch Siach wrote:
>> > On Thu, Mar 05, 2015 at 01:45:33AM +0100, Fabio Porcedda wrote:
>> > > +# Get rid of -I* options to prevent that a header avaiable in
>> > > +# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
>> > > +# headers of the xz package
>> > > +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)
>> >
>> > How about (untested):
>> >
>> >     HOST_CMAKE_CFLAGS = $(filter-out -I%,$(HOST_CFLAGS))
>>
>> It unfortunately works only if the form:
>>
>>       -I/foo/bar
>>
>> is used. If you use:
>>
>>       -I /foo/bar
>>
>> which is valid for gcc, then filter-out will filter the -I but
>> not /foo/bar.
>
> Right. But the original sed expression doesn't work either. This one seems to
> work:
>
>         s/[[:space:]]-I[[:space:]]*[^\ ]*//

could also be something like that:

HOST_CMAKE_CFLAGS=$(filter-out -I$(HOST_DIR)/usr/include,$(subst -I
,-I,$(HOST_CFLAGS)))

Regards,

-- 
Samuel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-05  0:45 [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include Fabio Porcedda
  2015-03-05  7:02 ` Baruch Siach
@ 2015-03-05 13:13 ` Samuel Martin
  2015-03-05 13:19   ` Fabio Porcedda
  1 sibling, 1 reply; 11+ messages in thread
From: Samuel Martin @ 2015-03-05 13:13 UTC (permalink / raw)
  To: buildroot

Hi Fabio,

On Thu, Mar 5, 2015 at 1:45 AM, Fabio Porcedda <fabio.porcedda@gmail.com> wrote:
> The -I<dir> options added to CMAKE_C_FLAGS are passed to the compiler
> before the -I<dir> options of the cmake internal headers, so when the
> host-xz package was already built, a #include <lzma.h> directive loads
> the host-xz header instead of the cmake internal one.
>
> Because we don't want to use any header avaiable in -I$(HOST_DIR)/usr/include,
> just get rid of the -I<dir> options in the HOST_CFLAGS.
>
> Fix build failure:
> .../output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_buffer_decoder.c:17:1: error: conflicting types for 'lzma_block_buffer_decode'
>  lzma_block_buffer_decode(lzma_block *block, lzma_allocator *allocator,
>  ^
> In file included from /home/tetsuya/buildroot/br2/output/host/usr/include/lzma.h:296:0,
>                  from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/common.h:34,
>                  from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_decoder.h:16,
>                  from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_buffer_decoder.c:13:
> /home/tetsuya/buildroot/br2/output/host/usr/include/lzma/block.h:577:27: note: previous declaration of 'lzma_block_buffer_decode' was here
>  extern LZMA_API(lzma_ret) lzma_block_buffer_decode(
>                            ^
> Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:261: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/common/block_buffer_decoder.c.o' failed
> make[3]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/common/block_buffer_decoder.c.o] Error 1
>
> Fixes:
> http://autobuild.buildroot.org/results/4edf6e169dc4a00d8a8bd16a86eba2316cbbd9e5
> http://autobuild.buildroot.org/results/a9ff38b22a36a2f8427d33085d3263a8cbfbd746
> http://autobuild.buildroot.org/results/ecaa0227249207b5450519832a193c1585ac8177
>
> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
> ---
>
> Notes:
>     v2:
>      - Instead of tring to use the system lzma library when avaiable, just
>        always use the internal one.
>
>  package/cmake/cmake.mk | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk
> index 8c64b58..cadd1fd 100644
> --- a/package/cmake/cmake.mk
> +++ b/package/cmake/cmake.mk
> @@ -12,13 +12,18 @@ CMAKE_LICENSE_FILES = Copyright.txt
>
>  HOST_CMAKE_DEPENDENCIES = host-pkgconf
>
> +# Get rid of -I* options to prevent that a header avaiable in
> +# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
> +# headers of the xz package
> +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)
> +
>  define HOST_CMAKE_CONFIGURE_CMDS
>         (cd $(@D); \
>                 LDFLAGS="$(HOST_LDFLAGS)" \
> -               CFLAGS="$(HOST_CFLAGS)" \
> +               CFLAGS="$(HOST_CMAKE_CFLAGS)" \
>                 ./bootstrap --prefix=$(HOST_DIR)/usr \
>                         --parallel=$(PARALLEL_JOBS) -- \
> -                       -DCMAKE_C_FLAGS="$(HOST_CFLAGS)" \
> +                       -DCMAKE_C_FLAGS="$(HOST_CMAKE_CFLAGS)" \
>                         -DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" \

C++ flags does not need the same treatment?

>                         -DCMAKE_EXE_LINKER_FLAGS="$(HOST_LDFLAGS)" \
>                         -DBUILD_CursesDialog=OFF \
> --
> 2.3.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

Regards,

-- 
Samuel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-05 13:13 ` Samuel Martin
@ 2015-03-05 13:19   ` Fabio Porcedda
  2015-03-05 13:47     ` Samuel Martin
  0 siblings, 1 reply; 11+ messages in thread
From: Fabio Porcedda @ 2015-03-05 13:19 UTC (permalink / raw)
  To: buildroot

On Thu, Mar 5, 2015 at 2:13 PM, Samuel Martin <s.martin49@gmail.com> wrote:
> Hi Fabio,
>
> On Thu, Mar 5, 2015 at 1:45 AM, Fabio Porcedda <fabio.porcedda@gmail.com> wrote:
>> The -I<dir> options added to CMAKE_C_FLAGS are passed to the compiler
>> before the -I<dir> options of the cmake internal headers, so when the
>> host-xz package was already built, a #include <lzma.h> directive loads
>> the host-xz header instead of the cmake internal one.
>>
>> Because we don't want to use any header avaiable in -I$(HOST_DIR)/usr/include,
>> just get rid of the -I<dir> options in the HOST_CFLAGS.
>>
>> Fix build failure:
>> .../output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_buffer_decoder.c:17:1: error: conflicting types for 'lzma_block_buffer_decode'
>>  lzma_block_buffer_decode(lzma_block *block, lzma_allocator *allocator,
>>  ^
>> In file included from /home/tetsuya/buildroot/br2/output/host/usr/include/lzma.h:296:0,
>>                  from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/common.h:34,
>>                  from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_decoder.h:16,
>>                  from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_buffer_decoder.c:13:
>> /home/tetsuya/buildroot/br2/output/host/usr/include/lzma/block.h:577:27: note: previous declaration of 'lzma_block_buffer_decode' was here
>>  extern LZMA_API(lzma_ret) lzma_block_buffer_decode(
>>                            ^
>> Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:261: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/common/block_buffer_decoder.c.o' failed
>> make[3]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/common/block_buffer_decoder.c.o] Error 1
>>
>> Fixes:
>> http://autobuild.buildroot.org/results/4edf6e169dc4a00d8a8bd16a86eba2316cbbd9e5
>> http://autobuild.buildroot.org/results/a9ff38b22a36a2f8427d33085d3263a8cbfbd746
>> http://autobuild.buildroot.org/results/ecaa0227249207b5450519832a193c1585ac8177
>>
>> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
>> ---
>>
>> Notes:
>>     v2:
>>      - Instead of tring to use the system lzma library when avaiable, just
>>        always use the internal one.
>>
>>  package/cmake/cmake.mk | 9 +++++++--
>>  1 file changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk
>> index 8c64b58..cadd1fd 100644
>> --- a/package/cmake/cmake.mk
>> +++ b/package/cmake/cmake.mk
>> @@ -12,13 +12,18 @@ CMAKE_LICENSE_FILES = Copyright.txt
>>
>>  HOST_CMAKE_DEPENDENCIES = host-pkgconf
>>
>> +# Get rid of -I* options to prevent that a header avaiable in
>> +# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
>> +# headers of the xz package
>> +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)
>> +
>>  define HOST_CMAKE_CONFIGURE_CMDS
>>         (cd $(@D); \
>>                 LDFLAGS="$(HOST_LDFLAGS)" \
>> -               CFLAGS="$(HOST_CFLAGS)" \
>> +               CFLAGS="$(HOST_CMAKE_CFLAGS)" \
>>                 ./bootstrap --prefix=$(HOST_DIR)/usr \
>>                         --parallel=$(PARALLEL_JOBS) -- \
>> -                       -DCMAKE_C_FLAGS="$(HOST_CFLAGS)" \
>> +                       -DCMAKE_C_FLAGS="$(HOST_CMAKE_CFLAGS)" \
>>                         -DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" \
>
> C++ flags does not need the same treatment?

To fix the host-xz related build failure it's not needed.
Maybe we can do the same thing on CXX_FLAGS to prevent problems with
C++ dependency and also for conformance.

I don't know if cmake use any c++ library but doing the same thing on
the CXX_FLAGS doesn't harm.

>>                         -DCMAKE_EXE_LINKER_FLAGS="$(HOST_LDFLAGS)" \
>>                         -DBUILD_CursesDialog=OFF \
>> --
>> 2.3.1
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
> Regards,
>
> --
> Samuel



-- 
Fabio Porcedda

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-05 13:19   ` Fabio Porcedda
@ 2015-03-05 13:47     ` Samuel Martin
  0 siblings, 0 replies; 11+ messages in thread
From: Samuel Martin @ 2015-03-05 13:47 UTC (permalink / raw)
  To: buildroot

On Thu, Mar 5, 2015 at 2:19 PM, Fabio Porcedda <fabio.porcedda@gmail.com> wrote:
> On Thu, Mar 5, 2015 at 2:13 PM, Samuel Martin <s.martin49@gmail.com> wrote:
>> Hi Fabio,
>>
>> On Thu, Mar 5, 2015 at 1:45 AM, Fabio Porcedda <fabio.porcedda@gmail.com> wrote:
>>> The -I<dir> options added to CMAKE_C_FLAGS are passed to the compiler
>>> before the -I<dir> options of the cmake internal headers, so when the
>>> host-xz package was already built, a #include <lzma.h> directive loads
>>> the host-xz header instead of the cmake internal one.
>>>
>>> Because we don't want to use any header avaiable in -I$(HOST_DIR)/usr/include,
>>> just get rid of the -I<dir> options in the HOST_CFLAGS.
>>>
>>> Fix build failure:
>>> .../output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_buffer_decoder.c:17:1: error: conflicting types for 'lzma_block_buffer_decode'
>>>  lzma_block_buffer_decode(lzma_block *block, lzma_allocator *allocator,
>>>  ^
>>> In file included from /home/tetsuya/buildroot/br2/output/host/usr/include/lzma.h:296:0,
>>>                  from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/common.h:34,
>>>                  from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_decoder.h:16,
>>>                  from /home/tetsuya/buildroot/br2/output/build/host-cmake-3.1.3/Utilities/cmliblzma/liblzma/common/block_buffer_decoder.c:13:
>>> /home/tetsuya/buildroot/br2/output/host/usr/include/lzma/block.h:577:27: note: previous declaration of 'lzma_block_buffer_decode' was here
>>>  extern LZMA_API(lzma_ret) lzma_block_buffer_decode(
>>>                            ^
>>> Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/build.make:261: recipe for target 'Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/common/block_buffer_decoder.c.o' failed
>>> make[3]: *** [Utilities/cmliblzma/CMakeFiles/cmliblzma.dir/liblzma/common/block_buffer_decoder.c.o] Error 1
>>>
>>> Fixes:
>>> http://autobuild.buildroot.org/results/4edf6e169dc4a00d8a8bd16a86eba2316cbbd9e5
>>> http://autobuild.buildroot.org/results/a9ff38b22a36a2f8427d33085d3263a8cbfbd746
>>> http://autobuild.buildroot.org/results/ecaa0227249207b5450519832a193c1585ac8177
>>>
>>> Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
>>> ---
>>>
>>> Notes:
>>>     v2:
>>>      - Instead of tring to use the system lzma library when avaiable, just
>>>        always use the internal one.
>>>
>>>  package/cmake/cmake.mk | 9 +++++++--
>>>  1 file changed, 7 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk
>>> index 8c64b58..cadd1fd 100644
>>> --- a/package/cmake/cmake.mk
>>> +++ b/package/cmake/cmake.mk
>>> @@ -12,13 +12,18 @@ CMAKE_LICENSE_FILES = Copyright.txt
>>>
>>>  HOST_CMAKE_DEPENDENCIES = host-pkgconf
>>>
>>> +# Get rid of -I* options to prevent that a header avaiable in
>>> +# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
>>> +# headers of the xz package
>>> +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)
>>> +
>>>  define HOST_CMAKE_CONFIGURE_CMDS
>>>         (cd $(@D); \
>>>                 LDFLAGS="$(HOST_LDFLAGS)" \
>>> -               CFLAGS="$(HOST_CFLAGS)" \
>>> +               CFLAGS="$(HOST_CMAKE_CFLAGS)" \
>>>                 ./bootstrap --prefix=$(HOST_DIR)/usr \
>>>                         --parallel=$(PARALLEL_JOBS) -- \
>>> -                       -DCMAKE_C_FLAGS="$(HOST_CFLAGS)" \
>>> +                       -DCMAKE_C_FLAGS="$(HOST_CMAKE_CFLAGS)" \
>>>                         -DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" \
>>
>> C++ flags does not need the same treatment?
>
> To fix the host-xz related build failure it's not needed.
> Maybe we can do the same thing on CXX_FLAGS to prevent problems with
> C++ dependency and also for conformance.
>
> I don't know if cmake use any c++ library but doing the same thing on
> the CXX_FLAGS doesn't harm.

CMake is written in C++, but indeed fixing the CFLAGS seems enough to
avoid this header inclusion failure.

-- 
Samuel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-05 11:52     ` Baruch Siach
  2015-03-05 13:11       ` Samuel Martin
@ 2015-03-06  4:22       ` Fabio Porcedda
  2015-03-07  8:30         ` Fabio Porcedda
  1 sibling, 1 reply; 11+ messages in thread
From: Fabio Porcedda @ 2015-03-06  4:22 UTC (permalink / raw)
  To: buildroot

On Thu, Mar 5, 2015 at 12:52 PM, Baruch Siach <baruch@tkos.co.il> wrote:
> Hi Thomas,
>
> On Thu, Mar 05, 2015 at 12:31:48PM +0100, Thomas Petazzoni wrote:
>> On Thu, 5 Mar 2015 09:02:55 +0200, Baruch Siach wrote:
>> > On Thu, Mar 05, 2015 at 01:45:33AM +0100, Fabio Porcedda wrote:
>> > > +# Get rid of -I* options to prevent that a header avaiable in
>> > > +# $(HOST_DIR)/usr/include is used instead of a cmake one, e.g. lzma*
>> > > +# headers of the xz package
>> > > +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed s/-I[^\ ]*//)
>> >
>> > How about (untested):
>> >
>> >     HOST_CMAKE_CFLAGS = $(filter-out -I%,$(HOST_CFLAGS))
>>
>> It unfortunately works only if the form:
>>
>>       -I/foo/bar
>>
>> is used. If you use:
>>
>>       -I /foo/bar
>>
>> which is valid for gcc, then filter-out will filter the -I but
>> not /foo/bar.
>
> Right. But the original sed expression doesn't work either. This one seems to
> work:
>
>         s/[[:space:]]-I[[:space:]]*[^\ ]*//

considering that the -I can be at the start of string:

sed -r "s/(^|[[:space:]]+)-I[[:space:]]*[^[:space:]]*//"

I hope using -r is not a problem because i don't like very much the
version without it:

sed "s/\(^\|[[:space:]]\+\)-I[[:space:]]*[^[:space:]]*//"

Thanks
-- 
Fabio Porcedda

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include
  2015-03-06  4:22       ` Fabio Porcedda
@ 2015-03-07  8:30         ` Fabio Porcedda
  0 siblings, 0 replies; 11+ messages in thread
From: Fabio Porcedda @ 2015-03-07  8:30 UTC (permalink / raw)
  To: buildroot

I've sent an updated version:
http://patchwork.ozlabs.org/patch/447553/

BR
-- 
Fabio Porcedda

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-03-07  8:30 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-05  0:45 [Buildroot] [PATCH v2] cmake: don't use any header available in $(HOST_DIR)/usr/include Fabio Porcedda
2015-03-05  7:02 ` Baruch Siach
2015-03-05  7:23   ` Fabio Porcedda
2015-03-05 11:31   ` Thomas Petazzoni
2015-03-05 11:52     ` Baruch Siach
2015-03-05 13:11       ` Samuel Martin
2015-03-06  4:22       ` Fabio Porcedda
2015-03-07  8:30         ` Fabio Porcedda
2015-03-05 13:13 ` Samuel Martin
2015-03-05 13:19   ` Fabio Porcedda
2015-03-05 13:47     ` Samuel Martin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox