title: OpenCL clBuildProgram caches source, and does not recompile if #include'd source changes
body: <p>I have implemented a project with opencl. I have a file which contains the kernel function and the functions which are used by the kernel are included in a seperate header file but when I change the file which is included, sometimes the changes are applied and sometimes they are not and it makes me confused if the application has bug or not.</p>
  
  <p>I checked the other posts in stackoverflow and see nvidia has serious problem with passing <code>-I{include directory}</code>, so I changed it and give the header files address explicitly, but still the opencl compiler is not able to find the errors in the header file which is included in the kernel file name.</p>
  
  <p>Also, I am using nvidia gtx 980 and I have intalled CUDA 7.0 on my computer.</p>
  
  <p>Anyone has the same experience? how can I fix it?</p>
  
  <p>So, Assume I have a kernel like this:</p>
  
  <pre><code>#include "../../src/cl/test_kernel_include.cl"
  
  void __kernel test_kernel(
    __global int* result,
    int n
    )
  {
    int thread_idx = get_global_id(0);
    result[thread_idx] = test_func();
  }
  </code></pre>
  
  <p>which the <code>test_kernel_include.cl</code> is as follows:</p>
  
  <pre><code>int test_func()
  {
    return 1;
  }
  </code></pre>
  
  <p>Then I run the code and I get an array which all the members are equal to <code>1</code> as we expect. Now, I change the <code>test_kernel_include.cl</code> to:</p>
  
  <pre><code>int test_func()
  {
    return 2;
  }
  </code></pre>
  
  <p>but the result is still an array which all the members are equal to <code>1</code> which should change to <code>2</code> but they are not. </p>