commit | 3e6e8357816a1b2bdf8ead327da19b6412a5d627 | [log] [tgz] |
---|---|---|
author | Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com> | Tue Apr 14 16:06:01 2020 -0300 |
committer | Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com> | Wed Apr 07 15:58:07 2021 -0300 |
tree | d1a2842a5daeab6776048236e7e401a26d6895c2 | |
parent | 0b15bec009b3f2ffe9f3ba502223526587fd9f5f [diff] |
Introduce Alternate Toolchain gcc and binutils Hostboot, OCC and potentially other packages are *VERY* sensitive to GCC+binutils combinations (specially due to the use of libbfd to feed the custom linker/loader script). That means that the default buildroot toolchain can't be easily upgraded without risking hard-to-debug build and runtime issues that might be caused by the change of the compiler + binutils combination. Address this by creating (yet another) GCC + Binutils host packages pair that can be used, as an alternative to the one provided by buildroot. Doing so would allow such packages to stay (indefinitely) using their choice of gcc+binutils, while still allowing buildroot (and the Skiroot environment) to evolve and use newer versions / releases. Signed-off-by: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
The OpenPOWER firmware build process uses Buildroot to create a toolchain and build the various components of the PNOR firmware, including Hostboot, Skiboot, OCC, Petitboot etc.
https://open-power.github.io/op-build/
See the doc/ directory for documentation source. Contributions are VERY welcome!
Issues, Milestones, pull requests and code hosting is on GitHub: https://github.com/open-power/op-build
See CONTRIBUTING.md for howto contribute code.
To build an image for a Blackbird system:
git clone --recursive https://github.com/open-power/op-build.git cd op-build ./op-build blackbird_defconfig && ./op-build
There are also default configurations for other platforms in openpower/configs/
. Current POWER9 platforms include Witherspoon, Boston (p9dsu), Romulus, and Zaius.
Buildroot/op-build supports both native and cross-compilation - it will automatically download and build an appropriate toolchain as part of the build process, so you don't need to worry about setting up a cross-compiler. Cross-compiling from a x86-64 host is officially supported.
The machine your building on will need Python 2.7, GCC 6.2 (or later), and a handful of other packages (see below).
Install Ubuntu (>= 18.04) or Debian (>= 9) 64-bit.
Enable Universe (Ubuntu only):
sudo apt-get install software-properties-common sudo add-apt-repository universe
Install the packages necessary for the build:
sudo apt-get install cscope ctags libz-dev libexpat-dev \ python language-pack-en texinfo gawk cpio xxd \ build-essential g++ git bison flex unzip \ libssl-dev libxml-simple-perl libxml-sax-perl libxml-parser-perl libxml2-dev libxml2-utils xsltproc \ wget bc rsync
Install Fedora (>= 25) 64-bit.
Install the packages necessary for the build:
sudo dnf install gcc-c++ flex bison git ctags cscope expat-devel patch \ zlib-devel zlib-static texinfo "perl(bigint)" "perl(XML::Simple)" \ "perl(YAML)" "perl(XML::SAX)" "perl(Fatal)" "perl(Thread::Queue)" \ "perl(Env)" "perl(XML::LibXML)" "perl(Digest::SHA1)" "perl(ExtUtils::MakeMaker)" \ "perl(FindBin)" "perl(English)" "perl(Time::localtime)" \ libxml2-devel which wget unzip tar cpio python bzip2 bc findutils ncurses-devel \ openssl-devel make libxslt vim-common lzo-devel python2 rsync hostname