ref-manual: Added icecc class and several ICECC_* variables.

New variables added for:

  ICECC_CC
  ICECC_CXX
  ICECC_ENV_EXEC
  ICECC_PATH
  ICECC_USER_CLASS_BL
  ICECC_USER_PACKAGE_BL
  ICECC_USER_PACKAGE_WL
  ICECC_VERSION

(From yocto-docs rev: 89ae30f5351cf26926f2a53c42163dd3418e05c3)

Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Scott Rifenbark 2013-12-02 13:42:35 -06:00 committed by Richard Purdie
parent c294f67611
commit 2ee060691e
2 changed files with 219 additions and 0 deletions

View File

@ -781,6 +781,78 @@
</para>
</section>
<section id='ref-classes-icecc'>
<title><filename>icecc.bbclass</filename></title>
<para>
The Icecream distributed compile support (<filename>icecc</filename>)
class stages directories with symlinks from
<filename>gcc</filename> and <filename>g++</filename> to
<filename>icecc</filename>, for both native and cross compilers.
Depending on each configure or compile, the OpenEmbedded build system
adds the directories at the head of the <filename>PATH</filename> list
and then sets
<link linkend='var-ICECC_CXX'><filename>ICECC_CXX</filename></link>
and
<link linkend='var-ICECC_CC'><filename>ICEC_CC</filename></link>.
</para>
<para>
For the cross compiler, the class creates a <filename>tar.gz</filename>
file that contains the Yocto Project toolchain and sets
<link linkend='var-ICECC_VERSION'><filename>ICECC_VERSION</filename></link>
accordingly.
</para>
<para>
The class handles all three different compile stages
(i.e native ,cross-kernel and target) and creates the necessary
environment <filename>tar.gz</filename> file to be used by the remote
machines.
The class also supports SDK generation.
</para>
<para>
If <link linkend='var-ICECC_PATH'><filename>ICECC_PATH</filename></link>
is not set in your <filename>local.conf</filename> file, then the
class tries to locate it using <filename>which</filename>.
If
<link linkend='var-ICECC_ENV_EXEC'><filename>ICECC_ENV_EXEC</filename></link>
is set in your <filename>local.conf</filename> file, the variable should
point to the <filename>icecc-create-env</filename> script provided by
the user.
If you do not point to a user-provided script, the build system
uses the default script provided by the recipe
<filename>icecc-create-env.bb</filename>.
<note>
This script is a modified version and not the one that comes with
<filename>icecc</filename>.
</note>
</para>
<para>
If you do not want the Icecream distributed compile support to apply
to specific packages or classes, you can effectively "blacklist" them
by listing the packages and classes using the
<link linkend='var-ICECC_USER_PACKAGE_BL'><filename>ICECC_USER_PACKAGE_BL</filename></link>
and
<link linkend='var-ICECC_USER_CLASS_BL'><filename>ICECC_USER_CLASS_BL</filename></link>,
variables, respectively, in your <filename>local.conf</filename> file.
Doing so causes the OpenEmbedded build system to handle these
compilations locally.
</para>
<para>
Additionally, you can list packages using the
<link linkend='var-ICECC_USER_PACKAGE_WL'><filename>ICECC_USER_PACKAGE_WL</filename></link>
variable in your <filename>local.conf</filename> file to force
<filename>icecc</filename> to be enabled for packages using an empty
<link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
variable.
</para>
</section>
<section id='ref-classes-mime'>
<title><filename>mime.bbclass</filename></title>

View File

@ -2267,6 +2267,153 @@
<glossdiv id='var-glossary-i'><title>I</title>
<glossentry id='var-ICECC_CC'><glossterm>ICECC_CC</glossterm>
<glossdef>
<para>
The path to the GNU C compiler <filename>gcc</filename>.
This variable is used by the
<link linkend='ref-classes-icecc'><filename>icecc</filename></link>
class.
You do not set this variable by hand.
</para>
<para>
When the location for the GNU C compiler is not a
symbolic link, the class sets the variable to the location
of the compiler.
</para>
</glossdef>
</glossentry>
<glossentry id='var-ICECC_CXX'><glossterm>ICECC_CXX</glossterm>
<glossdef>
<para>
The path to the GNU C++ compiler <filename>g++</filename>.
This variable is used by the
<link linkend='ref-classes-icecc'><filename>icecc</filename></link>
class.
You do not set this variable by hand.
</para>
<para>
When the location for the GNU C++ compiler is not a
symbolic link, the class sets the variable to the location
of the compiler.
</para>
</glossdef>
</glossentry>
<glossentry id='var-ICECC_ENV_EXEC'><glossterm>ICECC_ENV_EXEC</glossterm>
<glossdef>
<para>
Points to the <filename>icecc-create-env</filename> script
that you provide.
This variable is used by the
<link linkend='ref-classes-icecc'><filename>icecc</filename></link>
class.
You set this variable in your
<filename>local.conf</filename> file.
</para>
<para>
If you do not point to a script that you provide, the
OpenEmbedded build system uses the default script provided
by the <filename>icecc-create-env.bb</filename> recipe,
which is a modified version and not the one that comes with
<filename>icecc</filename>.
</para>
</glossdef>
</glossentry>
<glossentry id='var-ICECC_PATH'><glossterm>ICECC_PATH</glossterm>
<glossdef>
<para>
The location of the <filename>icecc</filename> binary.
You can set this variable in your
<filename>local.conf</filename> file.
If your <filename>local.conf</filename> file does not define
this variable, the
<link linkend='ref-classes-icecc'><filename>icecc</filename></link>
class attempts to define it by locating
<filename>icecc</filename> using <filename>which</filename>.
</para>
</glossdef>
</glossentry>
<glossentry id='var-ICECC_USER_CLASS_BL'><glossterm>ICECC_USER_CLASS_BL</glossterm>
<glossdef>
<para>
Identifies user classes that you do not want the
Icecream distributed compile support to consider.
This variable is used by the
<link linkend='ref-classes-icecc'><filename>icecc</filename></link>
class.
You set this variable in your
<filename>local.conf</filename> file.
</para>
<para>
When you list classes using this variable, you are
"blacklisting" them from distributed compilation across
remote hosts.
Any classes you list will be distributed and compiled
locally.
</para>
</glossdef>
</glossentry>
<glossentry id='var-ICECC_USER_PACKAGE_BL'><glossterm>ICECC_USER_PACKAGE_BL</glossterm>
<glossdef>
<para>
Identifies user packages that you do not want the
Icecream distributed compile support to consider.
This variable is used by the
<link linkend='ref-classes-icecc'><filename>icecc</filename></link>
class.
You set this variable in your
<filename>local.conf</filename> file.
</para>
<para>
When you list packages using this variable, you are
"blacklisting" them from distributed compilation across
remote hosts.
Any packages you list will be distributed and compiled
locally.
</para>
</glossdef>
</glossentry>
<glossentry id='var-ICECC_USER_PACKAGE_WL'><glossterm>ICECC_USER_PACKAGE_WL</glossterm>
<glossdef>
<para>
Identifies user packages that use an empty
<link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
variable that you want to force remote distributed
compilation on using the Icecream distributed compile
support.
This variable is used by the
<link linkend='ref-classes-icecc'><filename>icecc</filename></link>
class.
You set this variable in your
<filename>local.conf</filename> file.
</para>
</glossdef>
</glossentry>
<glossentry id='var-ICECC_VERSION'><glossterm>ICECC_VERSION</glossterm>
<glossdef>
<para>
The version of the cross-compiler used in the
cross-development toolchain.
This variable is used by the
<link linkend='ref-classes-icecc'><filename>icecc</filename></link>
class.
You do not set this variable by hand.
</para>
</glossdef>
</glossentry>
<glossentry id='var-IMAGE_BASENAME'><glossterm>IMAGE_BASENAME</glossterm>
<glossdef>
<para>