<?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">
<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>         
                clGetProgramBuildInfo
            </keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>       
            clGetProgramBuildInfo
        </refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2009</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>2</manvolnum>
  
    </refmeta>


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

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

        <refpurpose>          
            Returns build information for each device in the program object.
        </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>clGetProgramBuildInfo</function>
                </funcdef>

				<paramdef><link xlink:href="abstractDataTypes.html">cl_program</link> <parameter>program</parameter></paramdef>,
				<paramdef>cl_device_id <parameter>device</parameter></paramdef>,
				<paramdef><link xlink:href="enums.html#cl_command_queue_properties">cl_program_build_info</link> <parameter>param_name</parameter></paramdef>,
				<paramdef><link xlink:href="scalarDataTypes.html">size_t</link> <parameter>param_value_size</parameter></paramdef>,
				<paramdef><link xlink:href="scalarDataTypes.html">void</link> <parameter>*param_value</parameter></paramdef>,
				<paramdef><link xlink:href="scalarDataTypes.html">size_t</link> <parameter>*param_value_size_ret</parameter></paramdef>                                   

            </funcprototype>
        </funcsynopsis>     
    </refsynopsisdiv>


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

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

            <varlistentry>
                <term><varname>program</varname></term>
                <listitem><para> Specifies the program object being queried.</para></listitem>
            </varlistentry>

            <varlistentry>
				<term><varname>device</varname></term>
                <listitem><para>
					Specifies the device for which build information is being queried. 
					<varname>device</varname> must be a valid device associated with <varname>program</varname>.
				</para></listitem>
            </varlistentry>

			<varlistentry>
				<term><varname> 
                        param_name
				</varname></term>

                <listitem>
					<para> 
                        Specifies the information to query. The list of supported <varname>param_name</varname> types and the
						information returned in <varname>param_value</varname> by <function>clGetProgramBuildInfo</function> is described in the table below.
                    </para>
					<informaltable frame="all">
                        <tgroup cols="2" align="left" colsep="1" rowsep="1">
                            <colspec colname="col1" colnum="1" />
                            <colspec colname="col2" colnum="2" />
                            <thead>
                                <row>
                                    <entry>cl_program_buid_info</entry>
									<entry>Return Type and Info. returned in <varname>param_value</varname></entry>
                                </row>
                            </thead>
                            <tbody>
                                <row>
                                    <entry><constant>CL_PROGRAM_BUILD_STATUS</constant></entry>
									<entry>Return type: cl_build_status
										<para>
											Returns the build status of <varname>program</varname> for a specific device as given by <varname>device</varname>. This can be one of the following:
										</para>
										<para>
											<errorname>CL_BUILD_NONE</errorname>. The build status returned if no build has been performed on the specified program object for <varname>device</varname>.
										</para>
										<para>
											<errorname>CL_BUILD_ERROR</errorname>. The build status returned if the last call to clBuildProgram on the specified program object for <varname>device</varname> generated an error.
										</para>
										<para>
											<errorname>CL_BUILD_SUCCESS</errorname>. The build status retrned if the last call to <citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry> on the specified program object for <varname>device</varname> was successful.
										</para>
										<para>
											<errorname>CL_BUILD_IN_PROGRESS</errorname>. The build status returned if the last call to 	<citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry> on the specified program object for <varname>device</varname> has not finished.
										</para>
                                    </entry>
                                </row>
        
                                <row>
                                 <entry><errorname>CL_PROGRAM_BUILD_OPTIONS</errorname></entry>
                                    <entry>Return type: char[]
										<para>
											Return the build options specified by the <varname>options</varname> argument in 	<citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry> for <varname>device</varname>.
										</para>
										<para>
											If build status of <varname>program</varname> for <varname>device</varname> is <errorname>CL_BUILD_NONE</errorname>, an empty string is returned.
										</para>
									</entry>
                                </row>
                                <row>
                                    <entry><errorname>CL_PROGRAM_BUILD_LOG</errorname></entry>
									<entry>Return type: char[]
										<para>
										Return the build log when
										<citerefentry><refentrytitle>clBuildProgram</refentrytitle></citerefentry> was called for <varname>device</varname>. If build status of <varname>program</varname> for <varname>device</varname> is <errorname>CL_BUILD_NONE</errorname>, an empty string is returned.</para>
									</entry>
                                </row>
                            </tbody>    
                        </tgroup>
                    </informaltable> 
               </listitem>
            </varlistentry>					
					
            <varlistentry>
                <term><varname>param_value</varname></term>
                <listitem><para> 
					A pointer to memory where the appropriate result being queried is returned. 
					If <varname>param_value</varname> is NULL, it is ignored.
				</para></listitem>
            </varlistentry>
			
            <varlistentry>
                <term><varname>param_value_size</varname></term>
                <listitem><para>
                        Specifies the size in bytes of memory pointed to by <varname>param_value</varname>. This size must be greater than or equal to the size of return type as described in the table above.
				</para></listitem>
            </varlistentry>
			
            <varlistentry>
                <term><varname>param_value_size_ret</varname></term>
                <listitem><para> 
					Returns the actual size in bytes of data copied to <varname>param_value</varname>. If <varname>param_value_size_ret</varname> is NULL, it is ignored.
				</para></listitem>
            </varlistentry>
        </variablelist>
    </refsect1>

    
<!-- ================================ NOTES  -->        
<!--  <refsect1 id="notes"><title>Notes</title>
        <para>
		</para>
	</refsect1>
--> 


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

    <refsect1 id="errors"><title>Errors</title>
<para>Returns <errorname>CL_SUCCESS</errorname> if the function is executed successfully. Otherwise it returns the following:
</para>
<itemizedlist mark="disc">
		<listitem>
			Returns <errorname>CL_INVALID_DEVICE</errorname> if <varname>device</varname> is not in the list of devices associated with program.
		</listitem>
		<listitem>
			Returns <errorname>CL_INVALID_VALUE</errorname> if <varname>param_name</varname> is not valid, or if size in bytes specified by <varname>param_value_size</varname> is less than size of return type and <varname>param_value</varname> is not NULL.
		</listitem>
		<listitem>
			Returns <errorname>CL_INVALID_PROGRAM</errorname> if <varname>program</varname> is a not a valid program object.
		</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="clGetProgramBuildInfo">OpenCL Specification</olink>
        </para>
    </refsect1>     


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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clGetProgramInfo</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>

</refentry>

