Préalables à la compilation sous Windows des branches 1.7 et 1.8

par 4 contributeurs :

La version anglaise de cette page a été mise à jour, son contenu est donc incompou obsolète. N'hésitez pas à participer à sa mise à jour à partir
NOTE: Do not make substantive changes to this document without consulting Benjamin Smedberg <benjamin@smedbergs.us> or one of the build-config peers.

Introduction

Ce document est un guide concernant les préalables logiciels à la compilation de Mozilla sur les plateformes Windows pour la branche 1.7 (Mozilla 1.7.*), la branche aviary (Firefox 1.0.*), la branche 1.8.0 (Firefox 1.5.0.*), et la branche 1.8 (Firefox 2). Les préalables à la compilation du tronc de Mozilla sont disponibles dans Préalables à la compilation sous Windows.

Matériel nécessaire

Mozilla prend du temps à compiler. Vous aurez besoin d'un système suffisant pour faire du développement :

  • Processeur Pentium ou équivalent, 266 MHz ou plus, 600 MHz+ recommandés
  • 256 Mo de RAM, 512 Mo recommandés
  • 1,5 Go d'espace disque en NTFS ou 3 Go d'espace disque en FAT, ou plus
  • Un système d'exploitation Windows de classe NT (NT4.0, Windows 2000, Windows XP Professionnel ou Home Edition)

Logiciels nécessaires

Outils GNU pour Microsoft Windows (Cygwin)

Installation de Cygwin

Paquets nécessaires :

  • ash -- shell UNIX-like d'interprétation en ligne de commande (catégorie Base)
  • coreutils -- utilitaires de base GNU (dont fileutils, sh-utils, et textutils) (catégorie Base)
  • diffutils -- utilitaire de comparaison de fichiers (catégorie Base)
  • findutils (catégorie Base)
  • gawk -- langage de pattern matching (catégories Base et Interpretors)
  • grep -- outil de recherche de texte (catégorie Base)
  • make -- analyseur de dépendances pour la compilation de logiciels (catégorie Devel)
  • patchutils -- une petite série de programmes opérant sur les fichiers patch (catégorie Devel)
  • perl -- un langage de script utilisé pour contrôler certaines parties de la compilation (catégorie Interpreters)
  • sed -- un langage de recherche et remplacement (catégorie Base)
  • unzip -- outil d'extraction de fichiers zip (catégorie Archive)
  • zip -- outil de création de fichiers zip (catégorie Archive)

Si vous envisagez de modifier les fichiers configure.in du système de configuration, vous aurez besoin d'installer le package autoconf-2.13 également (n'utilisez pas autoconf-2.5x ou 2.60).

Il est vivement recommandé de choisir les fins de lignes « DOS » au cours de l'installation de cygwin.

Vous pouvez utiliser ActiveState perl au lieu du package perl de cygwin si vous préférez.

Les outils wintools de Netscape

Si vous compilez la branche 1.8 branch (pas la branche 1.8.0 ou une branche plus ancienne), il est nécessaire d'utiliser le paquet spécial moztools-static disposant d'une version statique des outils moztools, de glib et libIDL pour toutes les versions de MSVC.

Si vous compilez la branche 1.8.0 ou une branche plus ancienne, vous devrez télécharger les outils wintools ainsi qu'éventuellement une version appropriée pour MSVC++ 7. Le fichier wintools.zip contient des bibliothèques précompilées et des outils nécessaires pour compiler Mozilla. Si vous compilez à l'aide de MSVC++ 7, vous devrez également installer les bibliothèques supplémentaires glib et libidl, voir plus bas.

Décompressez le fichier zip dans un répertoire temporaire, ouvrez une fenêtre de commandes Windows et définissez la variable d'environnement MOZ_TOOLS vers le répertoire dans lequel vous désirez que les outils de compilation soient installés, par exemple :

set MOZ_TOOLS=C:\moztools

Le répertoire MOZ_TOOLS ne doit pas se situer à l'intérieur de votre répertoire d'installation de cygwin, ni dans un de ses sous-répertoires. Ceci empêcherait la compilation de se faire.

Exécutez le script d'installation de wintools. Ce script batch installera les fichiers dans %MOZ_TOOLS%/bin.

cd buildtools\windows
install.bat

glib/libIDL pour MSVC7/7.1

Lors d'une compilation avec MSVC++ 7 ou 7.1, il est nécessaire d'installer des versions précompilées des bibliothèques glib et libIDL. Le paquet des outils moztools statiques contient ces bibliothèques, si vous l'utilisez vous n'avez besoin de rien de plus. Dans le cas contraire, vous pourrez trouver les versions précompilées de ces bibliothèques sur les serveurs FTP de mozilla.org. N'installez PAS ces bibliothèques par dessus votre répertoire moztools existant ; choisissez un emplacement séparé et positionnez les variables GLIB_PREFIX, LIBIDL_PREFIX et PATH de la manière appropriée pour votre environnement (voir plus bas).

cvs

Pour récupérer les sources de Mozilla, la version 1.11 de cvs ou supérieure est nécessaire. Cygwin CVS est recommandé. Lors de l'installation de cygwin CVS, vous devez également installer un éditeur comme emacs.

Compilateur et éditeur de liens

Le compilateur standard pour Mozilla sous Windows est Microsoft Visual C++, version 6.

Vous devrez utiliser soit l'édition Professional ou l'édition Enterprise (le Processor Pack de Visual C++ ne s'installera pas sur Visual C++ Standard). Les outils graphiques de l'environnement MSVC ne sont pas utilisés, mais seulement les outils en ligne de commande CL (compilateur C/C++), LINK (éditeur de liens), RC (compilateur de ressources), and ML (assembleur). Le Service Pack 5 pour Visual C++ et le Visual C++ Processor Pack sont nécessaires. Le Service Pack 6 n'est pas supporté. MSVC version 5 n'est pas supporté non plus.

L'environnement doit être configuré pour inclure les outils MSVC. Cela se fait généralement à l'aide du script vcvars32.bat, voir plus bas pour les détails.

Il est également possible de compiler ces branches avec des versions plus récentes des compilateurs Microsoft Visual C++, comme l'édition 2002 (VC7.0) ou 2003 (VC7.1). Il n'est pas possible d'utiliser la version 2005 (VC8).

Il est en outre possible de compiler Mozilla à l'aide du compilateur mingw gcc : voir Compiling Mozilla with mingw.

SDK de la plateforme

Si vous utilisez au moins Visual Studio .NET 2003, vous disposez déjà de tous les SDK nécessaires pour compiler Mozilla et vous pouvez passer cette étape. Pour les compilateurs plus anciens, vous devrez télécharger ces SDK chez Microsoft pour obtenir les en-têtes et bibliothèques GDI+.

Si vous utilisez Visual C++ 6, vous aurez besoin soit de la version d'octobre 2002 soit de la version de février 2003 du platform SDK. Les versions plus récentes ne peuvent pas être utilisées avec Visual C++ 6 du tout, et certaines versions intermédiaires utilisent des informations de débogage incompatibles, seul le mode release fonctionnant correctement. En fait, même la version de février 2003 possède un fichier de débogage qui est incompatible avec Visual C++ 6, mais cela n'a pas d'influence sur Mozilla.

Le SDK de la plateforme peut être obtenu depuis le site Centre de téléchargement Microsoft. Vous devez installer le « Windows Core SDK » (outils, environnement de développement et composants redistribuables) et le « Web Workshop SDK » (environnement de développement).

Si vous avez besoin d'une version plus ancienne, vous pouvez télécharger le PSDK de février 2003. Il est également possoble de commander des versions CD de différentes anciennes versions du Platform SDK ici .

L'environnement de compilation doit être modifié pour reconnaître les chemins du SDK, voir les exemples ci-dessous.

NSIS

Certaines applications compilés depuis la branche Mozilla 1.8 utilisent NSIS pour leur programme d'installation, en particulier les applications du toolkit Firefox et Thunderbird 2, ainsi que Sunbird 0.3. Si vous désirez compiler le programme d'installation, installez NSIS et assurez-vous qu'il est renseigné dans le PATH. La version 2.17 ou plus récente est recommandée.

Configuration de l'environnement

L'environnement de compilation doit être configuré de manière à ce que le système de compilation puisse trouver le compilateur et les bibliothèques nécessaires. Le plus facile est d'utiliser un script batch DOS. Votre compilation peut échouer si vos chemins contiennent des espaces ou d'autres caractères spéciaux. Assurez-vous de ne pas avoir installé de logiciels nécessaires à de tels emplacements, à l'exception de Visual C++.

Ce qui suit est un script batch (à exécuter avec cmd.exe ou en éditant le fichier cygwin.bat) qui doit être utilisé pour configurer les variables d'environnement :

rem --- Positionne HOME afin que cvs et ssh fonctionnent correctement
rem --- cvs utilise HOME pour localiser le fichier .cvspass, et ssh pour le fichier .ssh
rem --- si vous utilisez ssh, votre HOME doit être identique au répertoire spécifié dans /etc/passwd. Consultez http://www.cygwin.com/faq/faq0.html.
set HOME=C:\home

rem --- Positionne VCVARS vers l'endroit où se trouve le fichier vcvars.bat de Visual C++
set VCVARS=C:\Program Files\Microsoft Visual Studio 6\VC98\Bin\VCVARS32.BAT

rem --- Positionne MSSDK vers l'emplacement d'installation du SDK MS
rem --- Le SDK séparé est seulement nécessaire pour MSVC6
set MSSDK=C:\Program Files\Microsoft Platform SDK

rem --- Positionne MOZ_TOOLS vers l'endroit où ont été installés les outils moztools
set MOZ_TOOLS=C:\moztools

rem --- Positionne CYGWINBASE vers le répertoire d'installation de cygwin
rem --- N'utilisez pas "CYGWIN", sinon cygserver, cygrunsrv et d'autres services cygwin ne fonctionneront pas bien.
rem --- La variable CYGWIN est également utilisée pour modifier le comportement de Cygwin.
set CYGWINBASE=C:\cygwin
rem --- S'assure que Cygwin n'affiche pas l'avertissement de chemin d'accès DOS
set CYGWIN=nodosfilewarning

rem --- Si vous utilisez VC7 ou VC7.1, vous devez définir GLIB_PREFIX et LIBIDL_PREFIX
set GLIB_PREFIX=C:\moztools_vc71
set LIBIDL_PREFIX=C:\moztools_vc71

rem --- Ajoute le chemin de Cygwin en début de path
rem --- Ceci est nécessaire afin que l'outil find de cygwin soit avant l'exécutable find.exe de Windows dans le PATH, mais que l'outil link de cygwin soit après le link.exe de Visual C++.
rem PATH=%CYGWINBASE%\bin;%PATH%

rem --- Positionne les variables d'environnement de MSVC
call "%VCVARS%"

rem --- Ajoute les chemins du SDK en début de path
rem --- Uniquement nécessaire pour MSVC6
set PATH=%MSSDK%\bin;%PATH%
set INCLUDE=%MSSDK%\include;%INCLUDE%
set LIB=%MSDDK%\lib;%LIB%

rem --- Ajoute glib/libidl à l'environnement de compilation
rem --- Uniquement nécessaire pour VC7 ou 7.1
set PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
set INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%
set LIB=%GLIB_PREFIX%\lib;%LIB%

rem -- moztools doit venir en dernier, après glib/libIDL
set PATH=%PATH%;%MOZ_TOOLS%\bin

rem --- À présent, la variable PATH contient :
rem MS-SDK; MSVC; Cygwin; Windows; glib/libIDL; Moztools

rem --- Typiquement, la dernière chose que le script fait est de lancer un shell cygwin
rem --- ATTENTION : cela peut réinitialiser votre path ! Vérifiez vos fichiers /etc/profile et ~/.profile files.
bash --login -i

Avant de compiler, assurez-vous de renommer %CYGWINBASE%\bin\link.exe sous un autre nom, par exemple glink.exe. Si vous ne le faites pas, vous pouvez rencontrer l'erreur suivante (dans configure) :

configure: error: The incremental linker version, , does not match the compiler suite version, 7.1.
Fix above errors and restart with "make -f client.mk build"

Problèmes courants et astuces

  • Consultez la FAQ sur la compilation de Mozilla
  • Votre arbre de sources doit se trouver sous un point de montage /cygdrive/<c>. Il ne doit pas se trouver à l'intérieur de votre /home.
  • Mozilla peut ne pas compiler si vous installez le répertoire wintools à l'intérieur du répertoire cygwin.
  • Si la commande configure ou la compilation échoue à la suite d'une w32api manquante, ajoutez le répertoire /include de mingw32 à la fin de votre variable d'environnement INCLUDE. Les bibliothèques et binaires mingw32 ne devraient pas être nécessaires, uniquement les en-têtes.
  • La compilation peut échouer si votre variable d'environnement PATH contient des guillemets ("). Ceux-ci ne sont pas transférés proprement lorsqu'ils sont passés aux sous-shells de cygwin. La plupart du temps, les guillemets ne sont pas nécessaires, ils peuvent donc être enlevés.
  • Le système de compilation est actuellement incompatible avec make 3.81, assurez-vous donc d'utiliser make 3.80. Ce problème est suivi dans le bug 325148, où un patch partiel existe.
    • Selon les listes de diffusin de Cygwin, la cause du changement de comportement dans make 3.81 est l'absence d'un patch pour les chemins de style DOS. Ce patch figurait dans make 3.80.
  • Vérifiez bien que vous disposez de la liste complète des packages cygwin nécessaires. Sinon, relancez l'installeur de cygwin et ajoutez les packages manquants.
  • FAQ sur le débogage de Mozilla sous Windows : astuces sur le débogage de Mozilla sous Windows.

Étiquettes et contributeurs liés au document

Contributeurs à cette page : fscholz, Fredchat, Mgjbot, BenoitL
Dernière mise à jour par : fscholz,