Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
docs:guide-developer:toolchain:use-buildsystem [2023/09/16 02:32] – format comment into two lines slhdocs:guide-developer:toolchain:use-buildsystem [2024/10/16 18:12] (current) – [Build system usage] jannoke
Line 9: Line 9:
 </WRAP> </WRAP>
  
-After [[docs:guide-developer:toolchain:install-buildsystem|setting up]] a build system, these are typical build steps:+After [[docs:guide-developer:toolchain:install-buildsystem|installing your build system's prerequisites]], these are typical build steps:
  
 <code bash> <code bash>
Line 20: Line 20:
 git branch -a git branch -a
 git tag git tag
-git checkout v21.02.3+git checkout v23.05.5
  
 # Update the feeds # Update the feeds
Line 100: Line 100:
   - Create a dir: ''mkdir -p <buildroot>/my_packages/<section>/<category>/<package_name>''.\\ Replace the ''<package_name>'' with the name of your package.\\ e.g. ''mkdir -p my_packages/net/network/rpcbind''.\\ The section and category can be found in the ''Makefile''.   - Create a dir: ''mkdir -p <buildroot>/my_packages/<section>/<category>/<package_name>''.\\ Replace the ''<package_name>'' with the name of your package.\\ e.g. ''mkdir -p my_packages/net/network/rpcbind''.\\ The section and category can be found in the ''Makefile''.
   - Write a Makefile or download one ''Makefile'' from another package, look at samples on github.\\ Edit your Makefile and add necessary files, sources...\\ More: [[docs:guide-developer:packages|Creating packages]] & [[docs:guide-developer:helloworld:chapter3|Creating a package from your application]]\\   - Write a Makefile or download one ''Makefile'' from another package, look at samples on github.\\ Edit your Makefile and add necessary files, sources...\\ More: [[docs:guide-developer:packages|Creating packages]] & [[docs:guide-developer:helloworld:chapter3|Creating a package from your application]]\\
-  - Append a line with your custom feed to ''feeds.conf.default'':\\ ''src-link my_packages <buildroot>/my_packages''\\ Replace the ''<buildroot>'' with cloned openwrt sources directory e.g. ''~/openwrt''\\ Move the line with your custom feed above standard feeds to override them.\\+  - Append a line with your custom feed to ''feeds.conf.default'':\\ ''src-link my_packages <buildroot>/my_packages''\\ Replace the ''<buildroot>'' with cloned openwrt sources directory e.g. ''/home///user///openwrt'' (the path must be absolute).\\ Move the line with your custom feed above standard feeds to override them.\\
   - Now run: ''./scripts/feeds update -a; ./scripts/feeds install <package_name>''\\ If you are doing this to resolve a dependency you can run ''./scripts/feeds install <package_name>'' one more time and you should notice the dependency has been resolved.\\   - Now run: ''./scripts/feeds update -a; ./scripts/feeds install <package_name>''\\ If you are doing this to resolve a dependency you can run ''./scripts/feeds install <package_name>'' one more time and you should notice the dependency has been resolved.\\
-  - Build your package.\\ Select it in the menu of ''Make menuconfig''\\ Build it with ''make package/my_package/{clean,compile}''\\ More: [[docs:guide-developer:toolchain:single.package|Building a single package]]\\+  - Build your package.\\ Select it in the menu of ''Make menuconfig''\\ Build it with ''make package///my_package_name///{clean,compile}''\\ More: [[docs:guide-developer:toolchain:single.package|Building a single package]]\\
  
 ===== Selecting code revision ===== ===== Selecting code revision =====
Line 293: Line 293:
 :!: Also you won't be able to install kernel packages from the official repositories when you make changes here. :!: Also you won't be able to install kernel packages from the official repositories when you make changes here.
  
-While you won't typically need to do this, you can do it:+While you won't typically need to do this, first define the target, subtarget, and device in a ''.config'', for example: 
 +<code bash> 
 +CONFIG_TARGET_x86=y 
 +CONFIG_TARGET_x86_64=y 
 +CONFIG_TARGET_x86_64_DEVICE_generic=y 
 +</code>
  
 +Now run the following where subtarget is not a variable, it is a literal and it references the ''.config'' we just created (in this case x86/64):
 <code bash> <code bash>
 make kernel_menuconfig CONFIG_TARGET=subtarget make kernel_menuconfig CONFIG_TARGET=subtarget
Line 429: Line 435:
 make -i ... make -i ...
 </code> </code>
 +
 +
 +=== Make a summary information of generated image ===
 +<code bash>
 +make json_overview_image_info
 +</code>
 +Generate a summary of the image (including default packages, type of target, etc... ) in JSON format. The output is available in ''<BUILD_DIR>/profiles.json''.
 +
 +
 +=== Calculate checksum for generated files ===
 +<code bash>
 +make checksum
 +</code>
 +The following action will take place: a checksum will be computed and saved for the output files. This checksum will then be stored in the '<BIN_DIR>/sha256sums' .
  
 ===== Locating images ===== ===== Locating images =====
Line 486: Line 506:
 :!: In addition to all else, this will **erase your build configuration ''<buildroot>/.config''**. :!: In addition to all else, this will **erase your build configuration ''<buildroot>/.config''**.
 Use only if you need a "factory reset" of the build system! Use only if you need a "factory reset" of the build system!
 +
  
 ==== Selective cleanup ==== ==== Selective cleanup ====
  • Last modified: 2023/09/16 02:32
  • by slh