5.11. Building Software from an External Source

By default, the OpenEmbedded build system does its work from within the Build Directory. The build process involves fetching the source files, unpacking them, and then patching them if necessary before the build takes place.

Situations exist where you might want to build software from source files that are external to and thus outside of the Source Directory. For example, suppose you have a project that includes a new BSP with a heavily customized kernel, a very minimal image, and some new user-space recipes. And, you want to minimize exposing the build system to the development team so that they can focus on their project and maintain everyone's workflow as much as possible. In this case, you want a kernel source directory on the development machine where the development occurs. You want the recipe's SRC_URI variable to point to the external directory and use it as is, not copy it.

To build from software that comes from an external source, all you need to do is change your recipe so that it inherits the externalsrc.bbclass class and then sets the S variable to point to your external source code. Here are the statements to put in your recipe:

     inherit externalsrc
     S = "/some/path/to/your/package/source"
            

It is important to know that the externalsrc.bbclass assumes that the source directory S and the Build Directory B are different even though these directories are the same by default. This assumption is important because it supports building different variants of the recipe by using the BBCLASSEXTEND variable. You could allow the Build Directory to be the same as the source directory but you would not be able to build more than one variant of the recipe. Consequently, if you are building multiple variants of the recipe, you need to establish a Build Directory that is different than the Source Directory.