<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="" style="word-wrap:break-word">
<div class="">Hi,</div>
<div class=""><br class="">
</div>
<div class="">It would appear that I uncovered a very old typo in the Makefile of clang. For some reason it wouldn't break the build until recently (maybe <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_svn_llvm-2Dproject_cfe_trunk-40224924&d=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=hY1G8rUW5njnvzTR_t5j_b0d7g9zj7H_3MiAOu5xUQU&s=9yBg2ciwtuHeDlOEzmgYAcgbFQQKB84B9I0K6yiX__0&e=" class="">https://llvm.org/svn/llvm-project/cfe/trunk@224924</a> but
 I haven’t checked).</div>
<div class=""><br class="">
</div>
<div class="">See the patch in attachment and the test plan below.</div>
<div class=""><br class="">
</div>
<div class="">Best,</div>
<div class="">
<div class="">Mathieu</div>
</div>
<div class=""><br class="">
</div>
<div class=""></div>
</div>
<div class="" style="word-wrap:break-word">
<div class=""></div>
<div class=""><br class="">
</div>
<div class="">----Test plan——</div>
<div class="">1) before the patch</div>
<div class="">
<div class=""><br class="">
</div>
<div class="">(a) Building with make fails for me</div>
<div class=""><br class="">
</div>
<div class="">Under Mac OS 10.10.3 (Xcode 6.2), with llvm, clang, compiler-rt, and libcxx checked out from recent git hashes, the following steps fail:</div>
<div class="">mkdir llvm-release</div>
<div class="">
<div class="">cd llvm-release</div>
</div>
<div class="">../llvm/configure --enable-libcpp --enable-cxx11 --disable-assertions --enable-optimized --disable-bindings</div>
<div class="">make -j 8</div>
<div class=""><br class="">
</div>
<div class="">/Users/mathieubaudet/git/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp:1046:33: error: unknown type name 'CLANG_LIBDIR_SUFFIX'</div>
<div class="">    StringRef ClangLibdirSuffix(CLANG_LIBDIR_SUFFIX);</div>
<div class=""><br class="">
</div>
<div class="">The reason is that "tools/clang/include/clang/Config/config.h" (which defines CLANG_LIBDIR_SUFFIX) is screened by "../llvm/tools/clang/include/clang/Config/config.h" (which does not).</div>
<div class=""><br class="">
</div>
<div class="">(b) From llvm-release, "make -C tools/clang/lib/Frontend printvars” gives:</div>
<div class=""><br class="">
</div>
<div class="">llvm[0]: Compile.CXX  :   clang++ -I/Users/mathieubaudet/git/llvm-release/include -I/Users/mathieubaudet/git/llvm-release/tools/clang/lib/Frontend -I/Users/mathieubaudet/git/llvm/include -I/Users/mathieubaudet/git/llvm/tools/clang/lib/Frontend
  -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/Users/mathieubaudet/git/llvm/tools/clang/lib/Frontend/../../include -I/Users/mathieubaudet/git/llvm-release/tools/clang/lib/Frontend/../../include -O3  -stdlib=libc++
 -std=c++11 -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-common -Wcast-qual -fno-strict-aliasing   -m64 -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings  -Wcovered-switch-default -Wno-uninitialized  -Wno-missing-field-initializers
 -Wno-comment -c</div>
<div class=""><br class="">
</div>
<div class="">2) after the patch</div>
<div class=""><br class="">
</div>
<div class="">(a) Building with make (same steps, from an empty release dir) succeeds.</div>
<div class=""><br class="">
</div>
<div class="">(b) From llvm-release, "make -C tools/clang/lib/Frontend printvars” gives:</div>
<div class=""><br class="">
</div>
<div class="">llvm[0]: Compile.CXX  :   clang++ -I/Users/mathieubaudet/git/llvm-release/include -I/Users/mathieubaudet/git/llvm-release/tools/clang/lib/Frontend -I/Users/mathieubaudet/git/llvm/include -I/Users/mathieubaudet/git/llvm/tools/clang/lib/Frontend
  -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/Users/mathieubaudet/git/llvm-release/tools/clang/lib/Frontend/../../include -I/Users/mathieubaudet/git/llvm/tools/clang/lib/Frontend/../../include -O3  -stdlib=libc++
 -std=c++11 -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-common -Wcast-qual -fno-strict-aliasing   -m64 -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings  -Wcovered-switch-default -Wno-uninitialized  -Wno-missing-field-initializers
 -Wno-comment -c</div>
<div class=""><br class="">
</div>
</div>
</div>
</body>
</html>