README 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. ##################################
  2. # Introduction
  3. ##################################
  4. Using config fragments in the Linux kernel is a supported model in the
  5. Linux kernel main line. TI has taken advantage of this model to be able
  6. to take a base defconfig and add or remove configuration flags based contained
  7. within a config fragment. This allows the base defconfig to be left in tact
  8. and helps facilitate and understanding of what config flags can be enabled
  9. or disabled. The config fragments drastically reduces the number of merge
  10. conflicts when the Linux stable dot release (LTS) is merged back to the
  11. integration point as well as merges for TI domain trees.
  12. But alas this creates another issue as with the config fragments there is no
  13. direct defconfig for customers to build just many, many, many options.
  14. Therefore the defconfig_builder script was derived to take a defconfig map file
  15. and present a command line interface to the customer to to create a standard
  16. defconfig based off the TI integration branches. The customer is walked through
  17. steps and if successful a defconfig will be created in the arch/arm/configs directory
  18. that can be built.
  19. ##################################
  20. # Requirements
  21. ##################################
  22. * awk v1.2 or greater.
  23. * bash shell 4.3.11(1)-release or greater.
  24. * Coreutils package v8.1 or greater.
  25. * grep (GNU grep) v2.16 or greater.
  26. * Linux kernel with merge_config script.
  27. * sed (GNU sed) v4.2.2 or greater.
  28. ##################################
  29. # Usage
  30. ##################################
  31. There is only one option for this script. This option defines the working
  32. path to where the Linux kernel resides.
  33. -w - Location of the TI Linux kernel
  34. -t - Indicates the type of defconfig to build. This will force the
  35. defconfig to build without user interaction.
  36. -l - List all buildable defconfig options
  37. Command line example to generate the TI SDK AM335x processor defconfig automatically
  38. without user interaction:
  39. ti_config_fragments/defconfig_builder.sh -t ti_sdk_am3x_release
  40. Command line Example if building from the ti_config_fragments directory:
  41. defconfig_builder.sh -w ../.
  42. User interactive command line example:
  43. ##################################
  44. # Defconfig Map File
  45. ##################################
  46. The defconfig map file contains the mapping of the defconfig options and the
  47. assembly instructions for the defconfig to be created.
  48. The file contains keywords and all are *required* to be filled out.
  49. classification: - Defines the class of the defconfig which can be Release, Debug, System Test.
  50. type: - Defines the type of build. Like debug build, LSK build or RT build
  51. defconfig: - Defines the base defconfig config to append the config fragments to
  52. config_file: - Defines a file that contains a list of config fragments. If there is not a list then declare "None" for this field.
  53. extra_configs: - These are individual config fragments that can be appended to the defconfig by themselves or in addition to
  54. the config_file.
  55. A Note on ordering of "extra_configs":
  56. In general, config fragments should be listed such that the fragment
  57. with more restrictive options goes towards the end of the list. This
  58. makes sure that those options are not inadvertently overridden by more
  59. generically applicable options. More concretely, the following ordering
  60. is recommended:
  61. 1) Pruning of non-TI features
  62. 2) Introduce domain specific features
  63. 3) Optimize for an SoC family
  64. 4) Optimize for a particular SoC
  65. 5) Introduce distribution specific features. (example: Android)
  66. Example:
  67. This is an example of an AM335x entry that will create a defconfig only for AM335x
  68. processors, based on the omap2plus_defconfig. The defconfig_fragment file adds features
  69. that have been enabled in the TI integrated kernel. The extra_configs will add in the
  70. debug options as well as undefine all processors that are not AM335x.
  71. 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
  72. ##################################
  73. # Defconfig Mapping
  74. ##################################
  75. #Processor Specific Defconfig options
  76. These defconfig options enable the Linux kernel for the targer processor only. Other processor platforms
  77. are disabled. The base for each of these defconfigs is the omap2plus_defconfig contained
  78. in the arch/arm/configs directory of the kernel.
  79. TI Base Integrated Kernel:
  80. am335x_only - Adds the configs from the files contained in the defconfig_fragment file.
  81. 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
  82. am43x_only - Adds the configs from the files contained in the defconfig_fragment file.
  83. 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
  84. dra7xx_only - Adds the configs from the files contained in the defconfig_fragment file.
  85. 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
  86. Linaro Stable Kernel builds: (These configurations are only available on the TI LSK branch.)
  87. 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
  88. 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
  89. well as the linaro options from the linaro/configs directory
  90. 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
  91. 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
  92. well as the linaro options from the linaro/configs directory
  93. 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
  94. 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
  95. well as the linaro options from the linaro/configs directory
  96. TI Based Real Time Kernel: (These configurations are only available on the TI RT branch.)
  97. am335x_rt_only - Adds the configs from the files contained in the rt_defconfig_fragment file.
  98. 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.
  99. am43x_rt_only - Adds the configs from the files contained in the rt_defconfig_fragment file.
  100. 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.
  101. dra7xx_rt_only - Adds the configs from the files contained in the rt_defconfig_fragment file.
  102. 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.
  103. #OMAP2+ Defconfig Options
  104. These defconfig options use the omap2plus_defconfig in the arch/arm/configs directory as the base defconfig.
  105. These options do not disable any processor's or platforms but add additional features that
  106. TI Base Integrated Kernel:
  107. omap2plus_debug - Takes the omap2plus_defconfig and only adds the debug options from the debug_options.cfg.
  108. ti_omap2plus - Adds the configs from the files contained in the defconfig_fragment file.
  109. 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
  110. Linaro Stable Kernel builds: (These configurations are only available on the TI LSK branch.)
  111. 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.
  112. 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
  113. well as the linaro options from the linaro/configs directory
  114. TI Based Real Time Kernel: (These configurations are only available on the TI RT branch.)
  115. ti_rt_omap2plus - Adds the configs from the files contained in the rt_defconfig_fragment file.
  116. 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.
  117. #Keystone Defconfig Options
  118. These defconfig options use the keystone_defconfig in the arch/arm/configs directory as the base defconfig.
  119. These options do not disable any processor's or platforms but add additional features that
  120. TI Base Integrated Kernel:
  121. base_keystone_debug - Takes the keystone_defconfig and only adds the debug options from the debug_options.cfg.
  122. ti_keystone defconfig - Adds the configs from the files contained in the multi_core_defconfig_fragment file.
  123. ti_keystone_debug - Adds the configs from the files contained in the multi_core_defconfig_fragment file and
  124. adds in the debug options from the debug_options.cfg.
  125. Linaro Stable Kernel builds: (These configurations are only available on the TI LSK branch.)
  126. ti_lsk_keystone - Adds the configs from the files contained in the multi_core_defconfig_fragment file and adds in the
  127. linaro options from the linaro/configs directory
  128. ti_lsk_keystone_debug_only - Adds the configs from the files contained in the multi_core_defconfig_fragment file and adds in the
  129. debug options from the debug_options.cfg as well as the linaro options from the linaro/configs directory
  130. TI Based Real Time Kernel: (These configurations are only available on the TI RT branch.)
  131. ti_rt_keystone - Adds the configs from the files contained in the rt_defconfig_fragment file.
  132. 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.