Chromium Chronicle n°7: source de prétraitement

Épisode 7:Bruce Dawson à Seattle, Washington (octobre 2019)
Épisodes précédents

Parfois, il est utile de compiler manuellement un seul fichier source Chromium, par exemple pour tester des options d'optimisation du compilateur, pour le prétraiter dans un seul fichier afin de comprendre des détails subtils de la macro ou pour minimiser un bug de compilation.

Quelques astuces permettent à un développeur Chromium de rechercher et d'exécuter la commande qui compile un fichier source particulier, en apportant les modifications nécessaires.

Commencez par accéder à votre répertoire de sortie et utilisez autoninja (ou Ninja) pour compiler le fichier qui vous intéresse (et toutes ses dépendances) en utilisant le suffixe ^. Ce suffixe indique à ninja de créer la sortie de l'élément file—version.o spécifié dans ce cas. Appuyez ensuite sur le fichier et compilez-le (et le seul) à nouveau avec l'indicateur -v (détail) en ninja:

Sous Linux ou OSX:

autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^

Dans l'interface système de commande de Windows, ^ est un caractère spécial qui doit être échappé:

C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^

Le résultat standard de la commande autoninja -v se présente comme suit (abrégée de manière significative):

..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...

Cette commande vous permet de compiler le fichier qui vous intéresse. Pour obtenir la sortie prétraitée, procédez comme suit:

Sous Linux ou OSX, supprimez le bloc -o obj/base/base/version.o à la fin et ajoutez -E. Cela indique au compilateur d'imprimer le fichier prétraité sur stdout.

Redirigez la sortie vers un fichier comme celui-ci:

../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i

Sous Windows, supprimez l'option /showIncludes depuis le début (elle affiche une ligne de sortie pour chaque #include), puis ajoutez /P afin de prétraiter le fichier au lieu de le compiler. Les résultats sont enregistrés dans le répertoire actuel sous version.i:

..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P

Vous pouvez maintenant examiner le fichier prétraité pour voir ce que font réellement les macros, ou apporter des modifications expérimentales à un commutateur de compilation et le recompiler pour voir ce qui se passe.

Autres ressources

  • Compilations Chrome rapides: pour plus de conseils d'optimisation des builds (sur Windows).
  • ETW: découvrez comment détecter les problèmes de performances Windows (dans Chrome ou dans la compilation) en lisant la documentation ETW (également appelée Xperf).