Overall, these coding style rules are here to help you to add new files in Buildroot or refactor existing ones.
If you slightly modify some existing file, the important thing is to keep the consistency of the whole file, so you can:
Config.in files contain entries for almost anything configurable in
Buildroot.
An entry has the following pattern:
config BR2_PACKAGE_LIBFOO
bool "libfoo"
depends on BR2_PACKAGE_LIBBAZ
select BR2_PACKAGE_LIBBAR
help
This is a comment that explains what libfoo is. The help text
should be wrapped.
http://foosoftware.org/libfoo/bool, depends on, select and help lines are indented
with one tab.
The Config.in files are the input for the configuration tool
used in Buildroot, which is the regular Kconfig. For further
details about the Kconfig language, refer to
http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt.
Header: The file starts with a header. It contains the module name, preferably in lowercase, enclosed between separators made of 80 hashes. A blank line is mandatory after the header:
################################################################################ # # libfoo # ################################################################################
Assignment: use = preceded and followed by one space:
LIBFOO_VERSION = 1.0 LIBFOO_CONF_OPTS += --without-python-support
Do not align the = signs.
Indentation: use tab only:
define LIBFOO_REMOVE_DOC
$(RM) -r $(TARGET_DIR)/usr/share/libfoo/doc \
$(TARGET_DIR)/usr/share/man/man3/libfoo*
endefNote that commands inside a define block should always start with a tab,
so make recognizes them as commands.
Optional dependency:
Prefer multi-line syntax.
YES:
ifeq ($(BR2_PACKAGE_PYTHON3),y) LIBFOO_CONF_OPTS += --with-python-support LIBFOO_DEPENDENCIES += python3 else LIBFOO_CONF_OPTS += --without-python-support endif
NO:
LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON3),,out)-python-support LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),python3,)
Optional hooks: keep hook definition and assignment together in one if block.
YES:
ifneq ($(BR2_LIBFOO_INSTALL_DATA),y)
define LIBFOO_REMOVE_DATA
$(RM) -r $(TARGET_DIR)/usr/share/libfoo/data
endef
LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA
endifNO:
define LIBFOO_REMOVE_DATA
$(RM) -r $(TARGET_DIR)/usr/share/libfoo/data
endef
ifneq ($(BR2_LIBFOO_INSTALL_DATA),y)
LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA
endifgenimage.cfg files contain the output image layout that genimage utility
uses to create final .img file.
An example follows:
image efi-part.vfat {
vfat {
file EFI {
image = "efi-part/EFI"
}
file Image {
image = "Image"
}
}
size = 32M
}
image sdimage.img {
hdimage {
}
partition u-boot {
image = "efi-part.vfat"
offset = 8K
}
partition root {
image = "rootfs.ext2"
size = 512M
}
}section(i.e. hdimage, vfat etc.), partition must be indented
with one tab.
file or other subnode must be indented with two tabs.
section, partition, file, subnode) must have an open
curly bracket on the same line of the node’s name, while the closing one
must be on a newline and after it a newline must be added except for the
last one node. Same goes for its option, for example option size =.
option(i.e. image, offset, size) must have the =
assignment one space from it and one space from the value specified.
offset and size options are: G, M, K
(not k). If it’s not possible to express a precise byte count
with notations above then use hexadecimal 0x prefix or, as last
chance, the byte count. In comments instead use GB, MB, KB
(not kb) in place of G, M, K.
partition-type-uuid value must be U for
the EFI System Partition (expanded to
c12a7328-f81f-11d2-ba4b-00a0c93ec93b by genimage), F for a FAT
partition (expanded to ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 by
genimage) or L for the root filesystem or other filesystems
(expanded to 0fc63daf-8483-4772-8e79-3d69d8477de4 by
genimage). Even though L is the default value of genimage, we
prefer to have it explicitly specified in our genimage.cfg
files. Finally, these shortcuts should be used without double
quotes, e.g partition-type-uuid = U. If an explicit GUID is
specified, lower-case letters should be used.
The genimage.cfg files are the input for the genimage tool used in
Buildroot to generate the final image file(i.e. sdcard.img). For further
details about the genimage language, refer to
https://github.com/pengutronix/genimage/blob/master/README.rst.
The documentation uses the asciidoc format.
For further details about the asciidoc syntax, refer to https://asciidoc-py.github.io/userguide.html.
Some scripts in the support/ and utils/ directories are written in
Python and should follow the
PEP8 Style Guide for Python Code.