<p dir="ltr">If your cut-n-paste is accurate, you seem to be missing a closing quote for CMAKE_CXX_LINK_FLAGS.</p>
<p dir="ltr">hth...<br>
don</p>
<div class="gmail_quote">On Jul 8, 2015 2:22 AM, "David A. Greene" <<a href="mailto:greened@obbligato.org">greened@obbligato.org</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><a href="mailto:greened@obbligato.org">greened@obbligato.org</a> (David A. Greene) writes:<br>
<br>
> I looked at the instructions on the libc++ page and for Linux it<br>
> recommends building with -stdlib=libc++ -lc++abi.<br>
><br>
> Encouraging!  Now, how do I get those options to a CMake build of<br>
> llvm/clang?  There's CMAKE_CXX_FLAGS but I'm not sure how to set it.<br>
> Will a simple -DCMAKE_CXX_FLAGS=-stdlib=libc++ suffice?  Will that<br>
> properly propagate from the command line without overriding all the<br>
> flags set by individual CMakeLists.txt files?  I don't want to, for<br>
> example, lose optimization flags on a release build.<br>
><br>
> And what about linker flags?  What CMake variable controls those?  The<br>
> Google tells me nothing.<br>
<br>
I discovered CMAKE_CXX_LINK_FLAGS.  So I'm configuring like this:<br>
<br>
cmake -G "Unix Makefiles" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_CXX_LINK_FLAGS="-stdlib=libc++ -lc++abi -DPYTHON_EXECUTABLE=/opt/python/2.7.9/bin/python2.7 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/clang/dev -DLLVM_APPEND_VC_REV=ON -DLLVM_ENABLE_CXX1Y=ON -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_PARALLEL_COMPILE_JOBS=32 -DLLVM_PARALLEL_LINK_JOBS=32 -DLLVM_BUILD_DOCS=ON -DCLANG_INCLUDE_DOCS=ON -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_CXX_ABI_INCLUDE_PATHS="/path/to/llvm/projects/libcxxabi/include" /path/to/llvm<br>
<br>
This gets me a bit further but I am stuck here:<br>
<br>
Linking CXX shared library ../../../../lib/libclang.so<br>
cd /ptmp/dag/build/clang/tools/clang/tools/libclang && /opt/cmake/3.0.1/bin/cmake -E cmake_link_script CMakeFiles/libclang.dir/link.txt --verbose=1<br>
/cray/css/compiler/cost/tools/x86_64-unknown-linux-gnu/clang/dev/bin/clang++  -fPIC -stdlib=libc++ -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -std=c++1y -ffunction-sections -fdata-sections -fno-common -Woverloaded-virtual -fno-strict-aliasing -Wno-nested-anon-types -O3   -Wl,-O3 -Wl,--gc-sections  -Wl,--version-script,/ptmp/dag/build/clang/tools/clang/tools/libclang/libclang.exports   -Wl,-z,defs -shared -Wl,-soname,libclang.so.3.7 -o ../../../../lib/libclang.so.3.7 CMakeFiles/libclang.dir/ARCMigrate.cpp.o CMakeFiles/libclang.dir/BuildSystem.cpp.o CMakeFiles/libclang.dir/CIndex.cpp.o CMakeFiles/libclang.dir/CIndexCXX.cpp.o CMakeFiles/libclang.dir/CIndexCodeCompletion.cpp.o CMakeFiles/libclang.dir/CIndexDiagnostic.cpp.o CMakeFiles/libclang.dir/CIndexHigh.cpp.o CMakeFiles/libclang.dir/CIndexInclusionStack.cpp.o CMakeFiles/libclang.!<br>
 dir/CIndexUSRs.cpp.o CMakeFiles/libclang.dir/CIndexer.cpp.o CMakeFiles/libclang.dir/CXComment.cpp.o CMakeFiles/libclang.dir/CXCursor.cpp.o CMakeFiles/libclang.dir/CXCompilationDatabase.cpp.o CMakeFiles/libclang.dir/CXLoadedDiagnostic.cpp.o CMakeFiles/libclang.dir/CXSourceLocation.cpp.o CMakeFiles/libclang.dir/CXStoredDiagnostic.cpp.o CMakeFiles/libclang.dir/CXString.cpp.o CMakeFiles/libclang.dir/CXType.cpp.o CMakeFiles/libclang.dir/IndexBody.cpp.o CMakeFiles/libclang.dir/IndexDecl.cpp.o CMakeFiles/libclang.dir/IndexTypeSourceInfo.cpp.o CMakeFiles/libclang.dir/Indexing.cpp.o CMakeFiles/libclang.dir/IndexingContext.cpp.o ../../../../lib/libclangAST.a ../../../../lib/libclangBasic.a ../../../../lib/libclangFrontend.a ../../../../lib/libclangIndex.a ../../../../lib/libclangLex.a ../../../../lib/libclangSema.a ../../../../lib/libclangTooling.a ../../../../lib/libclangARCMigrate.a -ldl ../../../../lib/libLLVMCore.a ../../../../lib/libLLVMSupport.a ../../../../lib/libclangFormat.a!<br>
  ../../../../lib/libclangToolingCore.a ../../../../lib/libclangASTMatchers.a ../../../../lib/libclangFrontend.a ../../../../lib/libclangDriver.a ../../../../lib/libclangParse.a ../../../../lib/libLLVMMCParser.a ../../../../lib/libLLVMOption.a ../../../../lib/libclangSerialization.a ../../../../lib/libclangSema.a ../../../../lib/libclangEdit.a ../../../../lib/libLLVMBitReader.a ../../../../lib/libclangStaticAnalyzerCheckers.a ../../../../lib/libclangStaticAnalyzerCore.a ../../../../lib/libclangRewrite.a ../../../../lib/libclangAnalysis.a ../../../../lib/libclangAST.a ../../../../lib/libclangLex.a ../../../../lib/libclangBasic.a ../../../../lib/libLLVMCore.a ../../../../lib/libLLVMMC.a ../../../../lib/libLLVMSupport.a -lrt -ldl -lncurses -lpthread -lz -lm -Wl,-rpath,"\$ORIGIN/../lib"<br>
../../../../lib/libLLVMSupport.a(Debug.cpp.o): In function `llvm::dbgs()':<br>
/ptmp/dag/llvm/llvm-ecosystem/llvm/lib/Support/Debug.cpp:(.text._ZN4llvm4dbgsEv+0x1b): undefined reference to `__cxa_guard_acquire'<br>
/ptmp/dag/llvm/llvm-ecosystem/llvm/lib/Support/Debug.cpp:(.text._ZN4llvm4dbgsEv+0x11a): undefined reference to `__cxa_guard_release'<br>
<br>
And a bazillion other undefined references.<br>
<br>
Is the problem the lack of -lc++abi on the link line?  That command<br>
comes from CMakeFiles/libclang.dir/link.txt which I can view and has the<br>
command above in it.  However, I cannot for the life of me figure out<br>
how that gets generated.  So I don't even know what CMake command I need<br>
to influence to get the proper link flags added.<br>
<br>
I tried messing around the LIBCLANG_LINK_FLAGS (discovered in libclang's<br>
CMakeLists.txt) but it didn't do anyting.<br>
<br>
Has anyone built this way on Linux?  I found a couple of references<br>
online but they seem pretty out of date.<br>
<br>
                          -David<br>
<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" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div>