Message ID | 20200905085853.29081-3-xypron.glpk@gmx.de |
---|---|
State | Accepted |
Commit | 70e38eea3ada86874934ae5746f93dc793f75447 |
Delegated to: | Tom Rini |
Headers | show |
Series | doc: describe building with GCC | expand |
On Sat, Sep 05, 2020 at 10:58:53AM +0200, Heinrich Schuchardt wrote: > Provide a description of the U-Boot build process with GCC in the HTML > documentation. > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > --- > doc/build/gcc.rst | 119 ++++++++++++++++++++++++++++++++++++++++++++ > doc/build/index.rst | 1 + > 2 files changed, 120 insertions(+) > create mode 100644 doc/build/gcc.rst It's good to have this. Can we restructure things so that it's clear that the majority of this is toolchain independent and we can update the clang doc, or if this becomes a more generic "build U-Boot for target" doc, we just need to add a section about the Clang caveat about how gd works and then it's just noting that instead of CROSS_COMPILE=aarch64-linux-gnu- it's CROSS_COMPILE="clang -target aarch64-linux-gnu" ? Thanks!
On 9/5/20 2:40 PM, Tom Rini wrote: > On Sat, Sep 05, 2020 at 10:58:53AM +0200, Heinrich Schuchardt wrote: > >> Provide a description of the U-Boot build process with GCC in the HTML >> documentation. >> >> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> >> --- >> doc/build/gcc.rst | 119 ++++++++++++++++++++++++++++++++++++++++++++ >> doc/build/index.rst | 1 + >> 2 files changed, 120 insertions(+) >> create mode 100644 doc/build/gcc.rst > > It's good to have this. Can we restructure things so that it's clear > that the majority of this is toolchain independent and we can update the > clang doc, or if this becomes a more generic "build U-Boot for target" > doc, we just need to add a section about the Clang caveat about how gd > works and then it's just noting that instead of > CROSS_COMPILE=aarch64-linux-gnu- it's CROSS_COMPILE="clang -target > aarch64-linux-gnu" ? Thanks! I think the documentation serves different readers: 1) Users who want to build U-Boot and understand how to use it. They will be interested in: * What is U-Boot? * Building U-Boot * Board specific installation information * Booting * Using the shell * Firmware update In this area we are lacking a lot. Between "Build U-Boot" and "Develop U-Boot" I see a need for a main chapter "Using U-Boot". 2) Developers who want to modify U-Boot and contribute to upstream. They will be interested in * APIs * Inner workings of U-Boot * Contribution guidelines In this area we should strive to move the existing documentation to reStructured text. The description about the clang implementation of gd should be moved to the "Develop U-Boot" section as a non-developer would not care about it. We can add a chapter "Global data" collecting all gd related information. Best regards Heinrich
On Sat, Sep 05, 2020 at 10:58:53AM +0200, Heinrich Schuchardt wrote: > Provide a description of the U-Boot build process with GCC in the HTML > documentation. > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Applied to u-boot/master, thanks!
diff --git a/doc/build/gcc.rst b/doc/build/gcc.rst new file mode 100644 index 0000000000..fcb0b1ffb3 --- /dev/null +++ b/doc/build/gcc.rst @@ -0,0 +1,119 @@ +Building with GCC +================= + +Dependencies +------------ + +For building U-Boot you need a GCC compiler for your host platform. If you +are not building on the target platform you further need a GCC cross compiler. + +Debian based +~~~~~~~~~~~~ + +On Debian based systems the cross compiler packages are named +gcc-<architecture>-linux-gnu. + +You could install GCC and the GCC cross compiler for the ARMv8 architecture with + +.. code-block:: bash + + sudo apt-get gcc gcc-aarch64-linux-gnu + +Depending on the build targets further packages maybe needed + +.. code-block:: bash + + sudo apt-get install bc bison build-essential coccinelle \ + device-tree-compiler dfu-util efitools flex gdisk liblz4-tool \ + libguestfs-tools libncurses-dev libpython3-dev libsdl2-dev libssl-dev \ + lzma-alone openssl python3 python3-coverage python3-pyelftools \ + python3-pytest python3-sphinxcontrib.apidoc python3-sphinx-rtd-theme swig + +Prerequisites +------------- + +For some boards you have to build prerequisite files before you can build +U-Boot, e.g. for the some boards you will need to build the ARM Trusted Firmware +beforehand. Please, refer to the board specific documentation +:doc:`../board/index`. + +Configuration +------------- + +Directory configs/ contains the template configuration files for the maintained +boards following the naming scheme:: + + <board name>_defconfig + +These files have been stripped of default settings. So you cannot use them +directly. Instead their name serves as a make target to generate the actual +configuration file .config. For instance the configuration template for the +Odroid C2 board is called odroid-c2_defconfig. The corresponding .config file +is generated by + +.. code-block:: bash + + make odroid-c2_defconfig + +You can adjust the configuration using + +.. code-block:: bash + + make menuconfig + +Building +-------- + +When cross compiling you will have to specify the prefix of the cross-compiler. +You can either specify the value of the CROSS_COMPILE variable on the make +command line or export it beforehand. + +.. code-block:: bash + + CROSS_COMPILE=<compiler-prefix> make + +Assuming cross compiling on Debian for ARMv8 this would be + +.. code-block:: bash + + CROSS_COMPILE=aarch64-linux-gnu- make + +Build parameters +~~~~~~~~~~~~~~~~ + +A list of available parameters for the make command can be obtained via + +.. code-block:: bash + + make help + +You can speed up compilation by parallelization using the -j parameter, e.g. + +.. code-block:: bash + + CROSS_COMPILE=aarch64-linux-gnu- make -j$(nproc) + +Further important build parameters are + +* O=<dir> - generate all output files in directory <dir>, including .config +* V=1 - verbose build + +Other build targets +~~~~~~~~~~~~~~~~~~~ + +A list of all make targets can be obtained via + +.. code-block:: bash + + make help + +Important ones are + +* clean - remove most generated files but keep the configuration +* mrproper - remove all generated files + config + various backup files + +Installation +------------ + +The process for installing U-Boot on the target device is device specific. +Please, refer to the board specific documentation :doc:`../board/index`. diff --git a/doc/build/index.rst b/doc/build/index.rst index 5051a97e70..5f90f95aca 100644 --- a/doc/build/index.rst +++ b/doc/build/index.rst @@ -7,5 +7,6 @@ Build U-Boot :maxdepth: 2 source + gcc clang tools
Provide a description of the U-Boot build process with GCC in the HTML documentation. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> --- doc/build/gcc.rst | 119 ++++++++++++++++++++++++++++++++++++++++++++ doc/build/index.rst | 1 + 2 files changed, 120 insertions(+) create mode 100644 doc/build/gcc.rst -- 2.28.0