Help adding a prerequisite to GCC
Hi,
I'm trying to compile a toolchain with LTO support in gcc.
I tried to do this by adding the additional gcc flag "--enable-lto", but the build fails (unsurprisingly) because building gcc with lto support requires libelf, which is not currently a prerequisite for gcc in buildroot.
To fix this, I tried adding libelf to gcc-uclibc-4.x.mk by adding:GCC_HOST_PREREQ += host-libelfGCC_TARGET_PREREQ += libelf
The resulting build fails because their is "no make target host-libelf, required for gcc_initial". Can anyone help me figure out where I went wrong? I realize just hacking it in to the .mk like that probably isn't ideal. I was planning to add it as a menuconfig option once I get it building at all.
Thanks in advance,
Scott
Hello Scott,
Le Fri, 27 Jul 2012 15:27:23 -0700,
Scott Moore <[email protected]> a ?crit :
Quoted 8 lines
I'm trying to compile a toolchain with LTO support in gcc.
I tried to do this by adding the additional gcc flag "--enable-lto", but the build fails (unsurprisingly) because building gcc with lto support requires libelf, which is not currently a prerequisite for gcc in buildroot.To fix this, I tried adding libelf to gcc-uclibc-4.x.mk by adding:
GCC_HOST_PREREQ+= host-libelfGCC_TARGET_PREREQ+= libelf
This sounds good.
Quoted 5 lines
The resulting build fails because their is "no make target host-libelf, required for
gcc_initial". Can anyone help me figure out where I went wrong? I realize just hacking it in to the .mk like that probably isn't ideal. I was planning to add it as a menuconfig option once I get it building at all.
If you look at package/libelf/libelf.mk, you'll see that there is only a target variant of this package, and no host variant.
So you should add a line:
$(eval $(host-autotools-package))
at the bottom of the file, and try again. You may need to define some addition HOST_* variables to adjust the configuration options and others, if the build fails or if the resulting host libelf doesn't work properly for what you're trying to do.
Hope this helps,
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
Scott, All,
Quoted 8 lines · On Saturday 28 July 2012 00:27:23 Scott Moore wrote:
I'm trying to compile a toolchain with LTO support in gcc.
I tried to do this by adding the additional gcc flag "--enable-lto", but the build fails (unsurprisingly) because building gcc with lto support requires libelf, which is not currently a prerequisite for gcc in buildroot.To fix this, I tried adding libelf to gcc-uclibc-4.x.mk by adding:
GCC_HOST_PREREQ+= host-libelfGCC_TARGET_PREREQ+= libelf
Please, note that only gcc-4.5 requires libelf for LTO. gcc-4.6 and above do *not need libelf for LTO (nor any other lib).
So, this PREREQs should be conditional to the gcc version.
Or you can use crostool-NG as a backend, that already has all the magic to build an LTO-capable toolchain (as well as using GRAPHITE).
Regards,
Yann E. MORIN.
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. | '------------------------------^-------^------------------^--------------------'