Possible patch for build issue (mostly affects mingw, but see below)
I'd like a second opinion on this. Without this, we had very strange build failures which ended up being using the build system g++ with the mingw "host" (in cross-canadian land, this would be the machine the compiler will run on) headers. On study, the issue seems to be that libcpp is now being built for the build machine, but it's using C++ as of 5.2.0... But EXTRA_BUILD_FLAGS does not override CXXFLAGS, only CFLAGS and LDFLAGS, so you end up with the regular host system CFLAGS, which are the mingw ones, being used with the build system compiler.
Without this, I couldn't build gcc 5.2 for mingw. With this (and adding libgomp to the RUNTIMETARGET_remove_mingw32 in meta-mingw), I could.
However, I don't think this is actually mingw specific. I think that, without this fix, *every* build ends up using the host system's CXXFLAGS to build a build-system libcpp, instead of the build system's. It's just that, since they're usually compatible-enough for libcpp, no one ever noticed.
(Sending it out to the list as a plain patch because it's easier to read; if people want a pretty formatted gcc patch for oe-core, I can do that, and I think this one should go upstream too.)
Author: Peter Seebach <[email protected]> Date: Wed Oct 14 17:10:10 2015 -0500
Makefile.tpl: Also pass CXXFLAGS_FOR_BUILD
When doing a FOR_BUILD thing, you have to override CFLAGS with CFLAGS_FOR_BUILD. And if you use C++, you also have to override CXXFLAGS with CXXFLAGS_FOR_BUILD, or you end up trying to use the mingw headers for a host build.
Makefile.in +1 -0
@@ -169,6 +169,7 @@ BUILD_EXPORTS = \ # built for the build system to override those in BASE_FLAGS_TO_PASS. EXTRA_BUILD_FLAGS = \ CFLAGS="$(CFLAGS_FOR_BUILD)" \ + CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \ LDFLAGS="$(LDFLAGS_FOR_BUILD)" # This is the list of directories to built for the host system.
Makefile.tpl +1 -0
@@ -172,6 +172,7 @@ BUILD_EXPORTS = \ # built for the build system to override those in BASE_FLAGS_TO_PASS. EXTRA_BUILD_FLAGS = \ CFLAGS="$(CFLAGS_FOR_BUILD)" \ + CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \ LDFLAGS="$(LDFLAGS_FOR_BUILD)" # This is the list of directories to built for the host system.
Signature · 1 line
Listen, get this. Nobody with a good compiler needs to be justified.
Quoted 21 lines · Peter Seebach
I'd like a second opinion on this. Without this, we had very strange build failures which ended up being using the build system g++ with the mingw "host" (in cross-canadian land, this would be the machine the compiler will run on) headers. On study, the issue seems to be that libcpp is now being built for the build machine, but it's using C++ as of 5.2.0... But
EXTRA_BUILD_FLAGSdoes not override CXXFLAGS, only CFLAGS and LDFLAGS, so you end up with the regular host system CFLAGS, which are the mingw ones, being used with the build system compiler.Without this, I couldn't build gcc 5.2 for mingw. With this (and adding libgomp to the
RUNTIMETARGET_remove_mingw32in meta-mingw), I could.However, I don't think this is actually mingw specific. I think that, without this fix, *every* build ends up using the host system's CXXFLAGS to build a build-system libcpp, instead of the build system's. It's just that, since they're usually compatible-enough for libcpp, no one ever noticed.
Quoted 3 lines
(Sending it out to the list as a plain patch because it's easier to read; if people want a pretty formatted gcc patch for oe-core, I can do that, and I think this one should go upstream too.)
this patch is ok.
Quoted 44 lines
Author: Peter Seebach <[email protected]> Date: Wed Oct 14 17:10:10 2015 -0500Makefile.tpl: Also pass
CXXFLAGS_FOR_BUILDWhen doing a
FOR_BUILDthing, you have to override CFLAGS withCFLAGS_FOR_BUILD. And if you use C++, you also have to override CXXFLAGS withCXXFLAGS_FOR_BUILD, or you end up trying to use the mingw headers for a host build.Signed-off-by Peter Seebach <[email protected]>Makefile.in +1
-0@@ -169,6 +169,7 @@ BUILD_EXPORTS = \ # built for the build system to override those in BASE_FLAGS_TO_PASS. EXTRA_BUILD_FLAGS = \ CFLAGS="$(CFLAGS_FOR_BUILD)" \ + CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \ LDFLAGS="$(LDFLAGS_FOR_BUILD)" # This is the list of directories to built for the host system.Makefile.tpl +1
-1@@ -172,6 +172,7 @@ BUILD_EXPORTS = \ # built for the build system to override those in BASE_FLAGS_TO_PASS. EXTRA_BUILD_FLAGS = \ CFLAGS="$(CFLAGS_FOR_BUILD)" \ + CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \ LDFLAGS="$(LDFLAGS_FOR_BUILD)" # This is the list of directories to built for the host system. --Listen, get this. Nobody with a good compiler needs to be justified. --
_______________________________________________
Openembedded-core mailing list [email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core