<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd" [
<!ENTITY buildOptionsInc SYSTEM "buildOptionsInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>clBuildProgram</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>
            clBuildProgram
        </refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2013</year>
                <holder>The Khronos Group Inc.
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="clBuildProgram">
        <refname>clBuildProgram</refname>

        <refpurpose>
            Builds (compiles and links) a program executable from the program source or binary.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">cl_int</link>
 <function>clBuildProgram</function>
                </funcdef>
<paramdef><link xlink:href="abstractDataTypes.html">cl_program</link><parameter>program</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>num_devices</parameter></paramdef>
<paramdef>const <link xlink:href="abstractDataTypes.html">cl_device_id</link><parameter>*device_list</parameter></paramdef>
<paramdef>const <link xlink:href="scalarDataTypes.html">char</link><parameter>*options</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>(CL_CALLBACK *pfn_notify)(<link xlink:href="abstractDataTypes.html">cl_program</link> program, <link xlink:href="scalarDataTypes.html">void</link> *user_data)</parameter></paramdef>
<paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*user_data</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

<!-- ================================ PARAMETERS -->

    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>

            <varlistentry>
                <term> <varname> program </varname> </term>
                <listitem>
                    <para>
                        The program object.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> device_list </varname> </term>
                <listitem>
                    <para>
                      A pointer to a list of devices associated with <varname>program</varname>. If
                      <varname>device_list</varname> is NULL value, the program executable is
                      built for all devices associated with <varname>program</varname> for which
                      a source or binary has been loaded. If <varname>device_list</varname> is
                      a non-NULL value, the program executable is built for devices specified
                      in this list for which a source or binary has been loaded.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> num_devices </varname> </term>
                <listitem>
                    <para>
                      The number of devices listed in <varname>device_list</varname>.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term><varname>options</varname></term>
                <listitem>
                    <para>
                      A pointer to a null-terminated string of characters that describes the
                      build options to be used for building the program executable. The list
                      of supported options is described below.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> pfn_notify </varname> </term>
                <listitem>
                    <para>
                      A function pointer to a notification routine. The notification routine
                      is a callback function that an application can register and which will
                      be called when the program executable has been built (successfully
                      or unsuccessfully). If <varname>pfn_notify</varname> is not NULL,
                      <function>clBuildProgram</function> does not need to wait for the
                      build to complete and can return immediately once the build operation
                      can begin. The build operation can begin if the context, program whose
                      sources are being compiled and linked, list of devices and build options
                      specified are all valid and appropriate host and device resources needed
                      to perform the build are available. If <varname>pfn_notify</varname>
                      is NULL, <function>clBuildProgram</function> does not return until the
                      build has completed. This callback function may be called asynchronously
                      by the OpenCL implementation. It is the application’s responsibility
                      to ensure that the callback function is thread-safe.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> user_data </varname> </term>
                <listitem>
                    <para>
                      Passed as an argument when <varname>pfn_notify</varname> is
                      called. <varname>user_data</varname> can be NULL.
                    </para>
               </listitem>
            </varlistentry>
        </variablelist>
    </refsect1>

<!-- ================================ NOTES  -->

    <refsect1 id="notes"><title>Notes</title>
        <para>
          Builds (compiles &amp; links) a program executable from the program source
          or binary for all the devices or a specific device(s) in the OpenCL context
          associated with <varname>program</varname>.  OpenCL allows program executables to
          be built using the source or the binary. <function>clBuildProgram</function>
          must be called for <varname>program</varname> created using either
          <citerefentry><refentrytitle>clCreateProgramWithSource</refentrytitle></citerefentry> or
          <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>
          to build the program executable for one or more devices associated with
          <varname>program</varname>.  If <varname>program</varname> is created with
          <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>,
          then the program binary must be an executable binary (not a compiled binary or library).
        </para>

        <para>
          The executable binary can be queried using
          <citerefentry><refentrytitle>clGetProgramInfo</refentrytitle></citerefentry>(<varname>program</varname>,
          <constant>CL_PROGRAM_BINARIES</constant>, ...) and can be specified to
          <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>
          to create a new program object.
        </para>

        &buildOptionsInc;

    </refsect1>

<!-- ================================ ERRORS  -->

    <refsect1 id="errors"><title>Errors</title>
        <para>
          <function>clBuildProgram</function> returns <errorname>CL_SUCCESS</errorname> if the
          function is executed successfully. Otherwise, it returns one of the following errors:
        </para>

        <itemizedlist mark="disc">
            <listitem>
              <errorname>CL_INVALID_PROGRAM</errorname> if <varname>program</varname> is not
              a valid program object.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>device_list</varname>
              is NULL and <varname>num_devices</varname> is greater than zero, or if
              <varname>device_list</varname> is not NULL and <varname>num_devices</varname>
              is zero.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>pfn_notify</varname> is NULL
              but <varname>user_data</varname> is not NULL.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_DEVICE</errorname> if OpenCL devices listed in
              <varname>device_list</varname> are not in the list of devices associated with
              <varname>program</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_BINARY</errorname>
              if <varname>program</varname> is created with
              <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>
              and devices listed in <varname>device_list</varname> do not have a valid program
              binary loaded.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_BUILD_OPTIONS</errorname> if the build options specified
              by <varname>options</varname> are invalid.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if the build of a program executable for
              any of the devices listed in <varname>device_list</varname> by a previous call to
              <function>clBuildProgram</function> for <varname>program</varname> has not completed.
            </listitem>

            <listitem>
              <errorname>CL_COMPILER_NOT_AVAILABLE</errorname>
              if <varname>program</varname> is created with
              <citerefentry><refentrytitle>clCreateProgramWithSource</refentrytitle></citerefentry>
              and a compiler is not available i.e.
              <errorname>CL_DEVICE_COMPILER_AVAILABLE</errorname>
              specified in the table of OpenCL Device Queries for
              <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>
              is set to <errorname>CL_FALSE</errorname>.
            </listitem>

            <listitem>
              <errorname>CL_BUILD_PROGRAM_FAILURE</errorname> if there is a failure
              to build the program executable.  This error will be returned if
              <function>clBuildProgram</function> does not return until the build has completed.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if there are kernel objects attached
              to <varname>program</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if 
              <varname>program</varname> was not created with
              <citerefentry><refentrytitle>clCreateProgramWithSource</refentrytitle></citerefentry>
              or
              <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </listitem>
        </itemizedlist>
    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->

<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>

            <olink uri="clBuildProgram">OpenCL Specification</olink>
        </para>
    </refsect1>

<!-- ================================ ALSO SEE  -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateProgramWithSource</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCompileProgram</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clLinkProgram</refentrytitle></citerefentry>
        </para>
    </refsect1>

<!-- ================================ COPYRIGHT  -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>

<!-- 9-Dec-2013, rev. 19 -->
</refentry>

