* Compiling barebox for newest Yocto/meta-freescale @ 2015-06-22 15:18 György Kövesdi 2015-06-23 8:12 ` Jan Lübbe 0 siblings, 1 reply; 13+ messages in thread From: György Kövesdi @ 2015-06-22 15:18 UTC (permalink / raw) To: barebox Hi, I have a i.MX6 based board and want to compile barebox using Yocto. It was successful so far, but something is changed in the gcc behaviour. The first thing is that some arch-specific parameters must be passed, or else the compilation fails. I could fix it, but there is another problem. The option "-mfloat-abi=soft" is used in barebox compilation, which seems not supported by gcc. Adding "-mfloat-abi=hard" is not enough, the original "-mfloat-abi=soft" should be removed. Unfortunately, i could not find where this option is added and how to remove it. Can anybody help me to fix it? Thanx in advance Gyorgy Kovesdi _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-22 15:18 Compiling barebox for newest Yocto/meta-freescale György Kövesdi @ 2015-06-23 8:12 ` Jan Lübbe 2015-06-23 11:29 ` György Kövesdi 0 siblings, 1 reply; 13+ messages in thread From: Jan Lübbe @ 2015-06-23 8:12 UTC (permalink / raw) To: barebox Hi, On Mo, 2015-06-22 at 17:18 +0200, György Kövesdi wrote: > I have a i.MX6 based board and want to compile barebox using Yocto. > It was successful so far, but something is changed in the gcc behaviour. > The first thing is that some arch-specific parameters must be passed, or > else the compilation fails. I could fix it, but there is another problem. I had to change - oe_runmake + oe_runmake CC="$CC" for recent yocto versions. What was your fix? > The option "-mfloat-abi=soft" is used in barebox compilation, which > seems not supported by gcc. Adding "-mfloat-abi=hard" is not enough, the > original "-mfloat-abi=soft" should be removed. Unfortunately, i could > not find where this option is added and how to remove it. > Can anybody help me to fix it? Which yocto and gcc version are you using? Could you show us the actual error messages and yocto recipe? Regards, Jan -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-23 8:12 ` Jan Lübbe @ 2015-06-23 11:29 ` György Kövesdi 2015-06-23 12:22 ` Holger Schurig 0 siblings, 1 reply; 13+ messages in thread From: György Kövesdi @ 2015-06-23 11:29 UTC (permalink / raw) To: barebox Hi Jan, > I had to change > - oe_runmake > + oe_runmake CC="$CC" > for recent yocto versions. What was your fix? My fix was more complicated, by exporting ${TOOLCHAIN_OPTIONS} and ${HOST_CC_ARCH}. Thanks for this simpler solution. >> The option "-mfloat-abi=soft" is used in barebox compilation, which >> seems not supported by gcc. Adding "-mfloat-abi=hard" is not enough, the >> original "-mfloat-abi=soft" should be removed. Unfortunately, i could >> not find where this option is added and how to remove it. >> Can anybody help me to fix it? > Which yocto and gcc version are you using? Could you show us the actual > error messages and yocto recipe? The current fido and master branches use gcc 4.9.2 and the problem is that soft float abi support seems missing and the option -mfloat-abi=soft is always added by the make rules of barebox. If i use the above mentioned fix, the result is: arm-poky-linux-gnueabi-gcc: error: -mfloat-abi=soft and -mfloat-abi=hard may not be used together because -mfloat-abi=hard is passed in ${CC} variable. If i remove the option -mfloat-abi=hard, then got this error: ... stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory that's why i think the soft abi support is missing. IMHO the float abi should not be set by the make rules because it is hardware specific, and therefore should be set by the build system. Regards György Kövesdi _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-23 11:29 ` György Kövesdi @ 2015-06-23 12:22 ` Holger Schurig 2015-06-23 13:40 ` György Kövesdi 0 siblings, 1 reply; 13+ messages in thread From: Holger Schurig @ 2015-06-23 12:22 UTC (permalink / raw) To: György Kövesdi; +Cc: barebox You better ask in some Yocto-specific mailing list, this isn't really the problem of Barebox anymore. :-) The soft-float option might come from one of your inherited configuration files. Soft-Float is definitely not optimal for the i.MX6, because this one has FPU commands. _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-23 12:22 ` Holger Schurig @ 2015-06-23 13:40 ` György Kövesdi 2015-06-23 14:07 ` Holger Schurig 0 siblings, 1 reply; 13+ messages in thread From: György Kövesdi @ 2015-06-23 13:40 UTC (permalink / raw) To: barebox Hi, > You better ask in some Yocto-specific mailing list, this isn't really > the problem of Barebox anymore. :-) The soft-float option might come > from one of your inherited configuration files. I am completely confused now, because Yocto guys said that the problem is in Barebox... :-) At least i can compile thousands of recipes on Yocto, currently Barebox is the only one having this issue. I spent a lot of time debugging this problem in the recent days and i see the float abi is set to hard in the bitbake environment, and the soft float is not even supported by gcc (that is the problem). Currently i blame the kernel build system used by Barebox about setting soft float abi. > Soft-Float is definitely not optimal for the i.MX6, because this one > has FPU commands. I agree. Regards Gyorgy Kovesdi _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-23 13:40 ` György Kövesdi @ 2015-06-23 14:07 ` Holger Schurig 2015-06-23 14:52 ` György Kövesdi 0 siblings, 1 reply; 13+ messages in thread From: Holger Schurig @ 2015-06-23 14:07 UTC (permalink / raw) To: György Kövesdi; +Cc: barebox Look at barebox/arch/arm/Makefile. Around line 47 you see "-msoft-float" specified to both CPPFLAGS and AFLAGS. So specifying "CC=-msoft-hard" would bites with this. Does compiling Barebox outside of Yocto work? E.g. something like: make ARCH=arm CROSS_COMPILE=/home/schurig/d/mkarm/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf- (I'm using http://releases.linaro.org/14.04/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux.tar.xz, but you'd of corse specify your own prefix). Also note that my compiler is gnueabiarmhf (hf is "hard-float"), but has not trouble compiling in something with -msoft-float. Maybe your cross-compiler cannot do that? PS: despite I was once heavily involved into the early bitbake (during OpenEmbedded time), I stopped using it. I now run Debian on my i.MX6 and don't fuzz with bitbake/OE/Poky/Yocto anymore :-) _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-23 14:07 ` Holger Schurig @ 2015-06-23 14:52 ` György Kövesdi 2015-06-23 15:01 ` Holger Schurig 0 siblings, 1 reply; 13+ messages in thread From: György Kövesdi @ 2015-06-23 14:52 UTC (permalink / raw) To: barebox Hi all, On 2015-06-23 16:07, Holger Schurig wrote: > Look at barebox/arch/arm/Makefile. Around line 47 you see > "-msoft-float" specified to both CPPFLAGS and AFLAGS. So specifying > "CC=-msoft-hard" would bites with this. Many thanx, this was the problem! I am removed the "-msoft-float" and everything works now. I just suggest to remove it at all because such settings are belong to the build environment. If someone needs such, it can be set by parameters. Is it acceptable in general? Shall i send a patch, or someone does it? Regards Gyorgy Kovesdi _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-23 14:52 ` György Kövesdi @ 2015-06-23 15:01 ` Holger Schurig 2015-06-23 17:57 ` Gyorgy Kovesdi 0 siblings, 1 reply; 13+ messages in thread From: Holger Schurig @ 2015-06-23 15:01 UTC (permalink / raw) To: György Kövesdi; +Cc: barebox Better make a Yocto patch. Not everyone compiles Barebox with a "build environment". _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-23 15:01 ` Holger Schurig @ 2015-06-23 17:57 ` Gyorgy Kovesdi 2015-06-23 19:30 ` Lucas Stach 0 siblings, 1 reply; 13+ messages in thread From: Gyorgy Kovesdi @ 2015-06-23 17:57 UTC (permalink / raw) To: Holger Schurig Hi all, > Better make a Yocto patch. Not everyone compiles Barebox with a "build > environment". Ok, i will do that. However, IMHO it is a wrong idea to hard-wire such a setting, because everybody will run into this problem having hard-float-only environment. At least it should be configurable. BTW everybody must have a (cross) gcc which takes care about that. Regards Gyorgy Kovesdi _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-23 17:57 ` Gyorgy Kovesdi @ 2015-06-23 19:30 ` Lucas Stach 2015-06-24 14:33 ` Jan Lübbe 0 siblings, 1 reply; 13+ messages in thread From: Lucas Stach @ 2015-06-23 19:30 UTC (permalink / raw) To: Gyorgy Kovesdi; +Cc: barebox Am Dienstag, den 23.06.2015, 19:57 +0200 schrieb Gyorgy Kovesdi: > Hi all, > > Better make a Yocto patch. Not everyone compiles Barebox with a "build > > environment". > Ok, i will do that. > However, IMHO it is a wrong idea to hard-wire such a setting, because > everybody will run into this problem having hard-float-only environment. > At least it should be configurable. > BTW everybody must have a (cross) gcc which takes care about that. > It's a completely reasonable decision to explicitly build with the soft-float ABI for a bare metal component like Barebox, in order to prevent the toolchain from using any part of the ARM VFP state, which may not be initialized at that point. This has nothing to do with the decision to build your userspace with hard-float enabled. Building barebox with the hard-float ABI may actively yield broken binaries. So no, this is not a thing that should be configurable. Also you don't have a hard-float only environment, your toolchain is perfectly able to build with the soft-float ABI, it's just that Yocto apparently passes the mfloat-abi=hard flag everywhere instead of setting a reasonable toolchain default. Regards, Lucas _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-23 19:30 ` Lucas Stach @ 2015-06-24 14:33 ` Jan Lübbe 2015-06-24 19:59 ` Fabio Estevam 2015-06-29 10:24 ` Gyorgy Kovesdi 0 siblings, 2 replies; 13+ messages in thread From: Jan Lübbe @ 2015-06-24 14:33 UTC (permalink / raw) To: Lucas Stach; +Cc: barebox, Gyorgy Kovesdi, Holger Hans Peter Freyther On Di, 2015-06-23 at 21:30 +0200, Lucas Stach wrote: > Also you don't have a hard-float only environment, your toolchain is > perfectly able to build with the soft-float ABI, it's just that Yocto > apparently passes the mfloat-abi=hard flag everywhere instead of > setting a reasonable toolchain default. I have the same problem now, as well (triggered by setting DEFAULTTUNE="cortexa8hf-neon"). The kernel uses the same -msoft-float in arch/arm/Makefile as we do in barebox. As Lucas said, this is actually important for correct behavior. Yocto handles this by building the kernel with CC="${KERNEL_CC}" LD="${KERNEL_LD}" instead (see kernel.bbclass and kernel-arch.bbclass). For barebox I now have: do_compile () { unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" } These settings make it impossible to build the barebox target userspace tools from scripts/, though. This is because the --sysroot parameter is passed by Yocto only in ${CC} and not in ${KERNEL_CC}, so the target userspace tools will fail to find their standard headers. So I have as a temporary workaround: do_configure_prepend() { cp ${WORKDIR}/defconfig ${S}/.config # do not compile tools when using KERNEL_CC/KERNEL_LD echo CONFIG_BAREBOXENV_TARGET=n >> ${S}/.config echo CONFIG_BAREBOXCRC32_TARGET=n >> ${S}/.config echo CONFIG_KERNEL_INSTALL_TARGET=n >> ${S}/.config echo CONFIG_IMD_TARGET=n >> ${S}/.config oe_runmake oldconfig } To compile the target userspace tools, we'll need to use ${CC} instead, which is currently not supported by our (or the kernel's) kbuild. It seems that we currently build these tools with -msoft-float as well, which causes no problems because we don't use float math, but it's not correct either. Gyorgy, could you point us to the Yocto side of the discussion, if it was on some list? Regards, Jan -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-24 14:33 ` Jan Lübbe @ 2015-06-24 19:59 ` Fabio Estevam 2015-06-29 10:24 ` Gyorgy Kovesdi 1 sibling, 0 replies; 13+ messages in thread From: Fabio Estevam @ 2015-06-24 19:59 UTC (permalink / raw) To: jlu; +Cc: Gyorgy Kovesdi, barebox, Holger Hans Peter Freyther On Wed, Jun 24, 2015 at 11:33 AM, Jan Lübbe <jlu@pengutronix.de> wrote: > Gyorgy, could you point us to the Yocto side of the discussion, if it > was on some list? https://www.mail-archive.com/meta-freescale@yoctoproject.org/msg14197.html Regards, Fabio Estevam _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Compiling barebox for newest Yocto/meta-freescale 2015-06-24 14:33 ` Jan Lübbe 2015-06-24 19:59 ` Fabio Estevam @ 2015-06-29 10:24 ` Gyorgy Kovesdi 1 sibling, 0 replies; 13+ messages in thread From: Gyorgy Kovesdi @ 2015-06-29 10:24 UTC (permalink / raw) To: barebox Hi everybody, You are right, barebox really cannot be run with hard-float. I re-enabled soft float in gcc compilation, and now it works perfectly on Yocto build without any modification. Many thanx György Kövesdi On Wed, 24 Jun 2015 16:33:00 +0200 Jan Lübbe <jlu@pengutronix.de> wrote: > On Di, 2015-06-23 at 21:30 +0200, Lucas Stach wrote: > > Also you don't have a hard-float only environment, your toolchain is > > perfectly able to build with the soft-float ABI, it's just that Yocto > > apparently passes the mfloat-abi=hard flag everywhere instead of > > setting a reasonable toolchain default. > > I have the same problem now, as well (triggered by setting > DEFAULTTUNE="cortexa8hf-neon"). > > The kernel uses the same -msoft-float in arch/arm/Makefile as we do in > barebox. As Lucas said, this is actually important for correct behavior. > > Yocto handles this by building the kernel with CC="${KERNEL_CC}" > LD="${KERNEL_LD}" instead (see kernel.bbclass and kernel-arch.bbclass). > For barebox I now have: > do_compile () { > unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE > oe_runmake CC="${KERNEL_CC}" LD="${KERNEL_LD}" > } > > These settings make it impossible to build the barebox target userspace > tools from scripts/, though. This is because the --sysroot parameter is > passed by Yocto only in ${CC} and not in ${KERNEL_CC}, so the target > userspace tools will fail to find their standard headers. So I have as a > temporary workaround: > do_configure_prepend() { > cp ${WORKDIR}/defconfig ${S}/.config > # do not compile tools when using KERNEL_CC/KERNEL_LD > echo CONFIG_BAREBOXENV_TARGET=n >> ${S}/.config > echo CONFIG_BAREBOXCRC32_TARGET=n >> ${S}/.config > echo CONFIG_KERNEL_INSTALL_TARGET=n >> ${S}/.config > echo CONFIG_IMD_TARGET=n >> ${S}/.config > oe_runmake oldconfig > } > > To compile the target userspace tools, we'll need to use ${CC} instead, > which is currently not supported by our (or the kernel's) kbuild. It > seems that we currently build these tools with -msoft-float as well, > which causes no problems because we don't use float math, but it's not > correct either. > > Gyorgy, could you point us to the Yocto side of the discussion, if it > was on some list? > > Regards, > Jan _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2015-06-29 10:26 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-06-22 15:18 Compiling barebox for newest Yocto/meta-freescale György Kövesdi 2015-06-23 8:12 ` Jan Lübbe 2015-06-23 11:29 ` György Kövesdi 2015-06-23 12:22 ` Holger Schurig 2015-06-23 13:40 ` György Kövesdi 2015-06-23 14:07 ` Holger Schurig 2015-06-23 14:52 ` György Kövesdi 2015-06-23 15:01 ` Holger Schurig 2015-06-23 17:57 ` Gyorgy Kovesdi 2015-06-23 19:30 ` Lucas Stach 2015-06-24 14:33 ` Jan Lübbe 2015-06-24 19:59 ` Fabio Estevam 2015-06-29 10:24 ` Gyorgy Kovesdi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox