##################################
# Introduction
##################################

Using config fragments in the Linux kernel is a supported model in the
Linux kernel main line.  TI has taken advantage of this model to be able
to take a base defconfig and add or remove configuration flags based contained
within a config fragment.  This allows the base defconfig to be left in tact
and helps facilitate and understanding of what config flags can be enabled
or disabled.  The config fragments drastically reduces the number of merge
conflicts when the Linux stable dot release (LTS) is merged back to the
integration point as well as merges for TI domain trees.

But alas this creates another issue as with the config fragments there is no
direct defconfig for customers to build just many, many, many options.

Therefore the defconfig_builder script was derived to take a defconfig map file
and present a command line interface to the customer to to create a standard
defconfig based off the TI integration branches.  The customer is walked through
steps and if successful a defconfig will be created in the arch/arm/configs directory
that can be built.

##################################
# Requirements
##################################

* awk v1.2 or greater.
* bash shell 4.3.11(1)-release or greater.
* Coreutils package v8.1 or greater.
* grep (GNU grep) v2.16 or greater.
* Linux kernel with merge_config script.
* sed (GNU sed) v4.2.2 or greater.

##################################
# Usage
##################################

There is only one option for this script.  This option defines the working
path to where the Linux kernel resides.

	-w - Location of the TI Linux kernel
	-t - Indicates the type of defconfig to build.  This will force the
	     defconfig to build without user interaction.
	-l - List all buildable defconfig options

Command line example to generate the TI SDK AM335x processor defconfig automatically
without user interaction:

	ti_config_fragments/defconfig_builder.sh -t ti_sdk_am3x_release

Command line Example if building from the ti_config_fragments directory:
	defconfig_builder.sh -w ../.

User interactive command line example:

##################################
# Defconfig Map File
##################################

The defconfig map file contains the mapping of the defconfig options and the
assembly instructions for the defconfig to be created.

The file contains keywords and all are *required* to be filled out.

classification: - Defines the class of the defconfig which can be Release, Debug, System Test.
type: - Defines the type of build.  Like debug build, LSK build or RT build
defconfig: - Defines the base defconfig config to append the config fragments to
config_file: - Defines a file that contains a list of config fragments.  If there is not a list then declare "None" for this field.
extra_configs: - These are individual config fragments that can be appended to the defconfig by themselves or in addition to
        the config_file.

A Note on ordering of "extra_configs":

In general, config fragments should be listed such that the fragment
with more restrictive options goes towards the end of the list. This
makes sure that those options are not inadvertently overridden by more
generically applicable options. More concretely, the following ordering
is recommended:

1) Pruning of non-TI features
2) Introduce domain specific features
3) Optimize for an SoC family
4) Optimize for a particular SoC
5) Introduce distribution specific features. (example: Android)

Example:

This is an example of an AM335x entry that will create a defconfig only for AM335x
processors, based on the omap2plus_defconfig.  The defconfig_fragment file adds features
that have been enabled in the TI integrated kernel.  The extra_configs will add in the
debug options as well as undefine all processors that are not AM335x.

classification: SDK_release type: ti_sdk_am3x_release defconfig: multi_v7_defconfig config_file: None extra_configs: multi_v7_prune.cfg baseport.cfg ipc.cfg connectivity.cfg audio_display.cfg omap_soc.cfg am33xx_only.cfg systemd.cfg

##################################
# Defconfig Mapping
##################################

#Processor Specific Defconfig options

These defconfig options enable the Linux kernel for the targer processor only.  Other processor platforms
are disabled.  The base for each of these defconfigs is the omap2plus_defconfig contained
in the arch/arm/configs directory of the kernel.

	TI Base Integrated Kernel:
		am335x_only - Adds the configs from the files contained in the defconfig_fragment file.
		am335x_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg
		am43x_only - Adds the configs from the files contained in the defconfig_fragment file.
		am43x_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg
		dra7xx_only - Adds the configs from the files contained in the defconfig_fragment file.
		dra7xx_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg

	Linaro Stable Kernel builds: (These configurations are only available on the TI LSK branch.)
		am335x_lsk_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the linaro options from the linaro/configs directory
		am335x_lsk_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg as
		       well as the linaro options from the linaro/configs directory
		am43x_lsk_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the linaro options from the linaro/configs directory
		am43x_lsk_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg as
		       well as the linaro options from the linaro/configs directory
		dra7xx_lsk_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the linaro options from the linaro/configs directory
		dra7xx_lsk_debug_only - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg as
		       well as the linaro options from the linaro/configs directory

	TI Based Real Time Kernel: (These configurations are only available on the TI RT branch.)
		am335x_rt_only - Adds the configs from the files contained in the rt_defconfig_fragment file.
		am335x_rt_debug_only - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg.
		am43x_rt_only - Adds the configs from the files contained in the rt_defconfig_fragment file.
		am43x_rt_debug_only - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg.
		dra7xx_rt_only - Adds the configs from the files contained in the rt_defconfig_fragment file.
		dra7xx_rt_debug_only - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg.

#OMAP2+ Defconfig Options

These defconfig options use the omap2plus_defconfig in the arch/arm/configs directory as the base defconfig.
These options do not disable any processor's or platforms but add additional features that

	TI Base Integrated Kernel:
		omap2plus_debug - Takes the omap2plus_defconfig and only adds the debug options from the debug_options.cfg.
		ti_omap2plus - Adds the configs from the files contained in the defconfig_fragment file.
		ti_omap2plus_debug - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg

	Linaro Stable Kernel builds: (These configurations are only available on the TI LSK branch.)
		ti_lsk_omap2plus - Adds the configs from the files contained in the defconfig_fragment file and adds in the linaro options from the linaro/configs directory.
		ti_lsk_omap2plus_debug - Adds the configs from the files contained in the defconfig_fragment file and adds in the debug options from the debug_options.cfg as
		       well as the linaro options from the linaro/configs directory

	TI Based Real Time Kernel: (These configurations are only available on the TI RT branch.)
		ti_rt_omap2plus - Adds the configs from the files contained in the rt_defconfig_fragment file.
		ti_rt_omap2plus_debug - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg.

#Keystone Defconfig Options

These defconfig options use the keystone_defconfig in the arch/arm/configs directory as the base defconfig.
These options do not disable any processor's or platforms but add additional features that

	TI Base Integrated Kernel:
		base_keystone_debug - Takes the keystone_defconfig and only adds the debug options from the debug_options.cfg.
		ti_keystone defconfig - Adds the configs from the files contained in the multi_core_defconfig_fragment file.
		ti_keystone_debug - Adds the configs from the files contained in the multi_core_defconfig_fragment file and
                       adds in the debug options from the debug_options.cfg.

	Linaro Stable Kernel builds: (These configurations are only available on the TI LSK branch.)
		ti_lsk_keystone  - Adds the configs from the files contained in the multi_core_defconfig_fragment file and adds in the
                       linaro options from the linaro/configs directory
		ti_lsk_keystone_debug_only - Adds the configs from the files contained in the multi_core_defconfig_fragment file and adds in the
                       debug options from the debug_options.cfg as well as the linaro options from the linaro/configs directory

	TI Based Real Time Kernel: (These configurations are only available on the TI RT branch.)
		ti_rt_keystone - Adds the configs from the files contained in the rt_defconfig_fragment file.
		ti_rt_keystone_debug  - Adds the configs from the files contained in the rt_defconfig_fragment file and adds in the debug options from the debug_options.cfg.
