diff --git a/documentation/ref-manual/ref-structure.xml b/documentation/ref-manual/ref-structure.xml
new file mode 100644
index 0000000..48e3921
--- /dev/null
+++ b/documentation/ref-manual/ref-structure.xml
@@ -0,0 +1,1153 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
+
+<chapter id='ref-structure'>
+
+<title>Source Directory Structure</title>
+
+<para>
+    The <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink> consists of several components.
+    Understanding them and knowing where they are located is key to using the Yocto Project well.
+    This chapter describes the Source Directory and gives information about the various
+    files and directories.
+</para>
+
+<para>
+    For information on how to establish a local Source Directory on your development system, see the
+    "<ulink url='&YOCTO_DOCS_DEV_URL;#getting-setup'>Getting Set Up</ulink>"
+    section in the Yocto Project Development Manual.
+</para>
+
+<note>
+    The OpenEmbedded build system does not support file or directory names that
+    contain spaces.
+    Be sure that the Source Directory you use does not contain these types
+    of names.
+</note>
+
+<section id='structure-core'>
+    <title>Top-Level Core Components</title>
+
+    <para>
+        This section describes the top-level components of the
+        <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+    </para>
+
+    <section id='structure-core-bitbake'>
+        <title><filename>bitbake/</filename></title>
+
+        <para>
+            This directory includes a copy of BitBake for ease of use.
+            The copy usually matches the current stable BitBake release from
+            the BitBake project.
+            BitBake, a
+            <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
+            interpreter, reads the Yocto Project Metadata and runs the tasks
+            defined by that data.
+            Failures are usually from the Metadata and not from BitBake itself.
+            Consequently, most users do not need to worry about BitBake.
+        </para>
+
+        <para>
+            When you run the <filename>bitbake</filename> command, the
+            main BitBake executable, which resides in the
+            <filename>bitbake/bin/</filename> directory, starts.
+            Sourcing an environment setup script (e.g.
+            <link linkend="structure-core-script"><filename>&OE_INIT_FILE;</filename></link>
+            or
+            <link linkend="structure-memres-core-script"><filename>oe-init-build-env-memres</filename></link>)
+            places the <filename>scripts</filename> and
+            <filename>bitbake/bin</filename> directories (in that order) into
+            the shell's <filename>PATH</filename> environment variable.
+        </para>
+
+        <para>
+            For more information on BitBake, see the
+            <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>.
+        </para>
+    </section>
+
+    <section id='structure-core-build'>
+        <title><filename>build/</filename></title>
+
+        <para>
+            This directory contains user configuration files and the output
+            generated by the OpenEmbedded build system in its standard configuration where
+            the source tree is combined with the output.
+            The <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+            is created initially when you <filename>source</filename>
+            the OpenEmbedded build environment setup script
+            (i.e.
+            <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
+            or
+            <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>).
+        </para>
+
+        <para>
+            It is also possible to place output and configuration
+            files in a directory separate from the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
+            by providing a directory name when you <filename>source</filename>
+            the setup script.
+            For information on separating output from your local
+            Source Directory files, see the
+            "<link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
+            and
+            "<link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>"
+            sections.
+        </para>
+    </section>
+
+    <section id='handbook'>
+        <title><filename>documentation/</filename></title>
+
+        <para>
+            This directory holds the source for the Yocto Project documentation
+            as well as templates and tools that allow you to generate PDF and HTML
+            versions of the manuals.
+            Each manual is contained in a sub-folder.
+            For example, the files for this manual reside in
+            the <filename>ref-manual/</filename> directory.
+        </para>
+    </section>
+
+    <section id='structure-core-meta'>
+        <title><filename>meta/</filename></title>
+
+        <para>
+            This directory contains the OpenEmbedded Core metadata.
+            The directory holds recipes, common classes, and machine
+            configuration for emulated targets (<filename>qemux86</filename>,
+            <filename>qemuarm</filename>, and so forth.)
+        </para>
+    </section>
+
+    <section id='structure-core-meta-yocto'>
+        <title><filename>meta-yocto/</filename></title>
+
+        <para>
+            This directory contains the configuration for the Poky
+            reference distribution.
+        </para>
+    </section>
+
+    <section id='structure-core-meta-yocto-bsp'>
+        <title><filename>meta-yocto-bsp/</filename></title>
+
+        <para>
+            This directory contains the Yocto Project reference
+            hardware Board Support Packages (BSPs).
+            For more information on BSPs, see the
+            <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support
+            Package (BSP) Developer's Guide</ulink>.
+        </para>
+    </section>
+
+    <section id='structure-meta-selftest'>
+        <title><filename>meta-selftest/</filename></title>
+
+        <para>
+            This directory adds additional recipes and append files
+            used by the OpenEmbedded selftests to verify the behavior
+            of the build system.
+        </para>
+
+        <para>
+            You do not have to add this layer to your
+            <filename>bblayers.conf</filename> file unless you want to run the
+            selftests.
+        </para>
+    </section>
+
+    <section id='structure-meta-skeleton'>
+        <title><filename>meta-skeleton/</filename></title>
+
+        <para>
+            This directory contains template recipes for BSP and kernel development.
+        </para>
+    </section>
+
+    <section id='structure-core-scripts'>
+        <title><filename>scripts/</filename></title>
+
+        <para>
+            This directory contains various integration scripts that implement
+            extra functionality in the Yocto Project environment (e.g. QEMU scripts).
+            The <link linkend="structure-core-script"><filename>&OE_INIT_FILE;</filename></link>
+            and
+            <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>
+            scripts append this directory to the shell's
+            <filename>PATH</filename> environment variable.
+        </para>
+
+        <para>
+            The <filename>scripts</filename> directory has useful scripts that assist in contributing
+            back to the Yocto Project, such as <filename>create-pull-request</filename> and
+            <filename>send-pull-request</filename>.
+        </para>
+    </section>
+
+    <section id='structure-core-script'>
+        <title><filename>&OE_INIT_FILE;</filename></title>
+
+        <para>
+            This script is one of two scripts that set up the OpenEmbedded build
+            environment.
+            For information on the other script, see the
+            "<link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>"
+            section.
+        </para>
+
+        <para>
+            Running this script with the <filename>source</filename> command in
+            a shell makes changes to <filename>PATH</filename> and sets other
+            core BitBake variables based on the current working directory.
+            You need to run an environment setup script before running BitBake
+            commands.
+            The script uses other scripts within the
+            <filename>scripts</filename> directory to do the bulk of the work.
+        </para>
+
+        <para>
+            When you run this script, your Yocto Project environment is set
+            up, a
+            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+            is created, your working directory becomes the Build Directory,
+            and you are presented with a list of common BitBake targets.
+            Here is an example:
+            <literallayout class='monospaced'>
+     $ source oe-init-build-env
+
+     ### Shell environment set up for builds. ###
+
+     You can now run 'bitbake &lt;target&gt;'
+
+     Common targets are:
+         core-image-minimal
+         core-image-sato
+         meta-toolchain
+         adt-installer
+         meta-ide-support
+
+     You can also run generated qemu images with a command like 'runqemu qemux86'
+            </literallayout>
+            The script gets its default list of common targets from the
+            <filename>conf-notes.txt</filename> file, which is found in the
+            <filename>meta-yocto</filename> directory within the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+            Should you have custom distributions, it is very easy to modify
+            this configuration file to include your targets for your
+            distribution.
+            See the
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-custom-template-configuration-directory'>Creating a Custom Template Configuration Directory</ulink>"
+            section in the Yocto Project Development Manual for more
+            information.
+        </para>
+
+        <para>
+            By default, running this script without a
+            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+            argument creates the <filename>build</filename> directory
+            in your current working directory.
+            If you provide a Build Directory argument when you
+            <filename>source</filename> the script, you direct the OpenEmbedded
+            build system to create a Build Directory of your choice.
+            For example, the following command creates a Build Directory named
+            <filename>mybuilds</filename> that is outside of the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>:
+            <literallayout class='monospaced'>
+     $ source &OE_INIT_FILE; ~/mybuilds
+            </literallayout>
+            The OpenEmbedded build system uses the template configuration
+            files, which are found by default in the
+            <filename>meta-yocto/conf</filename> directory in the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+            See the
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-custom-template-configuration-directory'>Creating a Custom Template Configuration Directory</ulink>"
+            section in the Yocto Project Development Manual for more
+            information.
+            <note>
+                The OpenEmbedded build system does not support file or directory names that
+                contain spaces.
+                If you attempt to run the <filename>&OE_INIT_FILE;</filename> script
+                from a Source Directory that contains spaces in either the filenames
+                or directory names, the script returns an error indicating no such
+                file or directory.
+                Be sure to use a Source Directory free of names containing spaces.
+            </note>
+        </para>
+    </section>
+
+    <section id='structure-memres-core-script'>
+        <title><filename>oe-init-build-env-memres</filename></title>
+
+        <para>
+            This script is one of two scripts that set up the OpenEmbedded
+            build environment.
+            Aside from setting up the environment, this script starts a
+            memory-resident BitBake server.
+            For information on the other setup script, see the
+            "<link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>"
+            section.
+        </para>
+
+        <para>
+            Memory-resident BitBake resides in memory until you specifically
+            remove it using the following BitBake command:
+            <literallayout class='monospaced'>
+     $ bitbake -m
+            </literallayout>
+        </para>
+
+        <para>
+            Running this script with the <filename>source</filename> command in
+            a shell makes changes to <filename>PATH</filename> and sets other
+            core BitBake variables based on the current working directory.
+            One of these variables is the
+            <link linkend='var-BBSERVER'><filename>BBSERVER</filename></link>
+            variable, which allows the OpenEmbedded build system to locate
+            the server that is running BitBake.
+        </para>
+
+        <para>
+            You need to run an environment setup script before using BitBake
+            commands.
+            Following is the script syntax:
+            <literallayout class='monospaced'>
+     $ source oe-init-build-env-memres <replaceable>port_number</replaceable> <replaceable>build_dir</replaceable>
+            </literallayout>
+            Following are some considerations when sourcing this script:
+            <itemizedlist>
+                <listitem><para>
+                    The script uses other scripts within the
+                    <filename>scripts</filename> directory to do the bulk of
+                    the work.
+                    </para></listitem>
+                <listitem><para>
+                    If you do not provide a port number with the script, the
+                    BitBake server starts at a randomly selected port.
+                    </para></listitem>
+                <listitem><para>
+                    The script's parameters are positionally dependent.
+                    Consequently, you cannot run the script and provide a
+                    <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+                    name without also providing a port number.
+                    In other words, the following syntax is illegal:
+                    <literallayout class='monospaced'>
+     $ source oe-initbuild-env-memres <replaceable>build_dir</replaceable>
+                    </literallayout>
+                    <note>
+                        The previous restriction might be resolved in the
+                        future.
+                        See
+                        <ulink url='https://bugzilla.yoctoproject.org/show_bug.cgi?id=7555'>Bug 7555</ulink>
+                        for more information.
+                    </note>
+                    </para></listitem>
+            </itemizedlist>
+        </para>
+
+        <para>
+            When you run this script, your Yocto Project environment is set
+            up, a Build Directory is created, your working directory becomes
+            the Build Directory, and you are presented with a list of common
+            BitBake targets.
+            Here is an example:
+            <literallayout class='monospaced'>
+     $ source oe-init-build-env-memres
+     No port specified, using dynamically selected port
+
+     ### Shell environment set up for builds. ###
+
+     You can now run 'bitbake &lt;target&gt;'
+
+     Common targets are:
+         core-image-minimal
+         core-image-sato
+         meta-toolchain
+         adt-installer
+         meta-ide-support
+
+     You can also run generated qemu images with a command like 'runqemu qemux86'
+     Bitbake server address: 127.0.0.1, server port: 53995
+     Bitbake server started on demand as needed, use bitbake -m to shut it down
+            </literallayout>
+            The script gets its default list of common targets from the
+            <filename>conf-notes.txt</filename> file, which is found in the
+            <filename>meta-yocto</filename> directory within the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+            Should you have custom distributions, it is very easy to modify
+            this configuration file to include your targets for your
+            distribution.
+            See the
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-custom-template-configuration-directory'>Creating a Custom Template Configuration Directory</ulink>"
+            section in the Yocto Project Development Manual for more
+            information.
+        </para>
+
+        <para>
+            By default, running this script without a
+            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+            argument creates a build directory named
+            <filename>build</filename>.
+            If you provide a Build Directory argument and port number when you
+            <filename>source</filename> the script, the Build Directory is
+            created using that name.
+            For example, the following command starts the BitBake server using
+            port 53995 and creates a Build Directory named
+            <filename>mybuilds</filename> that is outside of the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>:
+            <literallayout class='monospaced'>
+     $ source oe-init-build-env-memres 53995 ~/mybuilds
+            </literallayout>
+            The <filename>oe-init-build-env-memres</filename> script starts a
+            memory resident BitBake server.
+            This BitBake instance uses the
+            <filename>bitbake-cookerdaemon.log</filename> file, which is
+            located in the Build Directory.
+        </para>
+
+        <para>
+            The OpenEmbedded build system uses the template configuration
+            files, which are found by default in the
+            <filename>meta-yocto/conf</filename> directory in the
+            <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+            See the
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-custom-template-configuration-directory'>Creating a Custom Template Configuration Directory</ulink>"
+            section in the Yocto Project Development Manual for more
+            information.
+            <note>
+                The OpenEmbedded build system does not support file or
+                directory names that contain spaces.
+                If you attempt to run the
+                <filename>oe-init-build-env-memres</filename> script
+                from a Source Directory that contains spaces in either the
+                filenames or directory names, the script returns an error
+                indicating no such file or directory.
+                Be sure to use a Source Directory free of names containing
+                spaces.
+            </note>
+        </para>
+    </section>
+
+    <section id='structure-basic-top-level'>
+        <title><filename>LICENSE, README, and README.hardware</filename></title>
+
+        <para>
+            These files are standard top-level files.
+        </para>
+    </section>
+</section>
+
+<section id='structure-build'>
+    <title>The Build Directory - <filename>build/</filename></title>
+
+    <para>
+        The OpenEmbedded build system creates the
+        <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
+        when you run one of the build environment setup scripts (i.e.
+        <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
+        or
+        <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>).
+    </para>
+
+    <para>
+        If you do not give the Build Directory a specific name when you run
+        a setup script, the name defaults to <filename>build</filename>.
+    </para>
+
+    <para>
+        The
+        <link linkend='var-TOPDIR'><filename>TOPDIR</filename></link> variable
+        points to the Build Directory.
+    </para>
+
+    <section id='structure-build-buildhistory'>
+        <title><filename>build/buildhistory</filename></title>
+
+        <para>
+            The OpenEmbedded build system creates this directory when you
+            enable the build history feature.
+            The directory tracks build information into image, packages, and
+            SDK subdirectories.
+            For information on the build history feature, see the
+            "<link linkend='maintaining-build-output-quality'>Maintaining Build Output Quality</link>"
+            section.
+        </para>
+    </section>
+
+    <section id='structure-build-conf-local.conf'>
+        <title><filename>build/conf/local.conf</filename></title>
+
+        <para>
+            This configuration file contains all the local user configurations
+            for your build environment.
+            The <filename>local.conf</filename> file contains documentation on
+            the various configuration options.
+            Any variable set here overrides any variable set elsewhere within
+            the environment unless that variable is hard-coded within a file
+            (e.g. by using '=' instead of '?=').
+            Some variables are hard-coded for various reasons but these
+            variables are relatively rare.
+        </para>
+
+        <para>
+            Edit this file to set the
+            <filename><link linkend='var-MACHINE'>MACHINE</link></filename>
+            for which you want to build, which package types you wish to use
+            (<link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>),
+            and the location from which you want to access downloaded files
+            (<filename><link linkend='var-DL_DIR'>DL_DIR</link></filename>).
+        </para>
+
+        <para>
+            If <filename>local.conf</filename> is not present when you
+            start the build, the OpenEmbedded build system creates it from
+            <filename>local.conf.sample</filename> when
+            you <filename>source</filename> the top-level build environment
+            setup script (i.e.
+            <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
+            or
+            <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>).
+        </para>
+
+        <para>
+            The source <filename>local.conf.sample</filename> file used
+            depends on the <filename>$TEMPLATECONF</filename> script variable,
+            which defaults to <filename>meta-yocto/conf</filename>
+            when you are building from the Yocto Project development
+            environment and defaults to <filename>meta/conf</filename> when
+            you are building from the OpenEmbedded Core environment.
+            Because the script variable points to the source of the
+            <filename>local.conf.sample</filename> file, this implies that
+            you can configure your build environment from any layer by setting
+            the variable in the top-level build environment setup script as
+            follows:
+            <literallayout class='monospaced'>
+     TEMPLATECONF=<replaceable>your_layer</replaceable>/conf
+            </literallayout>
+            Once the build process gets the sample file, it uses
+            <filename>sed</filename> to substitute final
+            <filename>${</filename><link linkend='var-OEROOT'><filename>OEROOT</filename></link><filename>}</filename>
+            values for all <filename>##OEROOT##</filename> values.
+            <note>
+                You can see how the <filename>TEMPLATECONF</filename> variable
+                is used by looking at the
+                <filename>scripts/oe-setup-builddir</filename> script in the
+                <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+                You can find the Yocto Project version of the
+                <filename>local.conf.sample</filename> file in the
+                <filename>meta-yocto/conf</filename> directory.
+            </note>
+        </para>
+    </section>
+
+    <section id='structure-build-conf-bblayers.conf'>
+        <title><filename>build/conf/bblayers.conf</filename></title>
+
+        <para>
+            This configuration file defines
+            <ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>layers</ulink>,
+            which are directory trees, traversed (or walked) by BitBake.
+            The <filename>bblayers.conf</filename> file uses the
+            <link linkend='var-BBLAYERS'><filename>BBLAYERS</filename></link>
+            variable to list the layers BitBake tries to find.
+        </para>
+
+        <para>
+            If <filename>bblayers.conf</filename> is not present when you
+            start the build, the OpenEmbedded build system creates it from
+            <filename>bblayers.conf.sample</filename> when
+            you <filename>source</filename> the top-level build environment
+            setup script (i.e.
+            <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
+            or
+            <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>).
+        </para>
+
+        <para>
+            The source <filename>bblayers.conf.sample</filename> file used
+            depends on the <filename>$TEMPLATECONF</filename> script variable,
+            which defaults to <filename>meta-yocto/conf</filename>
+            when you are building from the Yocto Project development
+            environment and defaults to <filename>meta/conf</filename> when
+            you are building from the OpenEmbedded Core environment.
+            Because the script variable points to the source of the
+            <filename>bblayers.conf.sample</filename> file, this implies that
+            you can base your build from any layer by setting the variable in
+            the top-level build environment setup script as follows:
+            <literallayout class='monospaced'>
+     TEMPLATECONF=<replaceable>your_layer</replaceable>/conf
+            </literallayout>
+            Once the build process gets the sample file, it uses
+            <filename>sed</filename> to substitute final
+            <filename>${</filename><link linkend='var-OEROOT'><filename>OEROOT</filename></link><filename>}</filename>
+            values for all <filename>##OEROOT##</filename> values.
+            <note>
+                You can see how the <filename>TEMPLATECONF</filename> variable
+                <filename>scripts/oe-setup-builddir</filename> script in the
+                <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
+                You can find the Yocto Project version of the
+                <filename>bblayers.conf.sample</filename> file in the
+                <filename>meta-yocto/conf</filename> directory.
+            </note>
+        </para>
+    </section>
+
+    <section id='structure-build-conf-sanity_info'>
+        <title><filename>build/conf/sanity_info</filename></title>
+
+        <para>
+            This file indicates the state of the sanity checks and is created
+            during the build.
+        </para>
+    </section>
+
+    <section id='structure-build-downloads'>
+        <title><filename>build/downloads/</filename></title>
+
+        <para>
+            This directory contains downloaded upstream source tarballs.
+            You can reuse the directory for multiple builds or move
+            the directory to another location.
+            You can control the location of this directory through the
+            <filename><link linkend='var-DL_DIR'>DL_DIR</link></filename> variable.
+        </para>
+    </section>
+
+    <section id='structure-build-sstate-cache'>
+        <title><filename>build/sstate-cache/</filename></title>
+
+        <para>
+            This directory contains the shared state cache.
+            You can reuse the directory for multiple builds or move
+            the directory to another location.
+            You can control the location of this directory through the
+            <filename><link linkend='var-SSTATE_DIR'>SSTATE_DIR</link></filename> variable.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp'>
+        <title><filename>build/tmp/</filename></title>
+
+        <para>
+            The OpenEmbedded build system creates and uses this directory
+            for all the build system's output.
+            The
+            <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
+            variable points to this directory.
+        </para>
+
+        <para>
+            BitBake creates this directory if it does not exist.
+            As a last resort, to clean up a build and start it from scratch
+            (other than the downloads), you can remove everything in the
+            <filename>tmp</filename> directory or get rid of the
+            directory completely.
+            If you do, you should also completely remove the
+            <filename>build/sstate-cache</filename> directory.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-buildstats'>
+        <title><filename>build/tmp/buildstats/</filename></title>
+
+        <para>
+            This directory stores the build statistics.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-cache'>
+        <title><filename>build/tmp/cache/</filename></title>
+
+        <para>
+            When BitBake parses the metadata, it creates a cache file of the result that can
+            be used when subsequently running commands.
+            BitBake stores these results here on a per-machine basis.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-deploy'>
+        <title><filename>build/tmp/deploy/</filename></title>
+
+        <para>
+            This directory contains any "end result" output from the
+            OpenEmbedded build process.
+            The <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>
+            variable points to this directory.
+            For more detail on the contents of the <filename>deploy</filename>
+            directory, see the
+            "<link linkend='images-dev-environment'>Images</link>" and
+            "<link linkend='sdk-dev-environment'>Application Development SDK</link>"
+            sections.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-deploy-deb'>
+        <title><filename>build/tmp/deploy/deb/</filename></title>
+
+        <para>
+            This directory receives any <filename>.deb</filename> packages produced by
+            the build process.
+            The packages are sorted into feeds for different architecture types.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-deploy-rpm'>
+        <title><filename>build/tmp/deploy/rpm/</filename></title>
+
+        <para>
+            This directory receives any <filename>.rpm</filename> packages produced by
+            the build process.
+            The packages are sorted into feeds for different architecture types.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-deploy-ipk'>
+        <title><filename>build/tmp/deploy/ipk/</filename></title>
+
+        <para>
+            This directory receives <filename>.ipk</filename> packages produced by
+            the build process.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-deploy-licenses'>
+        <title><filename>build/tmp/deploy/licenses/</filename></title>
+
+        <para>
+            This directory receives package licensing information.
+            For example, the directory contains sub-directories for <filename>bash</filename>,
+            <filename>busybox</filename>, and <filename>glibc</filename> (among others) that in turn
+            contain appropriate <filename>COPYING</filename> license files with other licensing information.
+            For information on licensing, see the
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#maintaining-open-source-license-compliance-during-your-products-lifecycle'>Maintaining Open Source License Compliance During Your Product's Lifecycle</ulink>"
+            section.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-deploy-images'>
+        <title><filename>build/tmp/deploy/images/</filename></title>
+
+        <para>
+            This directory receives complete filesystem images.
+            If you want to flash the resulting image from a build onto a device, look here for the image.
+        </para>
+
+        <para>
+            Be careful when deleting files in this directory.
+            You can safely delete old images from this directory (e.g.
+            <filename>core-image-*</filename>, <filename>hob-image-*</filename>,
+            etc.).
+            However, the kernel (<filename>*zImage*</filename>, <filename>*uImage*</filename>, etc.),
+            bootloader and other supplementary files might be deployed here prior to building an
+            image.
+            Because these files are not directly produced from the image, if you
+            delete them they will not be automatically re-created when you build the image again.
+        </para>
+
+        <para>
+            If you do accidentally delete files here, you will need to force them to be
+            re-created.
+            In order to do that, you will need to know the target that produced them.
+            For example, these commands rebuild and re-create the kernel files:
+            <literallayout class='monospaced'>
+     $ bitbake -c clean virtual/kernel
+     $ bitbake virtual/kernel
+            </literallayout>
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-deploy-sdk'>
+        <title><filename>build/tmp/deploy/sdk/</filename></title>
+
+        <para>
+            The OpenEmbedded build system creates this directory to hold
+            toolchain installer scripts, which when executed, install the
+            sysroot that matches your target hardware.
+            You can find out more about these installers in the
+            "<ulink url='&YOCTO_DOCS_ADT_URL;#optionally-building-a-toolchain-installer'>Optionally Building a Toolchain Installer</ulink>"
+            section in the Yocto Project Application Developer's Guide.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-sstate-control'>
+        <title><filename>build/tmp/sstate-control/</filename></title>
+
+        <para>
+            The OpenEmbedded build system uses this directory for the
+            shared state manifest files.
+            The shared state code uses these files to record the files
+            installed by each sstate task so that the files can be removed
+            when cleaning the recipe or when a newer version is about to
+            be installed.
+            The build system also uses the manifests to detect and produce
+            a warning when files from one task are overwriting those from
+            another.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-sysroots'>
+        <title><filename>build/tmp/sysroots/</filename></title>
+
+        <para>
+            This directory contains shared header files and libraries as well as other shared
+            data.
+            Packages that need to share output with other packages do so within this directory.
+            The directory is subdivided by architecture so multiple builds can run within
+            the one Build Directory.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-stamps'>
+        <title><filename>build/tmp/stamps/</filename></title>
+
+        <para>
+            This directory holds information that BitBake uses for accounting purposes
+            to track what tasks have run and when they have run.
+            The directory is sub-divided by architecture, package name, and
+            version.
+            Following is an example:
+            <literallayout class='monospaced'>
+     stamps/all-poky-linux/distcc-config/1.0-r0.do_build-2fdd....2do
+            </literallayout>
+            Although the files in the directory are empty of data,
+            BitBake uses the filenames and timestamps for tracking purposes.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-log'>
+        <title><filename>build/tmp/log/</filename></title>
+
+        <para>
+            This directory contains general logs that are not otherwise placed using the
+            package's <filename><link linkend='var-WORKDIR'>WORKDIR</link></filename>.
+            Examples of logs are the output from the
+            <filename>do_check_pkg</filename> or
+            <filename>do_distro_check</filename> tasks.
+            Running a build does not necessarily mean this directory is created.
+        </para>
+    </section>
+
+    <section id='structure-build-tmp-work'>
+        <title><filename>build/tmp/work/</filename></title>
+
+        <para>
+            This directory contains architecture-specific work sub-directories
+            for packages built by BitBake.
+            All tasks execute from the appropriate work directory.
+            For example, the source for a particular package is unpacked,
+            patched, configured and compiled all within its own work directory.
+            Within the work directory, organization is based on the package group
+            and version for which the source is being compiled
+            as defined by the
+            <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>.
+        </para>
+
+        <para>
+            It is worth considering the structure of a typical work directory.
+            As an example, consider <filename>linux-yocto-kernel-3.0</filename>
+            on the machine <filename>qemux86</filename>
+            built within the Yocto Project.
+            For this package, a work directory of
+            <filename>tmp/work/qemux86-poky-linux/linux-yocto/3.0+git1+&lt;.....&gt;</filename>,
+            referred to as the
+            <filename><link linkend='var-WORKDIR'>WORKDIR</link></filename>, is created.
+            Within this directory, the source is unpacked to
+            <filename>linux-qemux86-standard-build</filename> and then patched by Quilt.
+            (See the
+            "<ulink url='&YOCTO_DOCS_DEV_URL;#using-a-quilt-workflow'>Using Quilt in Your Workflow</ulink>"
+            section in the Yocto Project Development Manual for more information.)
+            Within the <filename>linux-qemux86-standard-build</filename> directory,
+            standard Quilt directories <filename>linux-3.0/patches</filename>
+            and <filename>linux-3.0/.pc</filename> are created,
+            and standard Quilt commands can be used.
+        </para>
+
+        <para>
+            There are other directories generated within <filename>WORKDIR</filename>.
+            The most important directory is <filename>WORKDIR/temp/</filename>,
+            which has log files for each task (<filename>log.do_*.pid</filename>)
+            and contains the scripts BitBake runs for each task
+            (<filename>run.do_*.pid</filename>).
+            The <filename>WORKDIR/image/</filename> directory is where "make
+            install" places its output that is then split into sub-packages
+            within <filename>WORKDIR/packages-split/</filename>.
+        </para>
+    </section>
+
+    <section id='structure-build-work-shared'>
+        <title><filename>build/tmp/work-shared/</filename></title>
+
+        <para>
+            For efficiency, the OpenEmbedded build system creates and uses
+            this directory to hold recipes that share a work directory with
+            other recipes.
+            In practice, this is only used for <filename>gcc</filename>
+            and its variants (e.g. <filename>gcc-cross</filename>,
+            <filename>libgcc</filename>, <filename>gcc-runtime</filename>,
+            and so forth).
+        </para>
+    </section>
+</section>
+
+<section id='structure-meta'>
+    <title>The Metadata - <filename>meta/</filename></title>
+
+    <para>
+        As mentioned previously,
+        <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink> is the core
+        of the Yocto Project.
+        Metadata has several important subdivisions:
+    </para>
+
+    <section id='structure-meta-classes'>
+        <title><filename>meta/classes/</filename></title>
+
+        <para>
+            This directory contains the <filename>*.bbclass</filename> files.
+            Class files are used to abstract common code so it can be reused by multiple
+            packages.
+            Every package inherits the <filename>base.bbclass</filename> file.
+            Examples of other important classes are <filename>autotools.bbclass</filename>, which
+            in theory allows any Autotool-enabled package to work with the Yocto Project with minimal effort.
+            Another example is <filename>kernel.bbclass</filename> that contains common code and functions
+            for working with the Linux kernel.
+            Functions like image generation or packaging also have their specific class files
+            such as <filename>image.bbclass</filename>, <filename>rootfs_*.bbclass</filename> and
+            <filename>package*.bbclass</filename>.
+        </para>
+
+        <para>
+            For reference information on classes, see the
+            "<link linkend='ref-classes'>Classes</link>" chapter.
+        </para>
+    </section>
+
+    <section id='structure-meta-conf'>
+        <title><filename>meta/conf/</filename></title>
+
+        <para>
+            This directory contains the core set of configuration files that start from
+            <filename>bitbake.conf</filename> and from which all other configuration
+            files are included.
+            See the include statements at the end of the
+            <filename>bitbake.conf</filename> file and you will note that even
+            <filename>local.conf</filename> is loaded from there.
+            While <filename>bitbake.conf</filename> sets up the defaults, you can often override
+            these by using the (<filename>local.conf</filename>) file, machine file or
+            the distribution configuration file.
+        </para>
+    </section>
+
+    <section id='structure-meta-conf-machine'>
+        <title><filename>meta/conf/machine/</filename></title>
+
+        <para>
+            This directory contains all the machine configuration files.
+            If you set <filename>MACHINE = "qemux86"</filename>,
+            the OpenEmbedded build system looks for a <filename>qemux86.conf</filename> file in this
+            directory.
+            The <filename>include</filename> directory contains various data common to multiple machines.
+            If you want to add support for a new machine to the Yocto Project, look in this directory.
+        </para>
+    </section>
+
+    <section id='structure-meta-conf-distro'>
+        <title><filename>meta/conf/distro/</filename></title>
+
+        <para>
+            The contents of this directory controls any distribution-specific
+            configurations.
+            For the Yocto Project, the <filename>defaultsetup.conf</filename> is the main file here.
+            This directory includes the versions and the
+            <filename>SRCDATE</filename> definitions for applications that are configured here.
+            An example of an alternative configuration might be <filename>poky-bleeding.conf</filename>.
+            Although this file mainly inherits its configuration from Poky.
+        </para>
+    </section>
+
+    <section id='structure-meta-conf-machine-sdk'>
+        <title><filename>meta/conf/machine-sdk/</filename></title>
+
+        <para>
+            The OpenEmbedded build system searches this directory for
+            configuration files that correspond to the value of
+            <link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>.
+            By default, 32-bit and 64-bit x86 files ship with the Yocto
+            Project that support some SDK hosts.
+            However, it is possible to extend that support to other SDK hosts
+            by adding additional configuration files in this subdirectory
+            within another layer.
+        </para>
+    </section>
+
+    <section id='structure-meta-files'>
+        <title><filename>meta/files/</filename></title>
+
+        <para>
+            This directory contains common license files and several text files
+            used by the build system.
+            The text files contain minimal device information and
+            lists of files and directories with known permissions.
+        </para>
+    </section>
+
+    <section id='structure-meta-lib'>
+        <title><filename>meta/lib/</filename></title>
+
+        <para>
+            This directory contains OpenEmbedded Python library code
+            used during the build process.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-bsp'>
+        <title><filename>meta/recipes-bsp/</filename></title>
+
+        <para>
+            This directory contains anything linking to specific hardware or hardware
+            configuration information such as "u-boot" and "grub".
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-connectivity'>
+        <title><filename>meta/recipes-connectivity/</filename></title>
+
+        <para>
+            This directory contains libraries and applications related to communication with other devices.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-core'>
+        <title><filename>meta/recipes-core/</filename></title>
+
+        <para>
+            This directory contains what is needed to build a basic working Linux image
+            including commonly used dependencies.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-devtools'>
+        <title><filename>meta/recipes-devtools/</filename></title>
+
+        <para>
+            This directory contains tools that are primarily used by the build system.
+            The tools, however, can also be used on targets.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-extended'>
+        <title><filename>meta/recipes-extended/</filename></title>
+
+        <para>
+            This directory contains non-essential applications that add features compared to the
+            alternatives in core.
+            You might need this directory for full tool functionality or for Linux Standard Base (LSB)
+            compliance.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-gnome'>
+        <title><filename>meta/recipes-gnome/</filename></title>
+
+        <para>
+            This directory contains all things related to the GTK+ application framework.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-graphics'>
+        <title><filename>meta/recipes-graphics/</filename></title>
+
+        <para>
+            This directory contains X and other graphically related system libraries
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-kernel'>
+        <title><filename>meta/recipes-kernel/</filename></title>
+
+        <para>
+            This directory contains the kernel and generic applications and libraries that
+            have strong kernel dependencies.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-lsb4'>
+        <title><filename>meta/recipes-lsb4/</filename></title>
+
+        <para>
+            This directory contains recipes specifically added to support
+            the Linux Standard Base (LSB) version 4.x.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-multimedia'>
+        <title><filename>meta/recipes-multimedia/</filename></title>
+
+        <para>
+            This directory contains codecs and support utilities for audio, images and video.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-qt'>
+        <title><filename>meta/recipes-qt/</filename></title>
+
+        <para>
+            This directory contains all things related to the Qt application framework.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-rt'>
+        <title><filename>meta/recipes-rt/</filename></title>
+
+        <para>
+            This directory contains package and image recipes for using and testing
+            the <filename>PREEMPT_RT</filename> kernel.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-sato'>
+        <title><filename>meta/recipes-sato/</filename></title>
+
+        <para>
+            This directory contains the Sato demo/reference UI/UX and its associated applications
+            and configuration data.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-support'>
+        <title><filename>meta/recipes-support/</filename></title>
+
+        <para>
+            This directory contains recipes used by other recipes, but that are
+            not directly included in images (i.e. dependencies of other
+            recipes).
+        </para>
+    </section>
+
+    <section id='structure-meta-site'>
+        <title><filename>meta/site/</filename></title>
+
+        <para>
+            This directory contains a list of cached results for various architectures.
+            Because certain "autoconf" test results cannot be determined when cross-compiling due to
+            the tests not able to run on a live system, the information in this directory is
+            passed to "autoconf" for the various architectures.
+        </para>
+    </section>
+
+    <section id='structure-meta-recipes-txt'>
+        <title><filename>meta/recipes.txt</filename></title>
+
+        <para>
+            This file is a description of the contents of <filename>recipes-*</filename>.
+        </para>
+    </section>
+</section>
+
+</chapter>
+<!--
+vim: expandtab tw=80 ts=4
+-->
