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.
-
Fink
Vous pouvez télécharger la dernière version de Fink compatible avec votre système d'exploitation. Fink s'installe dans
- 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
- Avec
Fink
, libIDL est fourni avec l'installation de ORBit.
$ sudo apt-get install orbit orbit-dev glib
-
- Avec
MacPorts
(DarwinPorts), l'installation de libIDL installe également GLib.
$ sudo port sync
- Avec
MacPorts
(DarwinPorts), l'installation de libIDL installe également GLib.
$ 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 dossierSharedMenusCocoa/build
vers/Library/Frameworks
. Assurez-vous de regarder à l'intérieur du dossierbuild
pour trouverSharedMenusCocoa.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 paquetagesautoconf2.5
ouautoconf2.54
.$ sudo apt-get install autoconf
- Avec
MacPorts
(DarwinPorts), autoconf est installé dans
/opt/local/bin/autoconf213
. Vous devrez entrerautoconf213
pour l'exécuter là où d'autres documents peuvent vous demander d'exécuterautoconf
. N'installez pas le paquetageautoconf
sans le suffixe213
.$ sudo port install autoconf213
- Avec
Fink
, autoconf est installé dans
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
etCXX
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 deMacOSX10.3.9.sdk
dans Xcode 1.5 sur Mac OS X 10.3, et que si vous utilisez Xcode 1.5, vous devrez utiliserMacOSX10.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 est10.3
; les branches 1.8.0 et 1.8.1 utilisent10.2
. La valeur par défaut pour les compilations Intel est10.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éfinieXP_UNIX
est définieXP_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 utiliserMacOSX10.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.
- Si vous utilisez le shell
- 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.
- Si vous utilisez le shell
- 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
danswidget/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'erreurnsTraceRefcnt.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.)