From BlenderWiki

Jump to: navigation, search

Installing LLVM & Clang from svn (tested on linux)

Use this if you cant get a pre-compiled llvm/clang or if you want to have the lastest clang.

This script installs llvm & clang from source, re-running will update the installation.

echo ""
if [ -d $SRCDIR/llvm/.svn ] ; then
	echo "Updating "$SRCDIR"/llvm ..."
	svn up $SRCDIR/llvm $SRCDIR/llvm/tools/clang
	echo "Checking out "$SRCDIR"/llvm ..."
	svn checkout $SRCDIR/llvm
	svn checkout $SRCDIR/llvm/tools/clang
rm -rf $INSTDIR
mkdir $SRCDIR/llvm_cmake
cd $SRCDIR/llvm_cmake
echo ""
echo "Building..."
cmake ../llvm \
make -j6
echo ""
echo "Installing..."
make install
cp $SRCDIR/llvm/tools/clang/tools/scan-view/scan-view $INSTDIR/bin/
cp $SRCDIR/llvm/tools/clang/tools/scan-view/*.py $INSTDIR/bin/
cp $SRCDIR/llvm/tools/clang/tools/scan-build/scan-build $INSTDIR/bin/
cp $SRCDIR/llvm/tools/clang/tools/scan-build/ccc-analyzer $INSTDIR/bin/
cp $SRCDIR/llvm/tools/clang/tools/scan-build/c++-analyzer $INSTDIR/bin/
cp $SRCDIR/llvm/tools/clang/tools/scan-build/sorttable.js $INSTDIR/bin/
cp $SRCDIR/llvm/tools/clang/tools/scan-build/scanview.css $INSTDIR/bin/
echo ""
echo "Done!"

Configuring CMake

Assuming you know about building with cmake and blender see: Dev:2.5/Doc/Building_Blender/Linux/Ubuntu/CMake

clang will need to be added to the $PATH, edit your ~/.bashrc and add this line.

export PATH=$PATH:/opt/llvm/bin

Run cmake with these args.

cmake ../blender \
	-DCMAKE_CXX_COMPILER:FILEPATH=/opt/clang/bin/c++-analyzer \


  • You may need to explicitly add in GCC includes, eg:
    -DCMAKE_CXX_FLAGS:STRING="-I/usr/include/c++/4.5.2 -I/usr/include/c++/4.5.2/x86_64-unknown-linux-gnu"
  • /usr/share/clang/scan-build/c++-analyzer is the default path if you use a pre-compiled build
  • on GCC 4.6 you may get an error with __extern_always_inline
    In this case you can use -DCMAKE_CXX_FLAGS:STRING="-D__extern_always_inline=inline"

Compiling Blender

The usual make in the cmake dir will build blender however clang can output nice error html like this

To get this html output run...

export CCC_ANALYZER_CPLUSPLUS=1  # for C++ analysis 
scan-build -o /tmp/clang make -j6

After building (takes about an 1.5 hrs for me), you will have a directory like /tmp/clang/2011-01-07-2/ with html ouput of scan-build.

Continuous Static Checker Server

Currently we have blender static check running on a server.

This is doing C checks only because there is a header issue with clang and gcc headers on this system.