<div dir="ltr"><div>This is a known problem for external tools and is a huge pain. The underlying problem is that the resource dir is looked up relative to the current executable. This works fine for clang which is installed in the right place so that this works.<br>
</div><div><br></div><div>The exact path that it looks up relative to the executable can be found in CompilerInvocation::GetResourcesPath in lib/Frontend/CompilerInvocation.cpp <<a href="http://clang.llvm.org/doxygen/CompilerInvocation_8cpp_source.html#l00895">http://clang.llvm.org/doxygen/CompilerInvocation_8cpp_source.html#l00895</a>>.</div>
<div><br></div><div>Here are 3 ways to work around this:</div><div><br></div><div>1. Put your executable in the same place as the clang binary.</div><div>2. Copy/symlink the resource dir to the same relative location from your executable as they are from the clang binary.</div>
<div>3. Pass the argument `-resource-dir /path/to/resource/dir`. It is a `clang -cc1` argument so you need to use the `-Xclang` prefix to pass it, i.e. `-Xclang -resource-dir -Xclang /path/to/resource/dir`.</div><div><div>
<br></div><div>-- Sean Silva</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 7, 2014 at 7:59 AM, Erik Verbruggen <span dir="ltr"><<a href="mailto:erik.verbruggen@me.com" target="_blank">erik.verbruggen@me.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 have a small test program that behaves differently on linux and mac:<br>
<br>
     CXIndex idx = clang_createIndex(1, 1);<br>
    struct CXUnsavedFile unsaved[1];<br>
    unsaved[0].Filename = "tst.c";<br>
    unsaved[0].Contents = "#include <xmmintrin.h>\n";<br>
    unsaved[0].Length = strlen(unsaved[0].Contents);<br>
    CXTranslationUnit tu = clang_parseTranslationUnit(idx, "tst.c", 0, 0, unsaved, 1, 0);<br>
<br>
On macos, the translation unit is fine: when running clang_getInclusions on it, I get the full path of xmmintrin.h. However, on linux this fails with "tst.c:1:10: fatal error: 'xmmintrin.h' file not found". Running it on the command-line works fine though.<br>

<br>
So, is this expected behaviour, or a bug?<br>
<br>
-- Erik.<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>
</blockquote></div><br></div>