<!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; ] >
<!--SPDX-License-Identifier: CC-BY-2.0-UK-->

<chapter id='sdk-intro'>
<title>Introduction</title>

<section id='sdk-manual-intro'>
    <title>Introduction</title>

    <para>
        Welcome to the Yocto Project Application Development and the
        Extensible Software Development Kit (eSDK) manual.
        This manual provides information that explains how to use both the
        Yocto Project extensible and standard SDKs to develop
        applications and images.
        <note>
            Prior to the 2.0 Release of the Yocto Project, application
            development was primarily accomplished through the use of the
            Application Development Toolkit (ADT) and the availability
            of stand-alone cross-development toolchains and other tools.
            With the 2.1 Release of the Yocto Project, application development
            has transitioned to within a tool-rich extensible SDK and the more
            traditional standard SDK.
        </note>
    </para>

    <para>
        All SDKs consist of the following:
        <itemizedlist>
            <listitem><para>
                <emphasis>Cross-Development Toolchain</emphasis>:
                This toolchain contains a compiler, debugger, and various
                miscellaneous tools.
                </para></listitem>
            <listitem><para>
                <emphasis>Libraries, Headers, and Symbols</emphasis>:
                The libraries, headers, and symbols are specific to the image
                (i.e. they match the image).
                </para></listitem>
            <listitem><para>
                <emphasis>Environment Setup Script</emphasis>:
                This <filename>*.sh</filename> file, once run, sets up the
                cross-development environment by defining variables and
                preparing for SDK use.
                </para></listitem>
        </itemizedlist>
    </para>

    <para>
        Additionally, an extensible SDK has tools that allow you to easily add
        new applications and libraries to an image, modify the source of an
        existing component, test changes on the target hardware, and easily
        integrate an application into the
        <ulink url='&YOCTO_DOCS_REF_URL;#build-system-term'>OpenEmbedded build system</ulink>.
    </para>

    <para>
        You can use an SDK to independently develop and test code
        that is destined to run on some target machine.
        SDKs are completely self-contained.
        The binaries are linked against their own copy of
        <filename>libc</filename>, which results in no dependencies
        on the target system.
        To achieve this, the pointer to the dynamic loader is
        configured at install time since that path cannot be dynamically
        altered.
        This is the reason for a wrapper around the
        <filename>populate_sdk</filename> and
        <filename>populate_sdk_ext</filename> archives.
    </para>

    <para>
        Another feature for the SDKs is that only one set of cross-compiler
        toolchain binaries are produced for any given architecture.
        This feature takes advantage of the fact that the target hardware can
        be passed to <filename>gcc</filename> as a set of compiler options.
        Those options are set up by the environment script and contained in
        variables such as
        <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'><filename>CC</filename></ulink>
        and
        <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'><filename>LD</filename></ulink>.
        This reduces the space needed for the tools.
        Understand, however, that every target still needs a sysroot because
        those binaries are target-specific.
    </para>

    <para>
        The SDK development environment consists of the following:
        <itemizedlist>
            <listitem><para>
                The self-contained SDK, which is an
                architecture-specific cross-toolchain and
                matching sysroots (target and native) all built by the
                OpenEmbedded build system (e.g. the SDK).
                The toolchain and sysroots are based on a
                <ulink url='&YOCTO_DOCS_REF_URL;#metadata'>Metadata</ulink>
                configuration and extensions,
                which allows you to cross-develop on the host machine for the
                target hardware.
                Additionally, the extensible SDK contains the
                <filename>devtool</filename> functionality.
                </para></listitem>
            <listitem><para>
                The Quick EMUlator (QEMU), which lets you simulate
                target hardware.
                QEMU is not literally part of the SDK.
                You must build and include this emulator separately.
                However, QEMU plays an important role in the development
                process that revolves around use of the SDK.
                </para></listitem>
        </itemizedlist>
    </para>

    <para>
        In summary, the extensible and standard SDK share many features.
        However, the extensible SDK has powerful development tools to help you
        more quickly develop applications.
        Following is a table that summarizes the primary differences between
        the standard and extensible SDK types when considering which to
        build:
        <informaltable frame='none'>
            <tgroup cols='3' align='left' colsep='1' rowsep='1'>
                <colspec colname='c1' colwidth='1*'/>
                <colspec colname='c2' colwidth='1*'/>
                <colspec colname='c3' colwidth='1*'/>
                <thead>
                    <row>
                        <entry align="left"><emphasis>Feature</emphasis></entry>
                        <entry align="left"><emphasis>Standard SDK</emphasis></entry>
                        <entry align="left"><emphasis>Extensible SDK</emphasis></entry>
                    </row>
                </thead>
                <tbody>
                    <row>
                        <entry align="left">Toolchain</entry>
                        <entry align="left">Yes</entry>
                        <entry align="left">Yes*</entry>
                    </row>
                    <row>
                        <entry align="left">Debugger</entry>
                        <entry align="left">Yes</entry>
                        <entry align="left">Yes*</entry>
                    </row>
                    <row>
                        <entry align="left">Size</entry>
                        <entry align="left">100+ MBytes</entry>
                        <entry align="left">1+ GBytes (or 300+ MBytes for minimal w/toolchain)</entry>
                    </row>
                    <row>
                        <entry align="left"><filename>devtool</filename></entry>
                        <entry align="left">No</entry>
                        <entry align="left">Yes</entry>
                    </row>
                    <row>
                        <entry align="left">Build Images</entry>
                        <entry align="left">No</entry>
                        <entry align="left">Yes</entry>
                    </row>
                    <row>
                        <entry align="left">Updateable</entry>
                        <entry align="left">No</entry>
                        <entry align="left">Yes</entry>
                    </row>
                    <row>
                        <entry align="left">Managed Sysroot**</entry>
                        <entry align="left">No</entry>
                        <entry align="left">Yes</entry>
                    </row>
                    <row>
                        <entry align="left">Installed Packages</entry>
                        <entry align="left">No***</entry>
                        <entry align="left">Yes****</entry>
                    </row>
                    <row>
                        <entry align="left">Construction</entry>
                        <entry align="left">Packages</entry>
                        <entry align="left">Shared State</entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
        <literallayout class='monospaced'>
     * Extensible SDK contains the toolchain and debugger if <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_EXT_TYPE'><filename>SDK_EXT_TYPE</filename></ulink> is "full" or <ulink url='&YOCTO_DOCS_REF_URL;#var-SDK_INCLUDE_TOOLCHAIN'><filename>SDK_INCLUDE_TOOLCHAIN</filename></ulink> is "1", which is the default.

     ** Sysroot is managed through the use of <filename>devtool</filename>.  Thus, it is less likely that you will corrupt your SDK sysroot when you try to add additional libraries.

     *** You can add runtime package management to the standard SDK but it is not supported by default.

     **** You must build and make the shared state available to extensible SDK users for "packages" you want to enable users to install.
        </literallayout>
    </para>

    <section id='the-cross-development-toolchain'>
        <title>The Cross-Development Toolchain</title>

        <para>
            The
            <ulink url='&YOCTO_DOCS_REF_URL;#cross-development-toolchain'>Cross-Development Toolchain</ulink>
            consists of a cross-compiler, cross-linker, and cross-debugger
            that are used to develop user-space applications for targeted
            hardware.
            Additionally, for an extensible SDK, the toolchain also has
            built-in <filename>devtool</filename> functionality.
            This toolchain is created by running a SDK installer script
            or through a
            <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
            that is based on your metadata configuration or extension for
            your targeted device.
            The cross-toolchain works with a matching target sysroot.
        </para>
    </section>

    <section id='sysroot'>
        <title>Sysroots</title>

        <para>
            The native and target sysroots contain needed headers and libraries
            for generating binaries that run on the target architecture.
            The target sysroot is based on the target root filesystem image
            that is built by the OpenEmbedded build system and uses the same
            metadata configuration used to build the cross-toolchain.
        </para>
    </section>

    <section id='the-qemu-emulator'>
        <title>The QEMU Emulator</title>

        <para>
            The QEMU emulator allows you to simulate your hardware while
            running your application or image.
            QEMU is not part of the SDK but is made available a number of
            different ways:
            <itemizedlist>
                <listitem><para>
                    If you have cloned the <filename>poky</filename> Git
                    repository to create a
                    <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
                    and you have sourced the environment setup script, QEMU is
                    installed and automatically available.
                    </para></listitem>
                <listitem><para>
                    If you have downloaded a Yocto Project release and unpacked
                    it to create a Source Directory and you have sourced the
                    environment setup script, QEMU is installed and
                    automatically available.
                    </para></listitem>
                <listitem><para>
                    If you have installed the cross-toolchain tarball and you
                    have sourced the toolchain's setup environment script, QEMU
                    is also installed and automatically available.
                    </para></listitem>
            </itemizedlist>
        </para>
    </section>
</section>

<section id='sdk-development-model'>
    <title>SDK Development Model</title>

    <para>
        Fundamentally, the SDK fits into the development process as follows:
        <imagedata fileref="figures/sdk-environment.png" align="center" width="6in" depth="5in" scalefit="100" />
        The SDK is installed on any machine and can be used to develop
        applications, images, and kernels.
        An SDK can even be used by a QA Engineer or Release Engineer.
        The fundamental concept is that the machine that has the SDK installed
        does not have to be associated with the machine that has the
        Yocto Project installed.
        A developer can independently compile and test an object on their
        machine and then, when the object is ready for integration into an
        image, they can simply make it available to the machine that has the
        Yocto Project.
        Once the object is available, the image can be rebuilt using the
        Yocto Project to produce the modified image.
    </para>

    <para>
        You just need to follow these general steps:
        <orderedlist>
            <listitem><para>
                <emphasis>Install the SDK for your target hardware:</emphasis>
                For information on how to install the SDK, see the
                "<link linkend='sdk-installing-the-sdk'>Installing the SDK</link>"
                section.
                </para></listitem>
            <listitem><para>
                <emphasis>Download or Build the Target Image:</emphasis>
                The Yocto Project supports several target architectures
                and has many pre-built kernel images and root filesystem
                images.</para>

                <para>If you are going to develop your application on
                hardware, go to the
                <ulink url='&YOCTO_MACHINES_DL_URL;'><filename>machines</filename></ulink>
                download area and choose a target machine area
                from which to download the kernel image and root filesystem.
                This download area could have several files in it that
                support development using actual hardware.
                For example, the area might contain
                <filename>.hddimg</filename> files that combine the
                kernel image with the filesystem, boot loaders, and
                so forth.
                Be sure to get the files you need for your particular
                development process.</para>

                <para>If you are going to develop your application and
                then run and test it using the QEMU emulator, go to the
                <ulink url='&YOCTO_QEMU_DL_URL;'><filename>machines/qemu</filename></ulink>
                download area.
                From this area, go down into the directory for your
                target architecture (e.g. <filename>qemux86_64</filename>
                for an <trademark class='registered'>Intel</trademark>-based
                64-bit architecture).
                Download the kernel, root filesystem, and any other files you
                need for your process.
                <note>
                    To use the root filesystem in QEMU, you need to extract it.
                    See the
                    "<link linkend='sdk-extracting-the-root-filesystem'>Extracting the Root Filesystem</link>"
                    section for information on how to extract the root
                    filesystem.
                </note>
                </para></listitem>
            <listitem><para>
                <emphasis>Develop and Test your Application:</emphasis>
                At this point, you have the tools to develop your application.
                If you need to separately install and use the QEMU emulator,
                you can go to
                <ulink url='http://wiki.qemu.org/Main_Page'>QEMU Home Page</ulink>
                to download and learn about the emulator.
                See the
                "<ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-qemu'>Using the Quick EMUlator (QEMU)</ulink>"
                chapter in the Yocto Project Development Tasks Manual
                for information on using QEMU within the Yocto
                Project.
                </para></listitem>
        </orderedlist>
    </para>

    <para>
        The remainder of this manual describes how to use the extensible
        and standard SDKs.
        Information also exists in appendix form that describes how you can
        build, install, and modify an SDK.
    </para>
</section>

</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
