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

[[customize]]
== 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
* customizing the generated target filesystem
  ** 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+)
  ** setting file permissions and ownership (using
     +BR2_ROOTFS_DEVICE_TABLE+)
  ** adding custom devices nodes (using
     +BR2_ROOTFS_STATIC_DEVICE_TABLE+)
* adding custom user accounts (using +BR2_ROOTFS_USERS_TABLES+)
* running arbitrary commands after generating the filesystem image
  (using +BR2_ROOTFS_POST_IMAGE_SCRIPT+)
* adding project-specific patches to some packages (using
  +BR2_GLOBAL_PATCH_DIR+)
* adding project-specific packages

An important note regarding such 'project-specific' customizations:
please carefully consider which changes are indeed project-specific and
which changes are also useful to developers outside your project. The
Buildroot community highly recommends and encourages the upstreaming of
improvements, packages and board support to the official Buildroot
project. Of course, it is sometimes not possible or desirable to
upstream because the changes are highly specific or proprietary.

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-directory-structure.txt[]

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

include::customize-configuration.txt[]

include::customize-rootfs.txt[]

include::customize-users-tables.txt[]

include::customize-post-image.txt[]

include::customize-patches.txt[]

include::customize-packages.txt[]

include::customize-quick-guide.txt[]
