Articles avec le tag ‘Clang’

Compiler Gimp avec LLVM/Clang et analyse statique

Clang, qui utilise l’infrastructure de LLVM, est un compilateur pour la famille de langage du C. Son but est d’offrir une alternative moderne à GCC. Avec Clang arrive notamment un très sympathique analyseur statique du code source. Nous allons appliquer ça à Gimp.

Pour ça, j’ai lâchement copié et adapté la procédure donné par Campbell Barton, de la team Blender. (http://wiki.blender.org/index.php/User:Ideasman42/BlenderClang).

Voici ce que ça donne à la sauce Gimp:

Etape 1: compiler LLVM/Clang

J’ai d’abord essayé avec la version fournis dans ArchLinux, mais Clang s’arrêtait avec une fatal error. Ça se passe bien mieux avec la version de développement. Pour la récupérer, le script de Campbell Barton fonctionne très bien.

Etape 2: configurer la compilation de Gimp

Déjà, il faut ajouter les binaires de LLVM dans le PATH:

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

La seule différence avec une compilation classique, c’est qu’on demande explicitement le compilateur de CLang:

CC=ccc-analyzer ./autogen.sh --prefix=/opt/gimp/

Etape 3: compiler

Si vous voulez juste compiler, la procédure ne change pas.

make -j3

Si vous voulez lancer en même temps une analyse statique, il faut utiliser scan-build:

scan-build -o clang make -j3

Attention, une compilation avec analyse statique prend pas mal de temps (3h40 avec mon Core 2 Duo E4500).

Etape 4: profit !

L’analyseur statique de LLVM va probablement trouver tout un tas de bug dans le code. Il y a bien sûr des faux positifs, mais c’est dans l’ensemble remarquablement bien fait ! Vous trouverez le résultat de l’analyse de master que j’ai fait aujourd’hui ici: http://pellelatarte.fr/dawa/gimp-llvm/