简体   繁体   中英

How to build clang with clang?

I allready build clang(3.2) with MSVC and MinGW succesfully. But I think it's not the "purely" clang. So could someone give me some instructions or materials about how to use clang to build clang(Windows/Linux)? And could we use clang indepently(Not depent on GCC or MSVC). Thanks all!

Well get an older version of clang like 3.1. (You can pretty much install any version that comes precompiled for your OS)

Get the sources for a newer version like 3.2.

Then (i like cmake+ninja ( http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html ))

if you unpacked llvm source to ~/llvm_source/llvm

cd ~/llvm_source
mkdir build
cd build
CXX=clang++ CC=clang cmake -G Ninja ../llvm -DCMAKE_BUILD_TYPE=Release
ninja

If you want it for make

CXX=clang++ CC=clang cmake ../llvm -DCMAKE_BUILD_TYPE=Release
make

Thats it.

Have fun.

The current method (as of 27th Feb 17') seems to be as follows,

cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++  $LLVM_SRC_DIR # -G Ninja

Where CMAKE_C_COMPILER and CMAKE_CXX_COMPILER are CMake variables define by -D . Somehow, these variables don't appear in llvm_src/CMakeLists.txt

When making clang with clang, you will coincide with the already existing definitions of builtin functions and those which yet to be defined again - the compiler gets into troubles of doubled consciousness!!! I've got the next:


clang/Basic/BuiltinsX86.def:1907:1: note: previous definition is here TARGET_HEADER_BUILTIN(_ReadWriteBarrier, "v", "nh", "intrin.h", ALL_MS_LANGUAGES, "")

clang\CodeGen\code\CGBuiltin.cpp:638:1: error: reference to '_bittest' is ambiguous BitTest BitTest::decodeBitTestBuiltin(unsigned BuiltinID) { ^ include\winnt.h:2236:17: note: expanded from macro 'BitTest' #define BitTest _bittest ^ include\psdk_inc/intrin-impl.h:1707:16: note: candidate found by name lookup is '_bittest' __buildbittest(_bittest, __LONG32, "l", "I") ^ clang\CodeGen\code\CGBuiltin.cpp:620:8: note: candidate found by name lookup is '(anonymous namespace)::_bit test' struct BitTest { ^ include\winnt.h:2236:17: note: expanded from macro 'BitTest' #define BitTest _bittest ^ clang\CodeGen\code\CGBuiltin.cpp:696:45: error: reference to '_bittest' is ambiguous BitTest BT, ^ include\winnt.h:2236:17: note: expanded from macro 'BitTest' #define BitTest _bittest ^ include\psdk_inc/intrin-impl.h:1707:16: note: candidate found by name lookup is '_bittest' __buildbittest(_bittest, __LONG32, "l", "I")


And so on and on ...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM