Requerimientos para la compilación en Mac OS X

Hubo errores de script en esta página. Mientras los editores del sitio lo solucionan, puedes ver un contenido parcial debajo.

NOTE: Los cambios significativos realizados a esta página deben ser revisados por Mark Mentovai (mark@moxienet.com), or one of the build-config peers

Compilar Mozilla en Mac OS X son compilaciones Mach-O, con gcc y archivos make. Compilar en Mac OS X es muy similar a hacerlo en Unix/Linux. Deberías confortarte usando el Terminal app (en /Applications/Utilities). También hay instrucciones adicionales para building Mozilla as a universal binary.

El CodeWarrior-based CFM build system es obsoleto y no funciona desde Mozilla 1.3 alpha.

Si tienes problemas mira Mozilla Build Frequently Asked Questions o el resto de la Mozilla build documentation.

{{ :es/Documentación_para_la_compilación/TOC }}


Requerimientos de Hardware

NO hay requerimientos de hardware específicos, sólo 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 procesador Intel, Mozilla puede ser compilador por ambos procesadores, o como un binario universal para 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 provadas 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
  • El Shared Menus Cocoa Framework es requerido sólo para compilar Camino. Descarga el disco imagen de SharedMenusCocoa, extráelo usando StuffIt Expander si es necesario, y copia la carpeta SharedMenusCocoa.framework, que está es la carpeta SharedMenusCocoa/build, hacia /Library/Frameworks. Asegúrate de mirar dentro de la carpeta SharedMenusCocoa y luego dentro de build para encontrar SharedMenusCocoa.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).
    • Usando Flink autoconf se instala en <code/sw/bin/autoconf</code>. No instales autoconf2.5 o autoconf2.54
      $ sudo apt-get install autoconf
    • Usando DarwinPorts autoconf se instala en /opt/local/bin/autoconf213 debes tipear autoconf213 para ejecutarlo cuando otra documentación te lo solicite. No instales el paquete sin el subfijo 213.
      $ sudo port install autoconf213

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 Customize
    ac_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 hay MacOSX10.3.9.sdk en Xcode 1.5 para Mac OS X 10.3, si estas usando Xcode 1.5, tendrás que usar el MacOSX10.3.0 como reemplazo.

    Las compilaciones 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 es 10.3; para 1.8.0 y 1.8.1 es 10.2 en PowerPC. Para Intel es 10.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 Intel no. Porque 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

Para compilaciones Mac OS X, se configuran de así:

  • XP_MACOSX es definido
  • XP_UNIX es definido
  • XP_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

  • Después de instalar Xcode 2.4, la compilación falla en nsLookAndFeel.cpp con:
    error: `kThemeBrushAlternatePrimaryHighlightColor' undeclared (first use this function).
  • TEl SDK 10.2.8 incluido en Xcode 2.4 (compilación 8K1079) tiene un bug que previene a Mozilla para compilar con ese SDK. Apple ha sido notificado de ese bug que ha sido identificado como Radar 4671592. Apple lo solucionó en Xcode 2.4.1 .</li>

  • 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 el MacOSX10.2.8.sdk (recomendado) o MacOSX10.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 QuikTime en los SDKs no tienen este problema.

  • Actualización QuickTime SDK: Si instalas o actualizas QuikTime 7, tal vez necesites instalar QuikTime SDK, disponible desde "Software Uptdate" en el menú de Apple. Esta actualización es necesaria sólo si "software Update" te indica que está disponible. La necesitas si la compilación falla debido a que no se encuentra Sound.r.
  • Usando Fink, 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 las 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.
  • Usando DarwinPorts (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 la shell bash, edita el archivo ~/bashrc agregando la siguiente línea:
      export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
    • Si usas la 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.
  • 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 en widget/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 de 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 error nsTraceRefcnt.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.)

  • Etiquetas y colaboradores del documento

    Colaboradores de esta página: Sheppy, Blank zero, Nukeador, Carsses, Mgjbot
    Última actualización por: Carsses,