Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Préalables à la compilation sous Mac OS X

Cette page vient d'être traduite, mais elle a besoin d'un relecteur différent du traducteur. Pensez également à toujours vérifier le contenu avec sa toute dernière version en anglais.
NOTE: substantive changes to this page (non-editorial) should be reviewed by Mark Mentovai ([email protected]), or one of the build-config peers

Les compilations de Mozilla pour Mac OS X sont des compilations Mach-O, créées avec gcc et des Makefiles. Compiler sous Mac OS X est donc très similaire à compiler sous Unix/Linux. Vous devez vous sentir à l'aise avec l'application Terminal (dans /Applications/Utilities). Des instructions complémentaires sont disponibles pour la compilation de Mozilla comme binaire universel.

Le système de compilation CFM basé sur CodeWarrior est obsolète, et ne fonctionne plus depuis Mozilla 1.3alpha.

Si vous rencontrez des problèmes, consultez la FAQ sur la compilation de Mozilla ou le reste de la documentation sur la compilation de Mozilla.

Matériel requis

Il n'y a pas de matériel spécifique requis, du moment que celui-ci s'accommode de tous les logiciels requis pour compiler Mozilla. La compilation peut prendre beaucoup de temps, c'est pourquoi des systèmes de développement recommandés sont listés à côté du minimum requis.

  • Processeur : PowerPC G3 ou plus récent, processeur PowerPC G5 ou Intel sont recommandés. Mozilla peut à présent être compilé pour l'un ou l'autre type de processeur, ou en un binaire universel pour les deux types (consultez Binaires universels Mac OS X).
  • Mémoire : 256 Mo de RAM minimum, 1 Go recommandé.
  • Espace disque : Au moins 1 Go d'espace disque libre pour les compilations normales ; les compilations de développement/debug ont besoin d'au moins 2,5 Go d'espace disque libre.

Logiciels requis

  • Système d'exploitation : Mac OS X 10.3.9 ou plus récent. Il est recommandé de mettre à jour vers la dernière version « point » (pour l'instant 10.3.9 et 10.4.10) en utilisant le programme de mise à jour du menu Apple (la pomme bleue à gauche). Mozilla ne compilera pas ni ne fonctionnera sous 10.1 (Puma). Les branches Mozilla 1.8.0 et 1.8.1 fonctionneront sous OS X 10.2 (Jaguar), mais pour compiler, Mozilla, il est nécessaire d'avoir la version 10.3 (Panther). À partir de Mozilla 1.9 (le tronc actuel), Mac OS X 10.3 est également requis. Pour plus de détails, consultez la matrice de compatibilité Mac (en).

Pour installer les logiciels requis suivants, il peut être nécessaire de disposer des privilèges administrateur (root), sur la machine.

  • Environnement de développement : Xcode Tools 1.5 ou ultérieur. Les versions précédentes de Xcode et Developer Tools ne sont plus supportées. Xcode 2.0 n'est pas recommandé, mais Xcode 2.1 et ultérieur fonctionnent correctement. Les configurations de Xcode testées sont listées dans la matrice de compatibilité Mac. L'installation des environnements cross-development (SDK) est recommandée. Ceux-ci sont sélectionnées en cliquant sur le bouton « Personnaliserénbsp;» à l'installation de Xcode. Deux manières d'obtenir ou de mettre à jour Xcode existent :
    • Téléchargement : Télécharger Xcode chez Apple. Ceci permet de s'assurer que vous installerez la dernière version des outils disponibles pour votre ordinateur. Vous aurez besoin d'un abonnement (gratuit) à Apple Developer Connection. Notez que les mises à jour de Xcode ne sont pas installées par Software Update pour l'instant.
    • DVD ou CD : La plupart des Macs et les versions au détail de Mac OS X fournissent Xcode sur les disques d'installation. Regardez parmi vos disques si vous ne trouvez pas Xcode ou Developer Tools
  • Gestion des paquetages : Un système de gestion de paquetages n'est pas strictement nécessaire, mais rend l'installation des dépendances beaucoup plus facile. Deux systèmes compatibles avec le système de compilation de Mozilla existent, Fink et DarwinPorts (MacPorts). Notez que l'installation des paquetages peut être un processus lent mais automatisé à l'aide de chacun de ces deux outils.
    • Fink Vous pouvez télécharger la dernière version de Fink compatible avec votre système d'exploitation. Fink s'installe dans /sw par défaut. L'installeur devrait configurer l'environnement Fink pour vous, et le rendre disponible dans toute nouvelle fenêtre du Terminal. Si vous effectuez une mise à jour majeure de votre système d'exploitation, comme un passage de Jaguar à Panther, vous devrez supprimer le répertoire /sw et réinstaller Fink et les paquetagess dont il dépend.
    • MacPorts , anciennement DarwinPorts. Vous pouvez télécharger la version de MacPorts correspondant à votre système d'exploitation. MacPorts s'installe dans /opt/local par défaut. Après l'installation de MacPorts, les changements fait par l'installeur dans l'environnement du shell seront disponibles dans toute nouvelle fenêtre du Terminal.
  • Les bibliothèques libIDL et GLib, utilisées par l'analyseur IDL (interface definition language) de Mozilla. Celles-ci peuvent être installées à l'aide d'un gestionnaire de paquetages. Les privilèges d'administration sont requis, fournissez votre mot de passe à la commande sudo si nécessaire.
    • Avec Fink , libIDL est fourni avec l'installation de ORBit.
      $ sudo apt-get update
      

$ sudo apt-get install orbit orbit-dev glib

    • Avec MacPorts (DarwinPorts), l'installation de libIDL installe également GLib.
      $ sudo port sync
      

$ sudo port install libidl

  • Le framework de menus partagés est uniquement utile si vous compilez Camino. Téléchargez l'image disque de SharedMenusCocoa, extrayez-la en utilisant StuffIt Expander si nécessaire, et copiez le dossier SharedMenusCocoa.framework situé à l'intérieur du dossier SharedMenusCocoa/build vers /Library/Frameworks. Assurez-vous de regarder à l'intérieur du dossier build pour trouver SharedMenusCocoa.framework. Si vous copiez un autre dossier avec un nom similaire, votre compilation de Camino ne fonctionne pas. Consultez les instructions de compilation spécifiques à Camino pour plus d'informations, dont les étapes suivantes nécessaires pour la compilation pour Intel ou en binaires universels de Camino.
  • autoconf version 2.13 est uniquement nécessaire si vous envisagez de faire des changements dans les scripts configure de Mozilla. Les versions plus récentes d'autoconf, comme celles qui sont fournies avec Xcode et installées dans /usr/bin, sont incompatibles avec Mozilla (bug 104642.)
    • Avec Fink , autoconf est installé dans /sw/bin/autoconf. N'installez pas les paquetages autoconf2.5 ou autoconf2.54.
      $ sudo apt-get install autoconf
    • Avec MacPorts (DarwinPorts), autoconf est installé dans /opt/local/bin/autoconf213. Vous devrez entrer autoconf213 pour l'exécuter là où d'autres documents peuvent vous demander d'exécuter autoconf. N'installez pas le paquetage autoconf sans le suffixe 213.
      $ sudo port install autoconf213

Options de .mozconfig et autres personnalisations

Ces options sont spécifiques aux compilations de Mozilla pour Mac OS X. Pour un aperçu plus général des options de compilation et du fichier .mozconfig, consultez Configuration des options de compilation. Pour des informations spécifiques sur la configuration pour une compilation en binaires universels, consultez Binaires universels Mac OS X.

  • Compilateur : si vous utilisez Mac OS X 10.4 (Tiger) ou ultérieur sur PowerPC, vous devrez changer le compilateur système par défaut pour gcc 3.3, le compilateur utilisé pour produire les compilations officielles pour PowerPC. Utilisez la commande suivante :
    $ sudo gcc_select 3.3

    Une alternative au changement du compilateur système par défaut est de spécifier le compilateur utilisé pour une compilation de Mozilla au moment de la configuration en définissant les variables d'environnement CC et CXX pour sélectionner les compilateurs C et C++ désirés. Vous pouvez entrer ces commandes dans le Terminal avant de commencer une compilation de Mozilla, ou les placer dans votre fichier .mozconfig :

    export CC=gcc-3.3
    export CXX=g++-3.3

    Mozilla compilera avec gcc 4.0 (si Xcode 2.1 ou ultérieur est installé), et certains développeurs préfèrent ce compilateur plus récent. Les applications réalisées avec gcc 4.0 ne fonctionneront que sur Mac OS X 10.3.9 et ultérieurs. Les compilations Intel officielles sont produites avec gcc 4.0. Les compilations Intel doivent être produites avec gcc 4.0 (le gcc 3.3 d'Apple ne peut produire de binaires Intel), mais vous pouvez utiliser gcc 3.3 sur un Intel Mac pour cross-compiler pour PPC.

    Sachez que le compilateur gcc 3.3 pour Mac OS X au niveau d'optimisation -O3 est incapable de compiler Mozilla, et que toute compilation avec le mode d'optimisation -fast sélectionné sur PowerPC conduira à un échec de la compilation.

Les options suivantes, spécifiées avec ac_add_options, sont des lignes prévues pour être ajoutées à votre fichier .mozconfig.

  • Mac OS X SDK : Ceci sélectionne la version des en-têtes et bibliothèques système avec lesquelles compiler, afin de s'assurer que le produit compilé sera capable d'être exécuter sur des systèmes plus anciens avec des API disponibles moins complètes. La sélection d'un SDK avec cette option écrase les en-têtes et bibliothèques par défaut dans /usr/include, /usr/lib et /System/Library. Les SDK de Mac OS X sont installés dans /Developer/SDKs au cours de l'installation d'Xcode en sélectionnant la catégorie Cross Development dans l'écran « Personnaliser » de l'installeur.
    ac_add_options --with-macos-sdk=/path/to/SDK

    Les compilations officielles PowerPC utilisent /Developer/SDKs/MacOSX10.3.9.sdk sur le tronc, et /Developer/SDKs/MacOSX10.2.8.sdk sur les branches 1.8.0 et 1.8.1. Notez qu'il n'y a pas de MacOSX10.3.9.sdk dans Xcode 1.5 sur Mac OS X 10.3, et que si vous utilisez Xcode 1.5, vous devrez utiliser MacOSX10.3.0.sdk à la place.

    Les compilations officielles Intel utilisent toujours /Developer/SDKs/MacOSX10.4u.sdk.

    Notez que certains frameworks (en particulier AppKit) se comportent différemment à l'exécution selon le SDK utilisé à la compilation. Cela peut être la source de bugs apparaissant uniquement sur certaines plateformes ou avec certaines compilations.

    Il n'est pas possible de compiler Mozilla en utilisant le SDK 10.2.8 SDK fourni dans l'installation de Xcode 2.4. Si vous installez Xcode 2.4, veuillez consulter la section résolution des problèmes pour une solution.

    L'utilisation d'un SDK est vivement recommandée, particulièrement si vous compilez sous Mac OS X 10.3 avec Xcode 1.5.
  • Cible de déploiement : Cette option sélectionne la version minimale de l'OS sur laquelle l'application résultante fonctionnera. Cette option nécessite des adaptations particulières dans le code pour fonctionner correctement.
    ac_add_options --enable-macos-target=version
    Cette option n'est pas recommandée. La valeur par défaut pour les compilations PowerPC sur le tronc est 10.3 ; les branches 1.8.0 et 1.8.1 utilisent 10.2. La valeur par défaut pour les compilations Intel est 10.4. Les compilations officielles utilisent ces valeurs par défaut.
  • Prebinding : Le système de compilation de Mozilla vous permet de compiler une application et des bibliothèque qui sont préliées. Ceci améliore les temps de lancement de l'application sous Mac OS X 10.3.3 et précédents.
    ac_add_options --enable-prebinding
    La valeur par défaut est de ne pas prélier. Les compilations officielles PowerPC sont préliées. Les compilations officielles Intel ne sont pas préliées, puisqu'aucune compilation Intel ne fonctionnera sur une version antérieure à la 10.4.
  • Exemple de .mozconfig : ce fichier .mozconfig convient pour la compilation d'une version PowerPC de Minefield (équivalente à Firefox) capable de s'exécuter sur le plus large éventail d'ordinateurs. Il peut être utilisé sur n'importe quel Mac PowerPC disposant des logiciels requis:
    export CC=gcc-3.3
    export CXX=g++-3.3
    . $topsrcdir/browser/config/mozconfig
    ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.3.9.sdk
    ac_add_options --enable-prebinding
    ac_add_options --disable-tests

    Ce fichier .mozconfig convient pour la compilation d'une version Intel de Minefield (équivalente à Firefox), qui fonctionnera uniquement sur les Macs basés sur Intel avec Mac OS X 10.4 ou plus récent :

    . $topsrcdir/browser/config/mozconfig
    ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.4u.sdk
    ac_add_options --disable-tests

Constantes définies

Pour les compilations Mac OS X, les constantes suivantes sont définies :

  • XP_MACOSX est définie
  • XP_UNIX est définie
  • XP_MAC n'est pas définie (voir bug 281889). XP_MAC est obsolète et est graduellement retirée du code source. Cette constante était utilisée pour les compilations CFM (non-Mach-O) sous Mac OS classic (avant OS X).

Cela nécessite d'être attentif lors de l'écriture de code pour les autres plate-formes Unix que Mac OS X :

#if defined(XP_UNIX) &&!defined(XP_MACOSX)

Résolution de problèmes

  • Après l'installation de Xcode 2.4, la compilation échoue dans nsLookAndFeel.cpp avec :
    error: `kThemeBrushAlternatePrimaryHighlightColor' undeclared (first use this function).

    Le SDK 10.2.8 fourni avec Xcode 2.4 (build 8K1079) contient un bug qui empêche Mozilla d'être compilé avec ce SDK. Apple est au courant de ce problème, qui est suivi dans le Radar 4671592. Il a été corrigé dans Xcode 2.4.1.

  • Après l'installation de QuickTime 7.0.4 sur Mac OS X 10.3.9, la compilation échoue dans libwidget_mac.dylib avec :
    ld: /usr/lib/gcc/darwin/3.3/libstdc++.a(eh_personality.o) illegal reference to symbol: ___cxa_begin_catch defined in indirectly referenced dynamic library /usr/lib/libstdc++.6.dylib.

    Pour contourner ce conflit, vous devrez utiliser un SDK. Sélectionnez le SDK MacOSX10.2.8.sdk (recommandé). Si nécessaire, vous pouvez également utiliser MacOSX10.3.0.sdk. Consultez la section sur les options de .mozconfig et autres personnalisations pour des instructions détaillées sur l'utilisation d'un SDK.

    Apple a lié le framework QuickTime 7.0.4 avec la bibliothèque partagée libstdc++.6 disponible dans Mac OS X 10.3.9 et ultérieurs, mais le compilateur (gcc 3.3) et les outils de compilation utilisés sur ces systèmes ne s'attendent pas à une liaison avec cette bibliothèque. gcc 3.3 s'attend à utiliser son propre libstdc++ lié statiquement. Les frameworks stub QuickTime dans les SDK n'ont pas ce problèmestub frameworks in the SDKs do not share this problem.

  • Mise à jour du SDK QuickTime : Si vous installes ou mettez à jour QuickTime 7, vous pouvez également avoir besoin d'installer une mise à jour du SDK QuickTime, disponible depuis “Software Update” dans le menu Apple. Cette mise à jour est uniquement nécessaire si Software Update indique qu'elle est disponible. Vous aurez besoin de cette mise à jour si votre compilation échoue parce qu'elle n'arrive pas à trouver Sound.r.
  • Avec Fink, vous obtenez apt-get: command not found.

    apt-get n'est pas dans votre $PATH. Fermez et rouvrez le Terminal et réessayez. Si l'erreur persiste, c'est que Fink n'a pas réussi à se configurer correctement dans votre environnement. Effectuez les actions suivantes :

    • Si vous utilisez le shell bash, celui par défaut depuis Mac OS X 10.3, éditez votre fichier ~/.bashrc en ajoutant la ligne qui suit. N'oubliez pas le point initial et l'espace.
      . /sw/bin/init.sh
    • Si vous utilisez le shell tcsh, éditez votre fichier ~/.tcshrc, en ajoutant la ligne qui suit :
      source /sw/bin/init.csh
    • Après avoir modifié le fichier approprié, fermez et rouvrer le Terminal et réessayez.
  • Avec MacPorts (DarwinPorts), vous obtenez port: command not found.

    port n'est pas dans votre $PATH. Fermez et rouvrez Terminal et réessayez. Si l'erreur persiste, c'est que MacPorts n'a pas pu se configurer correctement dans votre environnement. Effectuez les actions suivantes :

    • Si vous utilisez le shell bash, celui par défaut depuis Mac OS X 10.3, éditez votre fichier ~/.bashrc en ajoutant la ligne qui suit :
      export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
    • Si vous utilisez le shell tcsh, éditez votre fichier ~/.tcshrc, en ajoutant la ligne qui suit :
      setenv PATH "/opt/local/bin:/opt/local/sbin:$PATH"
    • Après avoir modifié le fichier approprié, fermez et rouvrer le Terminal et réessayez.
  • Avec Fink et Virex 7.2 : Il y a un conflit entre Fink et Virex 7.2. Chacun d'eux place des fichiers dans /sw. Si vous avez Virex installé, vous devrez mettre à jour au moins vers la version 7.2.1, comme décrit dans Fink News (2003-04-16).
  • La compilation s'arrête sur libwidget.rsrc dans widget/src/mac

    Supprimez, ou renommez ~/Library/Preferences/.GlobalPreferences.plist. On ne sait pas très bien ce qui pose problème dans ce fichier. Notez que si vous le supprimez, les préférences système comme les locales préférées et les programmes récents disparaitront également.

  • La compilation se plaint à propos d'en-têtes IDL manquants : Assurez-vous que la distribution orbit a été installée avec l'apt-get de Fink, et que vous avez édité votre .bashrc pour indiquer le fichier /sw/bin/init.sh ou votre fichier .tcshrc pour indiquer le fichier /sw/bin/init.csh.
  • La compilation indique que certains en-têtes de menus partagés manquent : Vérifiez que le SharedMenusCocoa.framework est installé dans /Library/Frameworks, et que les liens symboliques dans le framework fonctionnent.
  • Impossible de trouver dlfcn.h avec l'erreur nsTraceRefcnt.cpp:68: dlfcn.h: No such file or directory

    Assurez-vous que vous avez le libdl.dylib de Fink. Si vous installez le bash d'Apple, il fournira une copie de libdl.dylib qui n'est pas accompagnée des en-têtes (par exemple dlfcn.h) nécessaires pour compiler de nouveaux programmes utilisant la bibliothèque, comme Mozilla. La solution est de retirer le bash d'Apple et d'installer celui de Fink. (Merci à Alex Stewart pour nous avoir aidés à trouver le problème.)

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : Delapouite, Fredchat, Grivel, BenoitL, Mgjbot, Chbok, Omic
 Dernière mise à jour par : Delapouite,