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

== Project-specific customization

Typical actions you may need to perform for a given project are:

- configuring Buildroot (including build options and toolchain,
  bootloader, kernel, package and filesystem image type selection)
- configuring other components, like the Linux kernel and BusyBox
- adding project-specific patches to some packages (using
  +BR2_GLOBAL_PATCH_DIR+)
- adding or overwriting files on the target filesystem (using
  +BR2_ROOTFS_OVERLAY+)
- modifying or deleting files on the target filesystem (using
  +BR2_ROOTFS_POST_BUILD_SCRIPT+)
- running arbitrary commands prior to generating the filesystem image
  (using +BR2_ROOTFS_POST_BUILD_SCRIPT+)
- running arbitrary commands after generating the filesystem image
  (using +BR2_ROOTFS_POST_IMAGE_SCRIPT+)
- adding project-specific packages

This chapter describes how to make such project-specific customizations
in Buildroot and how to store them in a way that you can build the same
image in a reproducible way, even after running 'make clean'. By
following the recommended strategy, you can even use the same Buildroot
tree to build multiple distinct projects!

include::customize-rootfs.txt[]

include::customize-store.txt[]

include::customize-packages.txt[]

include::customize-outside-br.txt[]
