NOTE: Do not make substantive changes to this document without consulting Benjamin Smedberg <[email protected]> or one of the build-config peers. Lancer simplement configure et make avec les options par défaut ne vous donnera pas un bon exécutable fonctionnel. Vous devez utiliser un fichier .mozconfig
pour obtenir une compilation distribuable raisonnable. Veuillez lire ces instructions attentivement avant de lancer la compilation.
Utilisation d'un fichier de configuration .mozconfig
Bien qu'il soit possible d'appeler manuellement <tt>configure</tt> avec des options sur la ligne de commande, ce n'est pas du tout recommandé. Au lieu de cela, placez un fichier .mozconfig dans votre répertoire de source (mozilla/.mozconfig) ou dans votre répertoire HOME (~/.mozconfig).
Vous pouvez également définir une variable d'environnement MOZCONFIG contenant le chemin complet vers votre fichier de configuration :
export MOZCONFIG=~/mozilla/mozconfig-firefox
Quel que soit le nom réel du fichier que vous utiliserez, nous ferons toujours référence à ce fichier comme étant le fichier .mozconfig
.
Un fichier <tt>.mozconfig</tt> contient deux types d'options :
- Les options préfixées par
mk_add_options
sont passées à <tt>client.mk</tt>, et sont habituellement des options contrôlant le checkout et la mise à jour CVS. - Les options préfixées par
ac_add_options
sont passées à <tt>configure</tt>, et affectent le processus de compilation.
Ces options seront ensuite automatiquement utilisées lorsque ./configure
ou make -f client.mk
sont exécutés.
Compilation avec un répertoire objdir
Il est vivement recommandé d'utiliser un répertoire objdir lors de la compilation de Mozilla. Cela signifie que le code source et les fichiers objet ne seront pas mélangés dans votre système. Si vous utilisez un répertoire objdir, vous pouvez compiler plusieurs applications (par exemple Firefox et Thunderbird) à partir du même arbre de sources.
Le fait d'utiliser un répertoire objdir signifie que tout fichier Makefile.in
dans votre arbre de sources sera transformé en un Makefile dans le répertoire objdir. Les répertoires parents du fichier Makefile.in
seront les mêmes dans le répertoire objdir. Par exemple, pour le fichier <tt>mozilla/modules/plugin/base/src/Makefile.in</tt>, avec une valeur objdir de @TOPSRCDIR@/obj-debug
, les chemins de fichier et de répertoire <tt>mozilla/obj-debug/modules/plugin/base/src/Makefile</tt> sera créé. Ce Makefile fera automatiquement référence aux fichiers source dans le répertoire <tt>mozilla/modules/plugin/base/src</tt>.
Si vous avez besoin de relancer manuellement configure, faites-le depuis votre répertoire objdir et en donnant le chemin absolu vers le script de configuration. Par exemple, si vous êtes sous Windows et que votre arbre de sources est dans <tt>/cygdrive/c/Projects/FIREFOX/mozilla</tt>, alors vous devriez lancer <tt>/cygdrive/c/Projects/FIREFOX/mozilla/configure</tt> depuis votre répertoire objdir chaque fois que vous avez besoin de relancer configure manuellement.
L'option mozconfig suivante active un répertoire objdir :
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
Choix d'une application
- Suite Mozilla (SeaMonkey)
-
Spécifiez les options suivantes :
ac_add_options --enable-application=suite # Utilisez la commande suivante pour récupérer SeaMonkey depuis le CVS : mk_add_options MOZ_CO_PROJECT=suite
- Browser (Firefox)
-
Votre fichier .mozconfig doit mettre en source le fichier mozconfig par défaut de Firefox :
. $topsrcdir/browser/config/mozconfig
Ne copiez et collez pas le contenu du fichier dans votre mozconfig, car celui-ci peut changer avec le temps !
- Mail (Thunderbird)
-
Votre fichier .mozconfig doit mettre en source le fichier mozconfig par défaut de Thunderbird :
. $topsrcdir/mail/config/mozconfig
Ne copiez et collez pas le contenu du fichier dans votre mozconfig, car celui-ci peut changer avec le temps ! - Calendar (Sunbird)
-
Votre fichier .mozconfig doit mettre en source le fichier mozconfig par défaut de Sunbird :
. $topsrcdir/calendar/sunbird/config/mozconfig
Ne copiez et collez pas le contenu du fichier dans votre mozconfig, car celui-ci peut changer avec le temps !
- XULRunner
-
Votre fichier .mozconfig doit mettre en source le fichier mozconfig par défaut de XULRunner :
. $topsrcdir/xulrunner/config/mozconfig
Ne copiez et collez pas le contenu du fichier dans votre mozconfig, car celui-ci peut changer avec le temps !
Sélection des options de compilation
Les options de compilation à choisir dépendent de l'application compilée et de l'utilisation qui en sera faite. Si vous désirez l'utiliser régulièrement, vous voudrez une compilation release sans informations de débogage supplémentaires ; si vous êtes un développeur désirant modifier le code source, vous voudrez probablement une compilation non optimisée avec des macros de débogage supplémentaires.
Il existe un outil Web qui peut vous aider à créer une bonne configuration : le Mozilla Build Configurator. Pour l'instant, il est surtout utile pour la suite Mozilla ; compiler Firefox ou d'autres applications utilisant le toolkit demande d'éditer manuellement le fichier généré.
Il existe de nombreuses options reconnues par le script de configuration qui sont des options à but très spécifique pour les intégrateurs ou d'autres situations spéciales, et ne doivent pas être utilisées pour compiler la suite complète ou les applications XUL. La liste complète des options peut être obtenue en lançant ./configure --help ou en consultant le Mozilla Build Configurator.
Si vous ne savez pas ce qu'une option de configuration fait, ne l'utilisez pas ! Les options de compilation suivantes sont les plus courantes :
Optimisation
- ac_add_options --enable-optimize
- Active les options d'optimisation par défaut du compilateur
- ac_add_options --enable-optimize=-O2
- Choisit des options d'optimisation du compilateur particulières. Dans la plupart des cas, cela ne donnera pas le résultat escompté, à moins que vous connaissiez très bien le code de Mozilla.
- ac_add_options --disable-debug
- Désactive les macros de débogage
- ac_add_options --disable-optimize
- Désactive les optimisations du compilateur. Cela rend l'utilisation d'un debugger pas à pas beaucoup plus simple.
- ac_add_options --enable-debug
- Active les macros et autres codes de débogage. Cela peut ralentir significativement l'exécutable, mais est sans prix lorsqu'on rédige des patches.
Toolkit graphique
- ac_add_options --enable-default-toolkit=gtk2|gtk|xlib|qt|cairo-gtk2|cairo-windows|windows|mac|cocoa|cairo-cocoa|os2|beos|photon
-
Sélectionne le toolkit graphique. Ce n'est pas nécessaire pour Windows/OS2/BeOS/Photon, étant donné que ces plateformes sélectionnent automatiquement le toolkit correct. Ce n'est pas nécessaire non plus sous Mac, sauf si vous compilez Camino sur une ancienne branche (Camino utilise --enable-default-toolkit=cocoa).
Sur les plateformes *nix, sélectionne le toolkit graphique à utiliser. GTK2 et GTK sont tous deux testés en profondeur. xlib est considéré comme une plateforme de tierce partie. Qt et cairo sont expérimentaux, vous y trouverez des bugs. Sur le tronc, utilisez cairo-gtk2 (gtk1 et xlib ont été retirés de l'arbre de sources).
- ac_add_options --enable-xft
-
Active le rendu de polices avancé XFT. Cette option est uniquement disponible avec --enable-default-toolkit=gtk2, et est recommandée avec gtk2
- ac_add_options --enable-freetype2
-
Active le rendu de polices freetype. Il s'agit du rendu par défaut pour le toolkit GTK. Non compatible avec --enable-xft
Compilation statique
- ac_add_options --enable-static --disable-shared
-
Ces options produisent un seul exécutable de taille plus importante, dont des composants sont liés statiquement. Cela signifie qu'il y a nettement moins de DLL de composants, ce qui peut améliorer le temps de démarrage. Cepandant, à moins que votre machine de compilation ait beaucoup de mémoire RAM, cette option n'est pas recommandée. 512 Mo de RAM sont un minimum, 1Go est recommandé. Ces options doivent toujours être utilisée ensemble. Si vous utilisez --enable-static, il est recommandé d'aussi utiliser --disable-tests.
- ac_add_options --disable-static --enable-shared
-
Ces options placent les composants dans des bibliothèques partagées séparées. Cela rend le débogage et la compilation incrémentale beaucoup plus facile, mais l'application réultante peut être plus lente et un peu moins performante.
Cette option est activée par défaut.
Extensions
- ac_add_options --enable-extensions=default|all|ext1,ext2,-skipext3
-
Il existe beaucoup de parties de code optionnelles qui se trouvent dans
extensions/
de l'arbre des sources. Beaucoup de ces extensions sont à présent considérées comme une part intégrante de l'expérience de navigation. Il y a une liste d'extensions par défaut pour la suite, et chaque fichier mozconfig spécifique à une application en utilise une série différente par défaut. Certaines extensions ne sont pas compatibles avec toutes les applications, par exemple :- cookie n'est pas compatible avec Thunderbird
- typeaheadfind n'est compatible avec aucune application du toolkit (Firefox, Thunderbird, Sunbird)
À moins de savoir quelles extensions sont compatibles aver quelles applications, n'utilisez pas l'option --enable-extensions ; le système de compilation sélectionnera automatiquement la bonne série d'extensions.
Tests
- ac_add_options --disable-tests
- Par défaut, beaucoup de tests auxiliaires sont activés, ce qui peut aider à déboguer et patcher le code source de Mozilla. Désactiver ces tests peut accélérer le temps de compilation et réduire l'espace disque utilisé considérablement.
Autres options
- ac_add_options --disable-crypto
-
La cryptographie est activée par défaut. Dans certains pays, il peut être illégal d'utiliser ou d'exporter des logiciels de cryptographie. Vous devez connaître les lois en la matière dans votre pays.
Sur les branches 1.7 et aviary, la cryptographie était désactivé par défaut. Il est nécessaire d'y spécifier
--enable-crypto
si vous désirez SSL, SMIME ou d'autres fonctionnalités logicielles utilisant la cryptographie. - ac_add_options --disable-javaxpcom (Sans Java)
-
Par défaut, XULRunner compile le pont Java-XPCOM, qui nécessite un JDK installé. Si vous obtenez l'erreur suivante au lancement de <tt>configure</tt> :
The header jni.h was not found. Set $JAVA_HOME or use --with-java-include-path
, vous pouvez désactiver les dépendances à Java en utilisantac_add_options --disable-javaxpcom
.
Exemples de fichiers .mozconfig
Firefox optimisé statique
. $topsrcdir/browser/config/mozconfig mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt-static ac_add_options --enable-optimize ac_add_options --disable-debug ac_add_options --enable-static ac_add_options --disable-shared ac_add_options --disable-tests
Thunderbird, compilation en mode debug
. $topsrcdir/mail/config/mozconfig mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/tbird-debug mk_add_options MOZ_CO_PROJECT=mail,calendar ac_add_options --disable-optimize ac_add_options --enable-debug
SeaMonkey, optimisé (mais non statique)
mk_add_options MOZ_CO_PROJECT=suite ac_add_options --enable-application=suite mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/suite-opt ac_add_options --enable-optimize ac_add_options --disable-debug
Compilation de plusieurs applications depuis le même arbre de sources
Il est possible de compiler plusieurs applications à partir du même arbre de sources, à partir du moment où vous avez récupéré toutes les sources nécessaires et si vous utilisez un répertoire objdir différent pour chaque application.
Vous pouvez soit créer différents fichiers mozconfig, soit utiliser l'option MOZ_BUILD_PROJECTS pour make.
Utilisation de MOZ_BUILD_PROJECTS dans un seul mozconfig
Pour utiliser MOZ_BUILD_PROJECTS, vous devez spécifier un MOZ_OBJDIR et une option MOZ_BUILD_PROJECTS contenant des noms séparés par des espaces. Chaque nom peut être un nom de répertoire choisi arbitrairement. Pour chaque nom, un sous-répertoire est crée sous le répertoire objdir. Vous devrez ensuite utiliser les options ac_add_app_options avec les noms spécifiés pour activer les différentes applications dans chaque répertoire objet.
Par exemple :
ac_add_options --disable-optimize --enable-debug ac_add_options --enable-default-toolkit=gtk2 --disable-freetype2 --enable-xft mk_add_options MOZ_OBJDIR=/home/amil082/mozilla_trunk/obj-@CONFIG_GUESS@ mk_add_options MOZ_BUILD_PROJECTS="xulrunner browser mail" mk_add_options MOZ_CO_PROJECT="xulrunner browser mail" ac_add_app_options browser --enable-application=browser ac_add_app_options xulrunner --enable-application=xulrunner ac_add_app_options mail --enable-application=mail
Si vous voulez compiler uniquement un projet avec ce fichier mozconfig, utilisez la ligne de commande suivante :
make -f client.mk build MOZ_CURRENT_PROJECT=browser
Ceci compilera uniquement le navigateur (browser).
Utilisation de plusieurs fichiers mozconfig
L'alternative est d'utiliser des fichiers mozconfig séparés.
Par exemple, les instructions suivantes peuvent être utilisées pour compiler Firefox et Thunderbird. Il est d'abord nécessaire de créer trois fichiers mozconfig.
mozconfig-common :
mk_add_options MOZ_CO_PROJECT=browser,mail # ajoutez d'autres options habituelles ici, comme la création d'une compilation statique # et la sésactivation des tests ac_add_options --enable-optimize --disable-debug ac_add_options --disable-tests
mozconfig-firefox :
# inclusion du mozconfig commun . ./mozconfig-common # Compilation de Firefox mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-static ac_add_options --enable-application=browser
mozconfig-thunderbird :
# inclusion du mozconfig commun . ./mozconfig-common # Compilation de Thunderbird mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/thunderbird-static ac_add_options --enable-application=mail
Pour mettre à jour les sources (checkout), lancez les commmandes suivantes :
export MOZCONFIG=/path/to/mozilla/mozconfig-common make -f client.mk checkout
Pour compiler Firefox, utilisez les commandes suivantes :
export MOZCONFIG=/path/to/mozilla/mozconfig-firefox make -f client.mk build
Pour compiler Thunderbird, utilisez les commandes suivantes :
export MOZCONFIG=/path/to/mozilla/mozconfig-thunderbird make -f client.mk build