// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

[[make-tips]]
=== 'make' tips

This is a collection of tips that help you make the most of Buildroot.

.Display all commands executed by make:

----
 $ make V=1 <target>
----

.Display the list of boards with a defconfig:

----
 $ make list-defconfigs
----

.Display all available targets:

----
 $ make help
----

Not all targets are always available,
some settings in the +.config+ file may hide some targets:

* +busybox-menuconfig+ only works when +busybox+ is enabled;
* +linux-menuconfig+ and +linux-savedefconfig+ only work when
  +linux+ is enabled;
* +uclibc-menuconfig+ is only available when the uClibc C library is
  selected in the internal toolchain backend;
* +barebox-menuconfig+ and +barebox-savedefconfig+ only work when the
  +barebox+ bootloader is enabled.
* +uboot-menuconfig+ and +uboot-savedefconfig+ only work when the
  +U-Boot+ bootloader is enabled and the +uboot+ build system is set
  to +Kconfig+.

.Cleaning:

Explicit cleaning is required when any of the architecture or toolchain
configuration options are changed.

To delete all build products (including build directories, host, staging
and target trees, the images and the toolchain):

----
 $ make clean
----

.Generating the manual:

The present manual sources are located in the 'docs/manual' directory.
To generate the manual:

----
 $ make manual-clean
 $ make manual
----

The manual outputs will be generated in 'output/docs/manual'.

.Notes
- A few tools are required to build the documentation (see:
  xref:requirement-optional[]).

.Resetting Buildroot for a new target:

To delete all build products as well as the configuration:

----
 $ make distclean
----

.Notes
If +ccache+ is enabled, running +make clean+ or +distclean+ does
not empty the compiler cache used by Buildroot. To delete it, refer
to xref:ccache[].

.Dumping the internal make variables:

One can dump the variables known to make, along with their values:

----
 $ make -s printvars VARS='VARIABLE1 VARIABLE2'
 VARIABLE1=value_of_variable
 VARIABLE2=value_of_variable
----

It is possible to tweak the output using some variables:

- +VARS+ will limit the listing to variables which names match the
  specified make-patterns - this must be set else nothing is printed
- +QUOTED_VARS+, if set to +YES+, will single-quote the value
- +RAW_VARS+, if set to +YES+, will print the unexpanded value

For example:

----
 $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES
 BUSYBOX_DEPENDENCIES=skeleton toolchain
 BUSYBOX_FINAL_ALL_DEPENDENCIES=skeleton toolchain
 BUSYBOX_FINAL_DEPENDENCIES=skeleton toolchain
 BUSYBOX_FINAL_PATCH_DEPENDENCIES=
 BUSYBOX_RDEPENDENCIES=ncurses util-linux
----

----
 $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES QUOTED_VARS=YES
 BUSYBOX_DEPENDENCIES='skeleton toolchain'
 BUSYBOX_FINAL_ALL_DEPENDENCIES='skeleton toolchain'
 BUSYBOX_FINAL_DEPENDENCIES='skeleton toolchain'
 BUSYBOX_FINAL_PATCH_DEPENDENCIES=''
 BUSYBOX_RDEPENDENCIES='ncurses util-linux'
----

----
 $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES RAW_VARS=YES
 BUSYBOX_DEPENDENCIES=skeleton toolchain
 BUSYBOX_FINAL_ALL_DEPENDENCIES=$(sort $(BUSYBOX_FINAL_DEPENDENCIES) $(BUSYBOX_FINAL_PATCH_DEPENDENCIES))
 BUSYBOX_FINAL_DEPENDENCIES=$(sort $(BUSYBOX_DEPENDENCIES))
 BUSYBOX_FINAL_PATCH_DEPENDENCIES=$(sort $(BUSYBOX_PATCH_DEPENDENCIES))
 BUSYBOX_RDEPENDENCIES=ncurses util-linux
----

The output of quoted variables can be reused in shell scripts, for example:

----
 $ eval $(make -s printvars VARS=BUSYBOX_DEPENDENCIES QUOTED_VARS=YES)
 $ echo $BUSYBOX_DEPENDENCIES
 skeleton toolchain
----
