<?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 a 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.
                      Certain options are ignored when <varname>program</varname> is created with IL.
                      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>,
          <citerefentry><refentrytitle>clCreateProgramWithIL</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>

        <para>
            <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>

        &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>,
              <citerefentry><refentrytitle>clCreateProgramWithIL</refentrytitle></citerefentry>, or
              <citerefentry><refentrytitle>clCreateProgramWithBinary</refentrytitle></citerefentry>.
            </listitem>

            <listitem><!-- new in 2.1 -->
              <errorname>CL_INVALID_OPERATION</errorname> if 
                  the <varname>program</varname> requires independent forward 
                  progress of sub-groups but one or more of the devices listed in 
                  <varname>device_list</varname> does not return <constant>CL_TRUE</constant> for
                  the <constant>CL_DEVICE_SUBGROUP_INDEPENDENT_FORWARD_PROGRESS</constant> query.

            </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>clCreateProgramWithIL</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-Nov-2015, API ver 2.1 rev 19; Ext ver 2.1 rev 10; C lang ver 2.0 rev 30 -->
</refentry>

