diff options
Diffstat (limited to 'documentation/dev-manual/dev-manual-common-tasks.xml')
-rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 68 |
1 files changed, 36 insertions, 32 deletions
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 @@ | |||
3749 | <title>Building Software from an External Source</title> | 3749 | <title>Building Software from an External Source</title> |
3750 | 3750 | ||
3751 | <para> | 3751 | <para> |
3752 | By default, the OpenEmbedded build system does its work from within the | 3752 | By default, the OpenEmbedded build system uses the |
3753 | <link linkend='build-directory'>Build Directory</link>. | 3753 | <link linkend='build-directory'>Build Directory</link> to |
3754 | The build process involves fetching the source files, unpacking them, and then patching them | 3754 | build source code. |
3755 | if necessary before the build takes place. | 3755 | The build process involves fetching the source files, unpacking |
3756 | them, and then patching them if necessary before the build takes | ||
3757 | place. | ||
3756 | </para> | 3758 | </para> |
3757 | 3759 | ||
3758 | <para> | 3760 | <para> |
3759 | Situations exist where you might want to build software from source files that are external to | 3761 | Situations exist where you might want to build software from source |
3760 | and thus outside of the <link linkend='source-directory'>Source Directory</link>. | 3762 | files that are external to and thus outside of the |
3761 | For example, suppose you have a project that includes a new BSP with a heavily customized | 3763 | OpenEmbedded build system. |
3762 | kernel, a very minimal image, and some new user-space recipes. | 3764 | For example, suppose you have a project that includes a new BSP with |
3765 | a heavily customized kernel. | ||
3763 | And, you want to minimize exposing the build system to the | 3766 | And, you want to minimize exposing the build system to the |
3764 | development team so that they can focus on their project and maintain everyone's workflow | 3767 | development team so that they can focus on their project and |
3765 | as much as possible. | 3768 | maintain everyone's workflow as much as possible. |
3766 | In this case, you want a kernel source directory on the development machine where the | 3769 | In this case, you want a kernel source directory on the development |
3767 | development occurs. | 3770 | machine where the development occurs. |
3768 | You want the recipe's | 3771 | You want the recipe's |
3769 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink> | 3772 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRC_URI'><filename>SRC_URI</filename></ulink> |
3770 | variable to point to the external directory and use it as is, not copy it. | 3773 | variable to point to the external directory and use it as is, not |
3774 | copy it. | ||
3771 | </para> | 3775 | </para> |
3772 | 3776 | ||
3773 | <para> | 3777 | <para> |
3774 | To build from software that comes from an external source, all you need to do is | 3778 | To build from software that comes from an external source, all you |
3775 | change your recipe so that it inherits the | 3779 | need to do is change your recipe so that it inherits |
3776 | <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></ulink> | 3780 | <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></ulink> |
3777 | class and then sets the | 3781 | and then sets the |
3778 | <ulink url='&YOCTO_DOCS_REF_URL;#var-S'><filename>S</filename></ulink> | 3782 | <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNALSRC'><filename>EXTERNALSRC</filename></ulink> |
3779 | variable to point to your external source code. | 3783 | variable to point to your external source code. |
3780 | Here are the statements to put in your recipe: | 3784 | Here are the statements to put in your |
3785 | <filename>local.conf</filename> file: | ||
3781 | <literallayout class='monospaced'> | 3786 | <literallayout class='monospaced'> |
3782 | inherit externalsrc | 3787 | INHERIT += "externalsrc" |
3783 | S = "/some/path/to/your/package/source" | 3788 | EXTERNALSRC_pn-myrecipe = "/some/path/to/your/source/tree" |
3784 | </literallayout> | 3789 | </literallayout> |
3785 | </para> | 3790 | </para> |
3786 | 3791 | ||
3787 | <para> | 3792 | <para> |
3788 | It is important to know that the <filename>externalsrc.bbclass</filename> assumes that the | 3793 | By default, <filename>externalsrc.bbclass</filename> builds |
3789 | source directory <filename>S</filename> and the Build Directory | 3794 | the source code in a directory separate from the external source |
3790 | <ulink url='&YOCTO_DOCS_REF_URL;#var-B'><filename>B</filename></ulink> | 3795 | directory as specified by |
3791 | are different even though these directories are the same by default. | 3796 | <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNALSRC'><filename>EXTERNALSRC</filename></ulink>. |
3792 | This assumption is important because it supports building different variants of the recipe | 3797 | If you need to have the source built in the same directory in |
3793 | by using the | 3798 | which it resides, or some other nominated directory, you can set |
3794 | <ulink url='&YOCTO_DOCS_REF_URL;#var-BBCLASSEXTEND'><filename>BBCLASSEXTEND</filename></ulink> | 3799 | <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNALSRC_BUILD'><filename>EXTERNALSRC_BUILD</filename></ulink> |
3795 | variable. | 3800 | to point to that directory: |
3796 | You could allow the Build Directory to be the same as the source directory but you would | 3801 | <literallayout class='monospaced'> |
3797 | not be able to build more than one variant of the recipe. | 3802 | EXTERNALSRC_BUILD_pn-myrecipe = "/path/to/my/source/tree" |
3798 | Consequently, if you are building multiple variants of the recipe, you need to establish a | 3803 | </literallayout> |
3799 | Build Directory that is different than the Source Directory. | ||
3800 | </para> | 3804 | </para> |
3801 | </section> | 3805 | </section> |
3802 | 3806 | ||