<div dir="ltr">Hi Tim,<div><br></div><div>I ran into the same issue today. I think what's happening is that you (and I) first did an in-tree autoconf build, then started an out-of-tree cmake build, and manually deleted all the autoconf-generated files that cmake complained about. However, ../llvm-git/tools/clang/lib/StaticAnalyzer/Checkers/Checkers.inc didn't get deleted (not sure why cmake didn't warn about that one), so the old autoconf-generated Checkers.inc got picked up by clang during the cmake build. The fix which worked for me was to run</div>
<div><br></div><div> rm ../llvm-git/tools/clang/lib/StaticAnalyzer/Checkers/Checkers.inc<br></div><div><br></div><div>Nico (in case anyone else ever websearches for this error message)</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Tue, Aug 13, 2013 at 1:00 AM, Tim Murphy <span dir="ltr"><<a href="mailto:tnmurphy@gmail.com" target="_blank">tnmurphy@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I had a couple of mysterious build problems on the svn trunk recently<br>
and I'm not smart enough to fix them but I thought I could at least<br>
mention them to someone else.  I don't know if the problems are really<br>
bugs or just my poor reading of the build instructions.<br>
<br>
I was building with clang and clang++ 3.3 on Fedora 19 x86_64. I don't<br>
remember the revision at this point although it was Sunday 11th August<br>
and must have been on or before r161722.<br>
<br>
1. GNU Autotools build.<br>
Whatever I did, I couldn't get this to work.  I tried building only<br>
the x86_64 platform and that caused a lot of failures from pieces of<br>
code that obviously expected the other platforms to be there.  When I<br>
built with all the platforms I got almost everything to build but<br>
still had errors about the MBlaze platform (obviously llvm not clang)<br>
and then some much more mysterious problems which seemed to be related<br>
to undefined macros that were clang related.  I forgot to save the<br>
output from this which is stupid and I'm not greatly eager to repeat<br>
the experience but I certainly will if asked.  I don't know if<br>
autotools is supposed to be maintained but if so then it doesn't work<br>
for me.<br>
<br>
2. Cmake<br>
With cmake there was eventual success but I had to patch it because I<br>
reached something very hard to understand that related to namespaces.<br>
I don't want to submit a full patch because I don't really understand<br>
the problem and what I did could easily have been incorrect but I<br>
thought that the registration of checkers was not very uniform and<br>
seemed to be happening in the wrong namespaces. It might have been a<br>
clang3.3 bug in the way namespaces are handled - that is the only<br>
reason I can imagine for everyone else being able to build this and<br>
not me.<br>
<br>
The kind of error I got was:<br>
<br>
========<br>
[ 96%] Building CXX object<br>
tools/clang/lib/StaticAnalyzer/Checkers/CMakeFiles/clangStaticAnalyzerCheckers.dir/DebugCheckers.cpp.o<br>
/home/tim/build/llvm/tools/clang/lib/StaticAnalyzer/Checkers/DebugCheckers.cpp:200:12:<br>
error:<br>
      out-of-line definition of 'registerExplodedGraphViewer' does not<br>
match any declaration in<br>
      namespace 'clang::ento'<br>
void ento::registerExplodedGraphViewer(CheckerManager &mgr) {<br>
========<br>
<br>
e.g. in lib/StaticAnalyzer/Checkers/CheckSecuritySyntaxOnly.cpp I had<br>
to do this kind of thing to get past namespace errors<br>
<br>
 #define REGISTER_CHECKER(name) \<br>
-void ento::register##name(CheckerManager &mgr) {\<br>
+void clang::ento::register##name(CheckerManager &mgr) {\<br>
   mgr.registerChecker<SecuritySyntaxChecker>()->filter.check_##name = true;\<br>
 }<br>
<br>
And then there were other complaints about other functions that<br>
weren't declared in the clang:ento namespace but changing them like<br>
this didn't work (in lib/StaticAnalyzer/Checkers/DebugCheckers.cpp):<br>
<br>
-void ento::registerExplodedGraphViewer(CheckerManager &mgr) {<br>
+void clang::ento::registerExplodedGraphViewer(CheckerManager &mgr) {<br>
   mgr.registerChecker<ExplodedGraphViewer>();<br>
 }<br>
<br>
only this worked:<br>
<br>
-void ento::registerExplodedGraphViewer(CheckerManager &mgr) {<br>
+namespace clang { namespace ento {<br>
+void registerExplodedGraphViewer(CheckerManager &mgr) {<br>
   mgr.registerChecker<ExplodedGraphViewer>();<br>
 }<br>
+}}<br>
<br>
<br>
The total list of modified files was:<br>
<br>
ndex: lib/Frontend/CMakeLists.txt   (had to add LLVMBitReader for some reason)<br>
Index: lib/StaticAnalyzer/Checkers/CheckSecuritySyntaxOnly.cpp<br>
Index: lib/StaticAnalyzer/Checkers/DebugCheckers.cpp<br>
Index: lib/StaticAnalyzer/Checkers/MallocChecker.cpp<br>
Index: lib/StaticAnalyzer/Checkers/NonNullParamChecker.cpp<br>
<br>
I'm sorry this isn't more detailed or reasoned. Hope it's useful to someone.<br>
<br>
Regards,<br>
<br>
Tim<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
You could help some brave and decent people to have access to<br>
uncensored news by making a donation at:<br>
<br>
<a href="http://www.thezimbabwean.co.uk/friends/" target="_blank">http://www.thezimbabwean.co.uk/friends/</a><br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</font></span></blockquote></div><br></div>