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.
+ By default, the OpenEmbedded build system uses the
+ Build Directory to
+ build source code.
+ 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.
+ Situations exist where you might want to build software from source
+ files that are external to and thus outside of the
+ OpenEmbedded build system.
+ For example, suppose you have a project that includes a new BSP with
+ a heavily customized kernel.
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.
+ 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.
+ 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
+ To build from software that comes from an external source, all you
+ need to do is change your recipe so that it inherits
externalsrc.bbclass
- class and then sets the
- S
+ and then sets the
+ EXTERNALSRC
variable to point to your external source code.
- Here are the statements to put in your recipe:
+ Here are the statements to put in your
+ local.conf file:
- inherit externalsrc
- S = "/some/path/to/your/package/source"
+ INHERIT += "externalsrc"
+ EXTERNALSRC_pn-myrecipe = "/some/path/to/your/source/tree"
- 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.
+ By default, externalsrc.bbclass builds
+ the source code in a directory separate from the external source
+ directory as specified by
+ EXTERNALSRC.
+ If you need to have the source built in the same directory in
+ which it resides, or some other nominated directory, you can set
+ EXTERNALSRC_BUILD
+ to point to that directory:
+
+ EXTERNALSRC_BUILD_pn-myrecipe = "/path/to/my/source/tree"
+