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:helloworld:chapter6 [2017/10/11 19:51] – ↷ Page moved from inbox:helloworld:chapter6 to docs:guide-developer:helloworld:chapter6 tmomasdocs:guide-developer:helloworld:chapter6 [2018/12/05 04:52] (current) – [Modifying the package manifest, and testing the build] gth
Line 3: Line 3:
 ====== Migrating to use GNU make in your application ====== ====== Migrating to use GNU make in your application ======
  
-This is the sixth chapter in the “Hello, world!” for LEDE article series. At this point, you should've already accomplished the following tasks:+This is the sixth chapter in the “Hello, world!” for OpenWrt article series. At this point, you should've already accomplished the following tasks:
  
   * Commissioned your development environment   * Commissioned your development environment
Line 11: Line 11:
   * Created a local package feed for your application   * Created a local package feed for your application
   * Created a package manifest file for your application   * Created a package manifest file for your application
-  * Included your new package feed into the LEDE build system+  * Included your new package feed into the OpenWrt build system
   * Updated the package index, and installed your package from the feed   * Updated the package index, and installed your package from the feed
   * Built, deployed and tested the application on your target device   * Built, deployed and tested the application on your target device
Line 35: Line 35:
 ===== Creating a makefile ===== ===== Creating a makefile =====
  
-In order to use GNU make, it is necessary to create a makefile for our test application. When writing the makefile, you will only need to pay attention to the source files of your application; the integration into the LEDE build system is done at a later stage.+In order to use GNU make, it is necessary to create a makefile for our test application. When writing the makefile, you will only need to pay attention to the source files of your application; the integration into the OpenWrt build system is done at a later stage.
  
 Let's change to the source directory of the application and create the makefile: Let's change to the source directory of the application and create the makefile:
Line 87: Line 87:
 make make
 </code> </code>
 +
 +If you get the message ''make: Nothing to be done for `all`'' this means the executable is already up to date.  To mimic a change in the code, let's update the source file, then try the make command again:
 +
 +<code>
 +touch helloworld.c
 +make
 +</code>
 +
 This will build the application using the native compilation tools. This will build the application using the native compilation tools.
  
-You'll see that GNU make will output the steps it took to build the application and that these steps are quite similar to the manual steps you took in chapter 2. If you encounter errors during the process, then one of the most common errors is that the whitespaces at the start of the rows in the makefile are not tab characters.+You'll see that GNU ''make'' will output the steps it took to build the application and that these steps are quite similar to the manual steps you took in chapter 2. If you encounter errors during the process, then one of the most common errors is that the whitespaces at the start of the rows in the makefile are not tab characters.
  
 ===== Modifying the package manifest, and testing the build ===== ===== Modifying the package manifest, and testing the build =====
  
-Now that our makefile is created and tested, we can integrated into the package manifest. To do so, we modify the build instructions in the package manifest to contain the necessary instructions. This file is located in ''/home/buildbot/mypackages/examples/helloworld/'' directory.+Now that our package'makefile is created and tested, we can integrate it into the package manifest. To do so, we modify the build instructions in the package manifest to contain the necessary instructions. This file is located in ''/home/buildbot/mypackages/examples/helloworld/'' directory.  Open this particular ''Makefile'' in your preferred editor.
  
 When migrating to use the GNU make tool, you might not need to use hard tabs anymore. However, I find it good practise to use a hard tab at the start of each command row. When using the multi-line separator '\', the adjacent lines do not need hard tabs. When migrating to use the GNU make tool, you might not need to use hard tabs anymore. However, I find it good practise to use a hard tab at the start of each command row. When using the multi-line separator '\', the adjacent lines do not need hard tabs.
Line 106: Line 114:
 </code> </code>
  
-After modifying your package manifest, test the package build process again from the LEDE build system's folder:+After modifying your package manifest, test the package build process again from the OpenWrt build system's folder:
 <code> <code>
 cd /home/buildbot/source cd /home/buildbot/source
Line 113: Line 121:
 This command performs both package clean and compile in a one-liner. This command performs both package clean and compile in a one-liner.
  
-If you encounter errors when building it GNU make, it is sometimes necessary to manually update and install the feeds. Perform the same steps that we did in chapter 4:+If you encounter errors when building it using GNU make, it is sometimes necessary to manually update and install the feeds. Perform the same steps that we did in chapter 4:
 <code> <code>
 cd /home/buildbot/source cd /home/buildbot/source
Line 119: Line 127:
 ./scripts/feeds install -a -p mypackages ./scripts/feeds install -a -p mypackages
 </code> </code>
 +
 +If still having issues, ensure your source directory (/home/buildbot/helloworld) is cleaned of any *.o files or final executables built for your host rather than OpenWRT (only .c and Makefile).
  
 ===== Conclusion ===== ===== Conclusion =====
  
 In this lengthy chapter, we modified our original application to use GNU make instead of direct compilation commands. We wrote a simple makefile to evaluate all source code files in the directory, compile them, and link the generated object files into an executable. We then tested the makefile using native compilation tools to ensure it runs properly, and finally modified our package manifest to use the GNU make build process instead of the hard-coded compilation commands. In this lengthy chapter, we modified our original application to use GNU make instead of direct compilation commands. We wrote a simple makefile to evaluate all source code files in the directory, compile them, and link the generated object files into an executable. We then tested the makefile using native compilation tools to ensure it runs properly, and finally modified our package manifest to use the GNU make build process instead of the hard-coded compilation commands.
  • Last modified: 2017/10/11 19:51
  • by tmomas