Este articulo necesita una revisión técnica. Cómo puedes ayudar.
Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.
NOTE: Los cambios significativos realizados a esta página deben ser revisados por Mark Mentovai ([email protected]), or one of the build-config peers
Los compiladores de Mozilla para Mac OS X son compilaciones Mach-O, con gcc y Makefiles. Compilar en Mac OS X es muy similar a hacerlo en Unix/Linux. Deberías sentirte bien utilizando la Terminal ubicada end (/Applications/Utilities
). También hay instrucciones adicionales para compilar Mozilla como un binario universal.
El CodeWarrior-based CFM build system es obsoleto y no funciona desde Mozilla 1.3 alpha.
Si tienes problemas mira Mozilla Build preguntas frecuentes o el resto de la documentación de compilado de Mozilla.
Requerimientos de Hardware
No hay requerimientos de hardware específicos, los requirimientos para ejecutar el software necesario para compilar Mozilla. La compilación puede tomar mucho tiempo, aquí se listan los requerimientos mínimos.
- Procesador PowerPC G3 o superior, se recomienda PowerPC G5 o un procesador Intel, Mozilla puede ser compilado por ambos procesadores, o como un binario universal por ambos tipos (Mira Mac OS X Universal Binaries).
- Memoria: 256 RAM mínimo, se recomienda 1 GB.
- Espacio en disco: por lo menos 1 GB de espacio libre para compilaciones sin depurar, para depurar se requiere al menos 2.5 GB de espacio libre.
Requerimientos de software
- Sistema operativo: Mac OS X 10.3.9 o superior, se recomienda actualizar a la última distribución (actualmente 10.3.9 y 10.4.9, 10.5(Leopard)) ejecutando Software Update, en el menú Apple. Mozilla no se compilará o ejecutará en 10.1 ("Puma"). Mozilla 1.8.0 y 1.8.1 se ejecutarán en Mac OS X 10.2 ("Jaguar"), pero la compilación requiere 10.3 ("Panther"). Para Mozilla 1.9 (actual) Mac OS X 10.3 requiere un runtime. Para más detalles mira Mac compatibility matrix.
Para instalar los siguentes software necesitarás privilegios de administrador en la máquina.
- Entorno de desarrollo: Xcode Tools 1.5 o superior. Las versiones anteriores de Xcode y Developer Tools ya no son soportadas. No se recomienda Xcode 2.0 pero 2.1 o superior servirán. Las configuraiones Xcode que ya han sido probadas se listan en Mac compatibility matrix. Se recomienda instalar SDK. Esto lo haces clickeando "Customize" en el instalador Xcode. Hay dos formas para obtener o actualizar Xcode:
- Descarga:Descarga Xcode desde Apple. Esto te garantiza que tendrás las últimas versiones disponibles para tu computadora de las herramientas. Necesitarás una membrecía (gratis). Nota que la actualización Xcode no se instala a través de Software Update.
- DVD or CD: La mayoría de las Macs y versiones de Mac OS X incluyen el instaldor Xcode en los discos de instalación, revisa tus discos.
- Administración de paquetes: Esto no es estrictamente requerido, pero simplifica la instalación de dependencias adicionales. Hay dos administradores de paquetes que son compatibles con Mozilla build system, Fink y DarwinPorts (MacPorts). Nota que la instalación del paquete tal vez tome tiempo pero es automático usando ambas herramientas..
- Fink. Tal vez quieras descargar la última versión Fink que es compatible con tu sistema operativo. Fink se instala por defecto en /sw. El istalador configurará el entorno Fink y lo dejará disponible en cualquier ventana Terminal nueva. Si haces una actualización mas profunda de tu sistema operativo como pasar de Jaguar a Panther, deberás quitar el directorio /sw y volver a instalar Fink y los paquetes.
- DarwinPorts, descarga desde OpenDarwin project, pronto será nombrado MacPorts. Aquí descargas el DarwinPorts correspondiente a la distribución de tu sistema operativo. DawinPorts se instalará por defecto en /opt/local. Luego de instalar DarwinPorts los combios estarán disponibles desde cualquier ventana Terminal nueva..
- libIDL y GLib, librerias usadas por las IDL (Lenguaje de Definición de Interfaz) de Mozilla. Esto se puede instalar usando el administrador de paquetes. Se necesitan privilegios de administrador. Pasa tu password al comando
sudo
si lo solicita.- Usando Flink. libIDL es incluida en la instalción ORBit.
$ sudo apt-get update $ sudo apt-get install orbit orbit-dev glib
- Usando DarwinPorts. Al instalar libIDL también se instala GLib.
$ sudo port sync $ sudo port install libidl
- Usando Flink. libIDL es incluida en la instalción ORBit.
- Shared Menus Cocoa Framework es requerido sólo para compilar Camino. Descarga el disco con la imagen de SharedMenusCocoa, extráelo usando StuffIt Expander si es necesario, y copia la carpeta
SharedMenusCocoa.framework
, que está es la carpetaSharedMenusCocoa/build
, hacia/Library/Frameworks
. Asegúrate de mirar dentro de la carpetaSharedMenusCocoa
y luego dentro debuild
para encontrarSharedMenusCocoa.framework
. Si copias otra carpeta similar, la compilación de Camino fallará. Mira Camino-specific build instructions para mas información information. - autoconf version 2.13 version 2.13 se necesita sólo si planeas cambiar los scripts de configuración de Mozilla. Las versiones posteriores (incluyendo la que viene con Xcode) son incompatibles con Mozilla (bug 104642).
- UsandoFlink autoconf se instala en <code/sw/bin/autoconf</code>. No instales
autoconf2.5
oautoconf2.54
$ sudo apt-get install autoconf
- UsandoDarwinPorts autoconf se instala en
/opt/local/bin/autoconf213
debes tipearautoconf213
para ejecutarlo cuando otra documentación te lo solicite. No instales el paquete sin el subfijo 213.$ sudo port install autoconf213
- UsandoFlink autoconf se instala en <code/sw/bin/autoconf</code>. No instales
Opciones .mozconfig y Otras
Estas opciones son específicas para Mac OS X. Para una mirada general sobre opciones de compilación y el archivo .mozconfig mira Configuring Build Options. Para información sobre cómo configurar para compilar un binario universal mira Mac OS X Universal Binaries.
- Compilador: Si usas Mac OS X 10.4 (Tiger) o superior en PowerPC deberías cambiar el compilador que viene por defecto por gcc 3.3, el compilador usado para generar las compilaciones oficiales de PowerPC. Usa el siguiente comando:
$ sudo gcc_select 3.3
Una alternativa a cambiar el compilador seria que especifiques cúal que usarás para Mozilla cuando lo configuras, hazlo indicando en las varibles de entorno
cc</code y <code>cxx
el compilador que deseas. Puedes ingresar los comandos en la Terminal antes de compilar o puedes indicarlo en el archivo.mozconfig
.export CC=gcc-3.3 export CXX=g++-3.3
Mozilla se compilará con gcc 4.0 (provisto por Xcode o superior), algunos desarrolladores lo prefieren. Las aplicaciones compiladas con gcc 4.0 sólo correran en Mac OS X 10.3.9 o superior. Las aplicaciones para Intel deben ser hechas con gcc 4.0 (el gcc 3.3 de Apple no genera binarios para Intel) pero puedes usar gcc 3.3 en una Intel Mac para multi-compilar para PPC.
Ten cuidado que la optimización-03
del gcc 3.3 para Mac OS X no es válida para compilar Mozilla, y todo compilador con-fast
no compilará en PowerPC..
Las siguentes líneas, espeficicadas con ac_add_options
, pueden ser agregadas al archivo .mozconfig.
.
- Mac OS X SDK: Selecciona la versión del los headers de sistema y las librerías para compilar, asegurándose que lo que compilas se ejecutará en sistemas mas viejos con menos APIs. Seleccionando esto se ignorará los headers y librerías por defecto en
/usr/include, /usr/lib,<code> y <code>/System/Library
. Los SDK de Mac OS X se instalan en/Developer/SDKs
, durante la instalación de Xcode, seleccionando Cross Development en la pantalla Customizeac_add_options --with-macos-sdk=/path/to/SDK
Compilaciones PowerPC oficiales usa
/Developer/SDKs/MacOSX10.3.9.sdk
para el tronco, y/Developer/SDKs/MacOSX10.2.8.sdk
para las ramas 1.8.0 y 1.8.1. Nota que no hayMacOSX10.3.9.sdk
en Xcode 1.5 para Mac OS X 10.3, si estas usando Xcode 1.5, tendrás que usar elMacOSX10.3.0
como reemplazo.Las compilaciones de Intel usaban y continuan usando
/Developer/SDKs/MacOSX10.4u.sdk.
.Nota que algunos frameworks (AppKit) son diferentes en la ejecución, dependiendo de cual SDK se usó a la hora de compilar. Esto puede ser la causa de los bugs que sólo aparecen en ciertas plataformas con ciertas compilaciones.
No podrás compilar Mozilla usando SDK 10.2.8 incluido en el instalador de Xcode 2.4, si usas Xcode 2.4 mira la sección Solución de problemas.
Es altamente recomendable utilizar un SDK, especialmete al compilar con Xcode 1.5 en Mac OS X 10.3. - Deployment Target: Esta opción establece la versión mínima del sistema operativo en el que podrá correr la aplicación. El uso adecuado de esta opción requiere soporte adicional en el código:
ac_add_options --enable-macos-target=version
No se recomienda esta opción. Por defecto para el tronco es10.3
; para1.8.0 y 1.8.1
es 10.2 en PowerPC. Para Intel es10.4
. - Prebinding: TEl Mozilla build system permite compilar una aplicación y librerías que esten prestablecidas. Funciona en Mac OS X 10.3.3 y anteriores.
ac_add_options --enable-prebinding
Las compilaciones PowerPC estan prestablecidas, las de Intel no. Ya que no corren en versiones anteriores a 10.4. - Ejemplo
.mozconfig
: Este.mozconfig
es apropiado para compilar una versión de Minefield (equivalente a Firefox) para PowerPC que pueda correr en mayor rango posible de computadoras. Puede ser usado en cualquier PowerPC que cumpla con los Requerimientos de software: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
Este
.mozconfig
es apropiado para compilar Minefield en Intel, correrá en Mac OS X 10.4 o superior.. $topsrcdir/browser/config/mozconfig ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.4u.sdk ac_add_options --disable-tests
Definiciones de compilado
Las compilaciones Mac OS X, se configuran así:
XP_MACOSX
es definidoXP_UNIX
es definidoXP_MAC
no es definido.XP_MAC
es obsoleto y lentamente está siendo quitado de la fuente (mira bug 281889). Se usó para compilaciones CFM (no-Mach-O) para el clásico (pre-X) Mac OS.
Esto requiere tener cuidado cuando se escribe código para plataformas Unix que excluyen Mac:
#if defined(XP_UNIX) && !defined(XP_MACOSX)
Solución de problemas
TEl SDK 10.2.8 incluido en Xcode 2.4 (compilación 8K1079) tiene un bug que evita que Mozilla sea compilado con ese SDK. Apple ha sido notificado de ese bug el cual ha sido identificado como Radar 4671592. Apple lo solucionó en Xcode 2.4.1 .</li>
- Después de instalar Xcode 2.4, la compilación falla en
nsLookAndFeel.cpp
con:
error: `kThemeBrushAlternatePrimaryHighlightColor' undeclared (first use this function)
. - Después de instalar QuickTime 7.0.4 en Mac OS X 10.3.9, la compilación falla en
libwidget_mac.dylib
with:
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
. <p>Necesitarás un SDK para trabajar en este problema. Selecciona elMacOSX10.2.8.sdk
(recomendado) oMacOSX10.3.0.sdk
. Para información detallada sobre cómo usar un SDK mira la sección Opciones .mozconfig y Otras .Apple enlazó el framework de QuikTime 7.0.4 a la librería compartida libstdc++.6 disponible en Mac OS X 10.3.9 o superior, pero el compilador (gcc 3.3) y las herramientas usadas en este sistema no enlazan a esta librería. gcc 3.3 enlaza a su propia estaticamente-enlazada libstdc++. Los frameworks QuickTime en los SDKs no tienen este problema.
- Actualización QuickTime SDK: Si instalas o actualizas QuickTime 7, tal vez necesites instalar QuickTime SDK, disponible desde "Actualización del sistema" en el menú de Apple. Esta actualización es necesaria sólo si "Actualización del sistema" te indica que está disponible. La necesitas si la compilación falla debido a que no se encuentra
Sound.r
. - UsandoFink, tienes
apt-get: command not found
.apt-get
no está en tu$PATH
, Cierra y vuelve a abrir la Terminal e intenta nuevamente. Si continúa el error, Flink no fue capaz de configurarse completamente en tu sistema, prueba con esto:- Si usas la shell
bash
, por defecto desde Mac OS X 10.3, edita el archivo~/.bashrc
, agregando la siguiente línea (tal cual se escribe abajo):. /sw/bin/init.sh
- Si usas un shell
tcsh
, edita el archivo~/.tchshrc
agregando la siguiente línea: </pre> - Luego de modificar los archivos cierra y vuelve a abrir la Terminal e intenta nuevamente.
- Si usas la shell
- UsandoDarwinPorts (MacPorts), tienes
port: command not found
.port
no está en tu$PATH
. Cierra y vuelve a abrir la Terminal e intenta nuevamente. Si el error continúa DarwinPorts no se terminó de configurar en tu sistema, prueba con los siguientes pasos:- Si usas un shell
bash
, edita el archivo~/bashrc
agregando la siguiente línea:export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
- Si usas un shell
tcsh
, edita el archivo </code>~/tcsh.rc</code> agregando la siguiente línea:setenv PATH "/opt/local/bin:/opt/local/sbin:$PATH"
- Luego de modificar los archivos cierra y vuelve a abrir la Terminal e intenta nuevamente.
- Si usas un shell
- Usando Fink con Virex 7.2: Usando Fink con Virex 7.2: Existe un conflicto entre Fink y Virez. Ambos colocan archivos en
/sw
. Si tienes instalado Virex debes actualizar por lo menos a la versión 7.2.1 como se describe en Fink News (2003-04-16). - La compilación se detiene mientras se compila
libwidget.rsrc
enwidget/src/mac
Elimina o cambia el nombre
~/Library/Preferences/.GlobalPreferences.plist
. No estamos seguros qué configuración en ese archivo causa este problema. Nota que si quitas el archivo las preferencias de sistema como programas recientes y demás también desaparecerán. . - La compilación informa acerca de headers IDL perdidos: Asegúrate que instalaste la distribución orbit via
apt-get
de Flink, y que editaste.bashrc
para el archivo/sw/bin/init.sh<code> o <code>.tcshrc
para/sw/bin/init.csh
. - La compilación informa acerca que algunos headers Menus Compartidos se perdieron: Mira que
SharedMenusCocoa.framework</code esté instalado en <code>/Library/Frameworks
, y que esté todo OK. - No se encuentra
dlfcn.h
con errornsTraceRefcnt.cpp:68: dlfcn.h: No such file or directory
Asegúrate que tienes libdl.dylib desde Fink. Si instalas bash from Apple, se provee una copia libdl.dylib necesaria para compilar nuevos programa que la usan (ej. Mozilla) y que no viene con los headers (ej. dlfcn.h). La solución es quitar el header de Apple e instalar el de Fink.
(Gracias a Alex Stewart por ayudarnos con esto.)