* [Buildroot] [PATCH] gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
@ 2015-06-01 14:37 Max Filippov
2016-01-09 22:08 ` Yann E. MORIN
0 siblings, 1 reply; 6+ messages in thread
From: Max Filippov @ 2015-06-01 14:37 UTC (permalink / raw)
To: buildroot
Currently only TARGET_ABI flags are passed to the final compiler
configure script and only when building for Xtensa. Since libstdc++ is a
normal library it should be built with full TARGET_CFLAGS on all
targets.
Pass TARGET_CFLAGS flags to gcc-final configure script for all targets
in the --enable-cxx-flags parameter.
Suggested-by: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
---
package/gcc/gcc-final/gcc-final.mk | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
index 8d7009b..59c8708 100644
--- a/package/gcc/gcc-final/gcc-final.mk
+++ b/package/gcc/gcc-final/gcc-final.mk
@@ -185,8 +185,6 @@ endef
HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_USR_LIBS
endif
-ifeq ($(BR2_xtensa),y)
-HOST_GCC_FINAL_CONF_OPTS += --enable-cxx-flags="$(TARGET_ABI)"
-endif
+HOST_GCC_FINAL_CONF_OPTS += --enable-cxx-flags="$(TARGET_CFLAGS)"
$(eval $(host-autotools-package))
--
1.8.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
2015-06-01 14:37 [Buildroot] [PATCH] gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags Max Filippov
@ 2016-01-09 22:08 ` Yann E. MORIN
2016-03-08 23:22 ` Arnout Vandecappelle
0 siblings, 1 reply; 6+ messages in thread
From: Yann E. MORIN @ 2016-01-09 22:08 UTC (permalink / raw)
To: buildroot
Max, All,
On 2015-06-01 17:37 +0300, Max Filippov spake thusly:
> Currently only TARGET_ABI flags are passed to the final compiler
> configure script and only when building for Xtensa. Since libstdc++ is a
> normal library it should be built with full TARGET_CFLAGS on all
> targets.
>
> Pass TARGET_CFLAGS flags to gcc-final configure script for all targets
> in the --enable-cxx-flags parameter.
>
> Suggested-by: Arnout Vandecappelle <arnout@mind.be>
> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
So, I finally had a look at this patch. I've tested it to build a
gcc-4.9 + glibc-2.21 + binutils-2.24 toolchain with C++ support, which
then was used to suessfully build Qt5base (which is quite a heavy C++
user).
However, I'd like to understand what this is all about.
In gcc.mk, we do:
GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)
[...]
HOST_GCC_COMMON_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)"
So it looks like we were already passing the proper CXXFLAGS to gcc (we
only filter-out problematic flags, like -Os on broken gcc-4.5 for PPC).
So, what are we supposed to gain/loose with this change?
As a side note, we should not have to pass TARGET_ABI either, since it
is part of TARGET_CFLAGS and as shown above, it is already part of the
CFLAGS_FOR_TARGET that we pass gcc.
Any explanations? Something that I missed?
Regards,
Yann E. MORIN.
> ---
> package/gcc/gcc-final/gcc-final.mk | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
> index 8d7009b..59c8708 100644
> --- a/package/gcc/gcc-final/gcc-final.mk
> +++ b/package/gcc/gcc-final/gcc-final.mk
> @@ -185,8 +185,6 @@ endef
> HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_USR_LIBS
> endif
>
> -ifeq ($(BR2_xtensa),y)
> -HOST_GCC_FINAL_CONF_OPTS += --enable-cxx-flags="$(TARGET_ABI)"
> -endif
> +HOST_GCC_FINAL_CONF_OPTS += --enable-cxx-flags="$(TARGET_CFLAGS)"
>
> $(eval $(host-autotools-package))
> --
> 1.8.1.4
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
2016-01-09 22:08 ` Yann E. MORIN
@ 2016-03-08 23:22 ` Arnout Vandecappelle
2016-03-10 9:37 ` Max Filippov
0 siblings, 1 reply; 6+ messages in thread
From: Arnout Vandecappelle @ 2016-03-08 23:22 UTC (permalink / raw)
To: buildroot
Hi Max,
On 01/09/16 23:08, Yann E. MORIN wrote:
> Max, All,
>
> On 2015-06-01 17:37 +0300, Max Filippov spake thusly:
>> Currently only TARGET_ABI flags are passed to the final compiler
>> configure script and only when building for Xtensa. Since libstdc++ is a
>> normal library it should be built with full TARGET_CFLAGS on all
>> targets.
>>
>> Pass TARGET_CFLAGS flags to gcc-final configure script for all targets
>> in the --enable-cxx-flags parameter.
>>
>> Suggested-by: Arnout Vandecappelle <arnout@mind.be>
>> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
>
> So, I finally had a look at this patch. I've tested it to build a
> gcc-4.9 + glibc-2.21 + binutils-2.24 toolchain with C++ support, which
> then was used to suessfully build Qt5base (which is quite a heavy C++
> user).
>
> However, I'd like to understand what this is all about.
>
> In gcc.mk, we do:
>
> GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)
> [...]
> HOST_GCC_COMMON_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)"
>
> So it looks like we were already passing the proper CXXFLAGS to gcc (we
> only filter-out problematic flags, like -Os on broken gcc-4.5 for PPC).
>
> So, what are we supposed to gain/loose with this change?
>
> As a side note, we should not have to pass TARGET_ABI either, since it
> is part of TARGET_CFLAGS and as shown above, it is already part of the
> CFLAGS_FOR_TARGET that we pass gcc.
>
> Any explanations? Something that I missed?
I checked in the gcc source and also couldn't find a reason why the
CXXFLAGS_FOR_TARGET wouldn't work. Since you haven't replied to this, I've
marked your patch as rejected in patchwork. If you do still fel it is warranted,
please repost with a satisfactory explanation.
Regards,
Arnout
>
> Regards,
> Yann E. MORIN.
>
>> ---
>> package/gcc/gcc-final/gcc-final.mk | 4 +---
>> 1 file changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
>> index 8d7009b..59c8708 100644
>> --- a/package/gcc/gcc-final/gcc-final.mk
>> +++ b/package/gcc/gcc-final/gcc-final.mk
>> @@ -185,8 +185,6 @@ endef
>> HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_USR_LIBS
>> endif
>>
>> -ifeq ($(BR2_xtensa),y)
>> -HOST_GCC_FINAL_CONF_OPTS += --enable-cxx-flags="$(TARGET_ABI)"
>> -endif
>> +HOST_GCC_FINAL_CONF_OPTS += --enable-cxx-flags="$(TARGET_CFLAGS)"
>>
>> $(eval $(host-autotools-package))
>> --
>> 1.8.1.4
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
2016-03-08 23:22 ` Arnout Vandecappelle
@ 2016-03-10 9:37 ` Max Filippov
2016-03-10 9:46 ` Arnout Vandecappelle
0 siblings, 1 reply; 6+ messages in thread
From: Max Filippov @ 2016-03-10 9:37 UTC (permalink / raw)
To: buildroot
Arnout, Yann,
On Wed, Mar 9, 2016 at 2:22 AM, Arnout Vandecappelle <arnout@mind.be> wrote:
> On 01/09/16 23:08, Yann E. MORIN wrote:
>> On 2015-06-01 17:37 +0300, Max Filippov spake thusly:
>>>
>>> Currently only TARGET_ABI flags are passed to the final compiler
>>> configure script and only when building for Xtensa. Since libstdc++ is a
>>> normal library it should be built with full TARGET_CFLAGS on all
>>> targets.
>>>
>>> Pass TARGET_CFLAGS flags to gcc-final configure script for all targets
>>> in the --enable-cxx-flags parameter.
>>>
>>> Suggested-by: Arnout Vandecappelle <arnout@mind.be>
>>> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
>>
>>
>> So, I finally had a look at this patch. I've tested it to build a
>> gcc-4.9 + glibc-2.21 + binutils-2.24 toolchain with C++ support, which
>> then was used to suessfully build Qt5base (which is quite a heavy C++
>> user).
>>
>> However, I'd like to understand what this is all about.
>>
>> In gcc.mk, we do:
>>
>> GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)
>> [...]
>> HOST_GCC_COMMON_CONF_ENV +=
>> CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)"
>>
>> So it looks like we were already passing the proper CXXFLAGS to gcc (we
>> only filter-out problematic flags, like -Os on broken gcc-4.5 for PPC).
>>
>> So, what are we supposed to gain/loose with this change?
>>
>> As a side note, we should not have to pass TARGET_ABI either, since it
>> is part of TARGET_CFLAGS and as shown above, it is already part of the
>> CFLAGS_FOR_TARGET that we pass gcc.
>>
>> Any explanations? Something that I missed?
>
>
> I checked in the gcc source and also couldn't find a reason why the
> CXXFLAGS_FOR_TARGET wouldn't work. Since you haven't replied to this, I've
> marked your patch as rejected in patchwork. If you do still fel it is
> warranted, please repost with a satisfactory explanation.
Sorry, took me too long to answer the first mail.
AFAICS neither gcc-4.8.x nor gcc-4.9.x propagate CXXFLAGS_FOR_TARGET
to CXXFLAGS for builds of libstdc++. gcc-5.x however does.
Compare the following build log excerpts for libstdc++ of gcc-4.8, gcc-4.9 and
gcc-5 (I've reverted 2dcab526a97d and c44cf2cc97df before running these builds):
gcc-4.8:
make[3]: Entering directory
'/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.8.5/build/xtensa-buildroot-linux-uclibc/libstdc++-v3'
/usr/bin/make "AR_FLAGS=rc" "CC_FOR_BUILD=/usr/bin/gcc"
"CC_FOR_TARGET=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.8.5/build/./gcc/xgcc
-B/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.8.5/build/./gcc/"
"CFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"CXXFLAGS=-O2 -I/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/include
-D_GNU_SOURCE" "CFLAGS_FOR_BUILD=-O2
-I/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/include"
"CFLAGS_FOR_TARGET=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m
644" "INSTALL_PROGRAM=/usr/bin/install -c"
"INSTALL_SCRIPT=/usr/bin/install -c" "LDFLAGS="
"LIBCFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"LIBCFLAGS_FOR_TARGET=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"MAKE=/usr/bin/make"
"MAKEINFO=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.8.5/missing
makeinfo --split-size=5000000 --split-size=5000000 " "SHELL=/bin/bash"
"RUNTESTFLAGS="
"exec_prefix=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr"
"infodir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/share/info"
"libdir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/lib"
"includedir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/include"
"prefix=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr"
"tooldir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc"
"gxx_include_dir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/include/c++/4.8.5"
"AR=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/bin/ar"
"AS=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.8.5/build/./gcc/as"
"LD=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.8.5/build/./gcc/collect-ld"
"RANLIB=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/bin/ranlib"
"NM=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.8.5/build/./gcc/nm"
"NM_FOR_BUILD="
"NM_FOR_TARGET=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/bin/nm"
"DESTDIR=" "WERROR=" all-recursive
gcc-4.9:
make[3]: Entering directory
'/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.9.3/build/xtensa-buildroot-linux-uclibc/libstdc++-v3'
/usr/bin/make "AR_FLAGS=rc" "CC_FOR_BUILD=/usr/bin/gcc"
"CC_FOR_TARGET=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.9.3/build/./gcc/xgcc
-B/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.9.3/build/./gcc/"
"CFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"CXXFLAGS=-O2 -I/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/include
-D_GNU_SOURCE" "CFLAGS_FOR_BUILD=-O2
-I/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/include"
"CFLAGS_FOR_TARGET=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m
644" "INSTALL_PROGRAM=/usr/bin/install -c"
"INSTALL_SCRIPT=/usr/bin/install -c" "LDFLAGS="
"LIBCFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"LIBCFLAGS_FOR_TARGET=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"MAKE=/usr/bin/make"
"MAKEINFO=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.9.3/missing
makeinfo --split-size=5000000 --split-size=5000000 " "SHELL=/bin/bash"
"RUNTESTFLAGS="
"exec_prefix=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr"
"infodir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/share/info"
"libdir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/lib"
"includedir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/include"
"prefix=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr"
"tooldir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc"
"gxx_include_dir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/include/c++/4.9.3"
"AR=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/bin/ar"
"AS=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.9.3/build/./gcc/as"
"LD=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.9.3/build/./gcc/collect-ld"
"RANLIB=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/bin/ranlib"
"NM=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-4.9.3/build/./gcc/nm"
"NM_FOR_BUILD="
"NM_FOR_TARGET=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/bin/nm"
"DESTDIR=" "WERROR=" all-recursive
gcc-5:
make[3]: Entering directory
'/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-5.3.0/build/xtensa-buildroot-linux-uclibc/libstdc++-v3'
/usr/bin/make "AR_FLAGS=rc" "CC_FOR_BUILD=/usr/bin/gcc"
"CC_FOR_TARGET=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-5.3.0/build/./gcc/xgcc
-B/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-5.3.0/build/./gcc/"
"CFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"CXXFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2
-D_GNU_SOURCE" "CFLAGS_FOR_BUILD=-O2
-I/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/include"
"CFLAGS_FOR_TARGET=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m
644" "INSTALL_PROGRAM=/usr/bin/install -c"
"INSTALL_SCRIPT=/usr/bin/install -c" "LDFLAGS="
"LIBCFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"LIBCFLAGS_FOR_TARGET=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g2"
"MAKE=/usr/bin/make"
"MAKEINFO=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-5.3.0/missing
makeinfo --split-size=5000000 --split-size=5000000 " "SHELL=/bin/bash"
"RUNTESTFLAGS="
"exec_prefix=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr"
"infodir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/share/info"
"libdir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/lib"
"includedir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/include"
"prefix=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr"
"tooldir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc"
"gxx_include_dir=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/include/c++/5.3.0"
"AR=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/bin/ar"
"AS=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-5.3.0/build/./gcc/as"
"LD=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-5.3.0/build/./gcc/collect-ld"
"RANLIB=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/bin/ranlib"
"NM=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/build/host-gcc-final-5.3.0/build/./gcc/nm"
"NM_FOR_BUILD="
"NM_FOR_TARGET=/home/jcmvbkbc/tmp/br/build-gdb-binutils-update-dc233c/host/usr/xtensa-buildroot-linux-uclibc/bin/nm"
"DESTDIR=" "WERROR=" all-recursive
With --enable-cxx-flags="$(TARGET_CFLAGS)" in the
HOST_GCC_FINAL_CONF_OPTS make invocation lines are the same,
but makefiles in libstdc++ differ by the EXTRA_CXX_FLAGS.
OTOH since flags propagation is fixed in gcc-5.x maybe backporting
that fix is the right thing?
--
Thanks.
-- Max
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
2016-03-10 9:37 ` Max Filippov
@ 2016-03-10 9:46 ` Arnout Vandecappelle
2016-03-10 9:57 ` Max Filippov
0 siblings, 1 reply; 6+ messages in thread
From: Arnout Vandecappelle @ 2016-03-10 9:46 UTC (permalink / raw)
To: buildroot
On 03/10/16 10:37, Max Filippov wrote:
> Arnout, Yann,
>
> On Wed, Mar 9, 2016 at 2:22 AM, Arnout Vandecappelle <arnout@mind.be> wrote:
>> On 01/09/16 23:08, Yann E. MORIN wrote:
>>> On 2015-06-01 17:37 +0300, Max Filippov spake thusly:
>>>>
>>>> Currently only TARGET_ABI flags are passed to the final compiler
>>>> configure script and only when building for Xtensa. Since libstdc++ is a
>>>> normal library it should be built with full TARGET_CFLAGS on all
>>>> targets.
>>>>
>>>> Pass TARGET_CFLAGS flags to gcc-final configure script for all targets
>>>> in the --enable-cxx-flags parameter.
>>>>
>>>> Suggested-by: Arnout Vandecappelle <arnout@mind.be>
>>>> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
>>>
>>>
>>> So, I finally had a look at this patch. I've tested it to build a
>>> gcc-4.9 + glibc-2.21 + binutils-2.24 toolchain with C++ support, which
>>> then was used to suessfully build Qt5base (which is quite a heavy C++
>>> user).
>>>
>>> However, I'd like to understand what this is all about.
>>>
>>> In gcc.mk, we do:
>>>
>>> GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)
>>> [...]
>>> HOST_GCC_COMMON_CONF_ENV +=
>>> CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)"
>>>
>>> So it looks like we were already passing the proper CXXFLAGS to gcc (we
>>> only filter-out problematic flags, like -Os on broken gcc-4.5 for PPC).
>>>
>>> So, what are we supposed to gain/loose with this change?
>>>
>>> As a side note, we should not have to pass TARGET_ABI either, since it
>>> is part of TARGET_CFLAGS and as shown above, it is already part of the
>>> CFLAGS_FOR_TARGET that we pass gcc.
>>>
>>> Any explanations? Something that I missed?
>>
>>
>> I checked in the gcc source and also couldn't find a reason why the
>> CXXFLAGS_FOR_TARGET wouldn't work. Since you haven't replied to this, I've
>> marked your patch as rejected in patchwork. If you do still fel it is
>> warranted, please repost with a satisfactory explanation.
>
> Sorry, took me too long to answer the first mail.
>
> AFAICS neither gcc-4.8.x nor gcc-4.9.x propagate CXXFLAGS_FOR_TARGET
> to CXXFLAGS for builds of libstdc++. gcc-5.x however does.
Of course, I only checked the source of gcc-5.x :-)
> Compare the following build log excerpts for libstdc++ of gcc-4.8, gcc-4.9 and
> gcc-5 (I've reverted 2dcab526a97d and c44cf2cc97df before running these builds):
>
[snip]
> With --enable-cxx-flags="$(TARGET_CFLAGS)" in the
> HOST_GCC_FINAL_CONF_OPTS make invocation lines are the same,
> but makefiles in libstdc++ differ by the EXTRA_CXX_FLAGS.
>
> OTOH since flags propagation is fixed in gcc-5.x maybe backporting
> that fix is the right thing?
If the backport is easy, by all means go for it. It's not as if we don't have
gcc patches already :-)
If the backport turns out to be difficult, I'm OK with taking your original
patch (because even on gcc5 it doesn't change anything in practice). But it
needs a comment mentioning this version dependency, so that the workaround can
be removed when 4.9 is removed from buildroot.
Regards,
Arnout
--
Arnout Vandecappelle arnout dot vandecappelle at essensium dot com
Senior Embedded Software Architect . . . . . . +32-478-010353 (mobile)
Essensium, Mind division . . . . . . . . . . . . . . http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium . . . . . BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH] gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
2016-03-10 9:46 ` Arnout Vandecappelle
@ 2016-03-10 9:57 ` Max Filippov
0 siblings, 0 replies; 6+ messages in thread
From: Max Filippov @ 2016-03-10 9:57 UTC (permalink / raw)
To: buildroot
On Thu, Mar 10, 2016 at 12:46 PM, Arnout Vandecappelle <arnout@mind.be> wrote:
> On 03/10/16 10:37, Max Filippov wrote:
>> AFAICS neither gcc-4.8.x nor gcc-4.9.x propagate CXXFLAGS_FOR_TARGET
>> to CXXFLAGS for builds of libstdc++. gcc-5.x however does.
[...]
>> OTOH since flags propagation is fixed in gcc-5.x maybe backporting
>> that fix is the right thing?
>
> If the backport is easy, by all means go for it. It's not as if we don't
> have gcc patches already :-)
Ok, let me see if I can figure it out.
--
Thanks.
-- Max
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-03-10 9:57 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-01 14:37 [Buildroot] [PATCH] gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags Max Filippov
2016-01-09 22:08 ` Yann E. MORIN
2016-03-08 23:22 ` Arnout Vandecappelle
2016-03-10 9:37 ` Max Filippov
2016-03-10 9:46 ` Arnout Vandecappelle
2016-03-10 9:57 ` Max Filippov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox