diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 5c556b26fb..5df89a94d7 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml @@ -3749,54 +3749,58 @@ 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" +