gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
PATCH 1/1 gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
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.
--- package/gcc/gcc-final/gcc-final.mk | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
package/gcc/gcc-final/gcc-final.mk +1 -3
@@ -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))
Signature · 1 line
1.8.1.4
PATCH 1/1 gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
Max, All,
On 2015-06-01 17:37 +0300, Max Filippov spake thusly:
Quoted 10 lines
Currently only
TARGET_ABIflags 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 fullTARGET_CFLAGSon all targets.Pass
TARGET_CFLAGSflags to gcc-final configure script for all targets in the --enable-cxx-flags parameter.Suggested-by Arnout Vandecappelle <[email protected]>Signed-off-by Max Filippov <[email protected]>
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.
Quoted 25 lines
--- package/gcc/gcc-final/gcc-final.mk | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)package/gcc/gcc-final/gcc-final.mk +1
-3@@ -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))Signature · 6 lines
1.8.1.4 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | 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. | '------------------------------^-------^------------------^--------------------'
PATCH 1/1 gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
Hi Max,
Quoted 30 lines · Yann E. MORIN
Max, All,
On 2015-06-01 17:37 +0300, Max Filippov spake thusly:
Quoted 10 lines
Currently only
TARGET_ABIflags 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 fullTARGET_CFLAGSon all targets.Pass
TARGET_CFLAGSflags to gcc-final configure script for all targets in the --enable-cxx-flags parameter.Suggested-by Arnout Vandecappelle <[email protected]>Signed-off-by Max Filippov <[email protected]>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).
Quoted 7 lines
So, what are we supposed to gain/loose with this change?
As a side note, we should not have to pass
TARGET_ABIeither, since it is part ofTARGET_CFLAGSand as shown above, it is already part of theCFLAGS_FOR_TARGETthat we pass gcc.Any explanations? Something that I missed?
I checked in the gcc source and also couldn't find a reason why theCXXFLAGS_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
Quoted 30 lines
Regards,
Yann E. MORIN.Quoted 25 lines
--- package/gcc/gcc-final/gcc-final.mk | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)package/gcc/gcc-final/gcc-final.mk +1
-4@@ -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
Signature · 6 lines
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
PATCH 1/1 gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
Arnout, Yann,
Quoted 38 lines · Arnout Vandecappelle
Quoted 37 lines · Yann E. MORIN
On 2015-06-01 17:37 +0300, Max Filippov spake thusly:
Quoted 11 lines
Currently only
TARGET_ABIflags 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 fullTARGET_CFLAGSon all targets.Pass
TARGET_CFLAGSflags to gcc-final configure script for all targets in the --enable-cxx-flags parameter.Suggested-by Arnout Vandecappelle <[email protected]>Signed-off-by Max Filippov <[email protected]>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_ABIeither, since it is part ofTARGET_CFLAGSand as shown above, it is already part of theCFLAGS_FOR_TARGETthat we pass gcc.
Quoted 7 lines
Quoted 1 line
Any explanations? Something that I missed?
I checked in the gcc source and also couldn't find a reason why the
CXXFLAGS_FOR_TARGETwouldn'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?
Signature · 2 lines
Thanks. -- Max
PATCH 1/1 gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
Quoted 49 lines · Max Filippov
Arnout, Yann,
Quoted 38 lines · Arnout Vandecappelle
Quoted 37 lines · Yann E. MORIN
On 2015-06-01 17:37 +0300, Max Filippov spake thusly:
Quoted 11 lines
Currently only
TARGET_ABIflags 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 fullTARGET_CFLAGSon all targets.Pass
TARGET_CFLAGSflags to gcc-final configure script for all targets in the --enable-cxx-flags parameter.Suggested-by Arnout Vandecappelle <[email protected]>Signed-off-by Max Filippov <[email protected]>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_ABIeither, since it is part ofTARGET_CFLAGSand as shown above, it is already part of theCFLAGS_FOR_TARGETthat we pass gcc.Quoted 7 lines
Quoted 1 line
Any explanations? Something that I missed?
I checked in the gcc source and also couldn't find a reason why the
CXXFLAGS_FOR_TARGETwouldn'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.
Quoted 4 lines
Sorry, took me too long to answer the first mail.
AFAICS neither gcc-4.8.x nor gcc-4.9.x propagate
CXXFLAGS_FOR_TARGETto CXXFLAGS for builds of libstdc++. gcc-5.x however does.
Of course, I only checked the source of gcc-5.x :-)
Quoted 3 lines
Compare the following build log excerpts for libstdc++ of gcc-4.8, gcc-4.9 and gcc-5 (I've reverted
2dcab526a97dandc44cf2cc97dfbefore running these builds):
[snip]
Quoted 6 lines
With --enable-cxx-flags="$(TARGET_CFLAGS)" in the
HOST_GCC_FINAL_CONF_OPTSmake invocation lines are the same, but makefiles in libstdc++ differ by theEXTRA_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
Signature · 6 lines
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
PATCH 1/1 gcc/gcc-final: pass TARGET_CFLAGS flags to configure with --enable-cxx-flags
Quoted 3 lines · Arnout Vandecappelle
Quoted 2 lines · Max Filippov
AFAICS neither gcc-4.8.x nor gcc-4.9.x propagate
CXXFLAGS_FOR_TARGETto CXXFLAGS for builds of libstdc++. gcc-5.x however does.
[...]
Quoted 5 lines
Quoted 2 lines
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.
Signature · 2 lines
Thanks. -- Max