# Yaboot-&yaboot-version;

## Installation of Yaboot

Existing multilib distributions alter gcc to default to 32-bit output. Because our gcc defaults to 64-bit, we need to pass appropriate options to both the compiler and the linker. To prevent the build from failing due to compiler warnings, the -Werror flag is removed. The Makefile already overrides any CC and ignores LDFLAGS in favour of its own variables, so we need to use the following seds for a successful compile and install.

    sed -i -e "s/\(-print-libgcc-file-name\)/${BUILD32} \1/" \
        -e "s/-Werror//" \
        -e "s/\(-Bstatic\)/-melf32ppclinux \1/" Makefile

## The meaning of the sed parameters:

`"s/\(-print-libgcc-file-name\)/${BUILD32} \1/"`

- This picks a convenient place within the Makefile's lgcc variable and inserts the flag to force `gcc` to create 32-bit code when compiling yaboot.

`"s/-Werror//"`

- This deletes the -Werror flag from the Makefile.

`"s/\(-Bstatic\)/-melf32ppclinux \1/"`

- This picks the end of the LFLAGS which the Makefile passes to the linker to create the second-stage linux loader, and inserts a flag to force `ld` to use a suitable 32-bit emulation picked from the output of `'ld -V'`.

    CFLAGS="${BUILD32}" make PREFIX=/usr

The multilib install of yaboot can fail if you miss any of the patches or seds, or omit the CFLAGS variable. `ld` will issue warnings, but the install will appear to complete successfully. That would result in an unbootable system, so you need to log the output to check it.

    make PREFIX=/usr install 2>&1 | tee instlog

To ensure that the install was successful, run the following command:

    grep 'powerpc:common64' instlog

If the command gave you any output (... is incompatible with powerpc:common output) the build of yaboot is broken and you will have to correct your error(s) and repeat it.