<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 21, 2013 at 8:33 AM, Tom Stellard <span dir="ltr"><<a href="mailto:tom@stellard.net" target="_blank">tom@stellard.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="im">On Thu, Feb 21, 2013 at 08:25:20AM -0600, Aaron Watry wrote:<br>
> Hi Tom,<br>
><br>
> Mesa+Clover does indeed build against master llvm/clang, but I'm having<br>
> trouble building against it when I try to do a clean build of Piglit.<br>
><br>
> Error received:<br>
><br>
> [ 18%] Built target piglitutil_cl<br>
> Linking C executable ../../../../../bin/cl-custom-run-simple-kernel<br>
> /usr/local/lib/libOpenCL.so: undefined reference to<br>
> `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange)<br>
> const'<br>
> /usr/local/lib/libOpenCL.so: undefined reference to<br>
> `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation)<br>
> const'<br>
> collect2: error: ld returned 1 exit status<br>
> make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1<br>
> make[1]: ***<br>
> [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all]<br>
> Error 2<br>
> make: *** [all] Error 2<br>
><br>
> Maybe I've done something wrong, but I've tested this on two machines now<br>
> and both times I've wiped my llvm/clang/mesa/clover installs in /usr/local<br>
> and rebuilt from scratch.<br>
><br>
<br>
</div>Which revisions of Clang and LLVM are you using?<br>
<span class=""><font color="#888888"><br></font></span></blockquote><div><br></div><div>I'm not at home at the moment, so I don't have access to those machines, but from memory:<br><br></div><div>LLVM was git master as of sometime around 6-8pm CST last night.  One such revision would be <br>
</div><div>commit ffbe432595c78ba28c8a9d200bf92996eed5e5d9<br>git-svn-id: <a href="https://llvm.org/svn/llvm-project/llvm/trunk@175718">https://llvm.org/svn/llvm-project/llvm/trunk@175718</a> 91177308-0d3<br><br><br></div>
<div>Clang was somewhere between 3bc7b6bef96 and dc84cd5efdd3430efb.<br><br></div><div>I just retested on another machine with the following versions:<br></div><div>LLVM: git: 0514595b9b20c9d80, svn: 175739<br></div><div>
Clang: 7d81281fc39f6d, svn: 175741<br></div><div>Mesa: b63b3012c91 with your clover patch<br><br></div><div>Result:<br></div><div>Linking C executable ../../../../../bin/cl-custom-run-simple-kernel<br>/usr/local/lib/libOpenCL.so: undefined reference to `clang::PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective(clang::SourceRange) const'<br>
/usr/local/lib/libOpenCL.so: undefined reference to `clang::PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc(clang::SourceLocation) const'<br>collect2: error: ld returned 1 exit status<br>make[2]: *** [bin/cl-custom-run-simple-kernel] Error 1<br>
make[1]: *** [target_api/cl/tests/cl/custom/CMakeFiles/cl-custom-run-simple-kernel.dir/all] Error 2<br>make: *** [all] Error 2<br><br></div><div>--Aaron<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<span class=""><font color="#888888">
-Tom<br>
</font></span><div class=""><div class="h5"><br>
> --Aaron<br>
><br>
> On Wed, Feb 20, 2013 at 4:27 PM, Tom Stellard <<a href="mailto:tom@stellard.net">tom@stellard.net</a>> wrote:<br>
><br>
> > From: Tom Stellard <<a href="mailto:thomas.stellard@amd.com">thomas.stellard@amd.com</a>><br>
> ><br>
> > ---<br>
> >  .../state_trackers/clover/llvm/invocation.cpp      |   47<br>
> > ++++++++++++++++---<br>
> >  1 files changed, 39 insertions(+), 8 deletions(-)<br>
> ><br>
> > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp<br>
> > b/src/gallium/state_trackers/clover/llvm/invocation.cpp<br>
> > index 0bd8e22..2785d10 100644<br>
> > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp<br>
> > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp<br>
> > @@ -28,10 +28,17 @@<br>
> >  #include <clang/CodeGen/CodeGenAction.h><br>
> >  #include <llvm/Bitcode/BitstreamWriter.h><br>
> >  #include <llvm/Bitcode/ReaderWriter.h><br>
> > -#include <llvm/DerivedTypes.h><br>
> >  #include <llvm/Linker.h><br>
> > +#if HAVE_LLVM < 0x0303<br>
> > +#include <llvm/DerivedTypes.h><br>
> >  #include <llvm/LLVMContext.h><br>
> >  #include <llvm/Module.h><br>
> > +#else<br>
> > +#include <llvm/IR/DerivedTypes.h><br>
> > +#include <llvm/IR/LLVMContext.h><br>
> > +#include <llvm/IR/Module.h><br>
> > +#include <llvm/Support/IRReader.h><br>
> > +#endif<br>
> >  #include <llvm/PassManager.h><br>
> >  #include <llvm/Support/TargetSelect.h><br>
> >  #include <llvm/Support/MemoryBuffer.h><br>
> > @@ -41,8 +48,10 @@<br>
> ><br>
> >  #if HAVE_LLVM < 0x0302<br>
> >  #include <llvm/Target/TargetData.h><br>
> > -#else<br>
> > +#elif HAVE_LLVM < 0x0303<br>
> >  #include <llvm/DataLayout.h><br>
> > +#else<br>
> > +#include <llvm/IR/DataLayout.h><br>
> >  #endif<br>
> ><br>
> >  #include "pipe/p_state.h"<br>
> > @@ -151,7 +160,11 @@ namespace {<br>
> >        // Add libclc generic search path<br>
> >        c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,<br>
> >                                        clang::frontend::Angled,<br>
> > -                                      false, false, false);<br>
> > +                                      false, false<br>
> > +#if HAVE_LLVM < 0x0303<br>
> > +                                      , false<br>
> > +#endif<br>
> > +                                      );<br>
> ><br>
> >        // Add libclc include<br>
> >        c.getPreprocessorOpts().Includes.push_back("clc/clc.h");<br>
> > @@ -167,8 +180,12 @@ namespace {<br>
> >        c.getInvocation().setLangDefaults(c.getLangOpts(), clang::IK_OpenCL,<br>
> ><br>
> >  clang::LangStandard::lang_opencl11);<br>
> >  #endif<br>
> > -      c.createDiagnostics(0, NULL, new clang::TextDiagnosticPrinter(<br>
> > -                          s_log,<br>
> > +      c.createDiagnostics(<br>
> > +#if HAVE_LLVM < 0x0303<br>
> > +                          0, NULL,<br>
> > +#endif<br>
> > +                          new clang::TextDiagnosticPrinter(<br>
> > +                                 s_log,<br>
> >  #if HAVE_LLVM <= 0x0301<br>
> >                                   c.getDiagnosticOpts()));<br>
> >  #else<br>
> > @@ -201,12 +218,26 @@ namespace {<br>
> ><br>
> >        llvm::PassManager PM;<br>
> >        llvm::PassManagerBuilder Builder;<br>
> > -      bool isNative;<br>
> > -      llvm::Linker linker("clover", mod);<br>
> > +      llvm::sys::Path libclc_path =<br>
> > +                            llvm::sys::Path(LIBCLC_LIBEXECDIR + triple +<br>
> > ".bc");<br>
> ><br>
> >        // Link the kernel with libclc<br>
> > -      linker.LinkInFile(llvm::sys::Path(LIBCLC_LIBEXECDIR + triple +<br>
> > ".bc"), isNative);<br>
> > +#if HAVE_LLVM < 0x0303<br>
> > +      bool isNative;<br>
> > +      llvm::Linker linker("clover", mod);<br>
> > +      linker.LinkInFile(libclc_path, isNative);<br>
> >        mod = linker.releaseModule();<br>
> > +#else<br>
> > +      std::string err_str;<br>
> > +      llvm::SMDiagnostic err;<br>
> > +      llvm::Module *libclc_mod = llvm::ParseIRFile(libclc_path.str(), err,<br>
> > +                                                   mod->getContext());<br>
> > +      if (llvm::Linker::LinkModules(mod, libclc_mod,<br>
> > +                                    llvm::Linker::DestroySource,<br>
> > +                                    &err_str)) {<br>
> > +         throw build_error(err_str);<br>
> > +      }<br>
> > +#endif<br>
> ><br>
> >        // Add a function internalizer pass.<br>
> >        //<br>
> > --<br>
> > 1.7.8.6<br>
> ><br>
> > _______________________________________________<br>
> > mesa-dev mailing list<br>
> > <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> > <a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
> ><br>
</div></div></blockquote></div><br></div></div>