<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 7, 2009, at 7:57 AM, 罗勇刚(Yonggang Luo) wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">I've committed my suggested fix. There's no point in setting the LINKER_LANGUAGE property of every LLVM library, because CMake figures out the right language based on the file extensions of the source files.  </blockquote>

</div><div>Yes, CMake figures out the <b>right language</b> based on the file extensions of the source files.  </div><div>But, llvm is based on <b>C++</b></div></blockquote><div><br></div><div>That does not mean that every library or application built within the LLVM tree must be linked as C++.</div><br><blockquote type="cite"><div>for example, if you create a application just containing <b>C </b>extension files,</div>

<div>but using llvm as the midware, then CMake system <b>must </b>auto  recognize the LINKER_LANGUAGE as CXX, but not C. Even all source files in this project is C extension.</div><div><br></div><div>Now, it's using a strange hack, just </div>

<div><div><br></div><div>set_target_properties(c-index-test</div><div>  PROPERTIES</div><div>  LINKER_LANGUAGE CXX)</div><div>It's not reasonable, because it's not because of  c-index-test.c lead the </div></div>
<div>
LINKER_LANGUAGE  to be CXX</div><div>but llvm make this happened, so it's shouldn't be placed at </div><div>c-index-test.c/CMakeLists.txt</div><div><b>and should be placed at </b></div><div>AddLLVM.cmake</div><div>

That's means, every  <b>new project(OR executable)</b> using LLVM as the dependent, </div><div>then  then <br>LINKER_LANGUAGE   must be set to CXX in an auto way, </div><div>but not set it manually.</div></blockquote></div><div><br></div><div>There is only one place in the entire LLVM + Clang source tree where we need to explicitly set the linker language to C++. There is no point in trying to generalize when there is only one example, and we don't know if the next target we add that has only .c files will require C++ linkage or not. If it does, we can decide to generalize then (or not).</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>- Doug</div></body></html>