NOTE: Do not make substantive changes to this document without consulting Benjamin Smedberg <[email protected]> or one of the build-config peers.
Ejecutar la configuración y make con las opciones por defecto no te dará un buen resultado. Deberías usar un archivo .mozconfig para obtener una compilación razonable para la distribución. Por favor lee estas instrucciones cuidaadosamente antes de compilar.
Usando un archivo de configuración .mozconfig
Si bien es posible llamar <tt>configure</tt> desde la línea de comandos, no es recomendable. En lugar de eso, crea un archivo .mozconfig en tu directorio fuente (mozilla/.mozconfig) o en tu directorio HOME (~/.mozconfig).
También puedes dar la variable de entorno MOZCONFIG con el path completo de tu archivo de configuración:
export MOZCONFIG=~/mozilla/mozconfig-firefox
Mas alla del nombre que le hayas dado a tu archivo, nos referiremos a él como .mozconfig.
.mozconfig contiene dos tipos de opciones:
- Opciones con prefijo <tt>mk_add_options</tt>, son pasadas a <tt>client.mk</tt> y, usualmente, son opciones para controlar las vistas y actualizaciones de <tt>cvs</tt>
- Opciones con prefijo <tt>ac_add_options</tt>, son pasadas a <tt>configure</tt> y afectan el proceso de compilado.
Estas opciones serán usadas de forma automática cuando se ejecute <tt>./configure</tt> o <tt>make -f client.mk</tt>
Compilando con un Objdir
Se recomienda que uses un objdir cuando compiles mozilla. esto quiere decir que tu código fuente y tus archivos objeto no están todos mezclados en el directorio. Si usas un objdir puedes compilar múltiples aplicaciones (Firefox, Thunderbird, etc) desde el mismo árbol fuente.
El usar un objdir significa que cada Makefile.in en tu árbol fuente se convertirá en un Makefile en el objdir. Los directorios superiores en el Makefile.in serán los mismos en objdir. Por ejemplo, para el archivo: <tt>mozilla/modules/plugin/base/src/Makefile.in</tt> con un objdir de valor <tt>@TOPSRCDIR@/obj-debug</tt>, se creará el archivo y el directorio <tt>mozilla/obj-debug/modules/plugin/base/src/Makefile</tt>. Este Makefile referirá a las fuentes en el directorio <tt>mozilla/modules/plugin/base/src</tt> por arte de magia.
Si necesitas volver a ejecutar configure de forma manual, por favor pásalo desde dentro de tu objeto, y hazlo pasando al script el path completo. Por ejemplo, si ejecutas sobre Win32, y tu árbol fuente es <tt>/cygdrive/c/Projects/FIREFOX/mozilla</tt>, entonces, desde tu objdir, debes ejecutar <tt>/cygdrive/c/Projects/FIREFOX/mozilla/configure</tt>.
La siguente opción crea un objdir:
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
Elegir una aplicación
- Suite Mozilla (SeaMonkey)
-
Debes especificar:
ac_add_options --enable-application=suite # Usa la siguiente línea para verificar SeaMonkey desde CVS: mk_add_options MOZ_CO_PROJECT=suite
- Browser (Firefox)
-
Tu archivo .mozconfig debería contener el archivo mozconfig de Firefox por defecto:
. $topsrcdir/browser/config/mozconfig
No copies y pegues directamente el contenido del archivo a tu propio archivo ya que estos cambian constantemente.
- Mail (Thunderbird)
-
Tu archivo .mozconfig debería contener el archivo mozconfig de Thunderbird por defecto:
. $topsrcdir/mail/config/mozconfig
No copies y pegues directamente el contenido del archivo a tu propio archivo ya que estos cambian constantemente.
- Calendario (Sunbird)
-
Tu archivo .mozconfig debería contener el archivo mozconfig de Sunbird por defecto:
. $topsrcdir/calendar/sunbird/config/mozconfig
No copies y pegues directamente el contenido del archivo a tu propio archivo ya que estos cambian constantemente.
- XULRunner
-
Tu archivo .mozconfig debería contener el archivo mozconfig de XULRunner por defecto:
. $topsrcdir/xulrunner/config/mozconfig
No copies y pegues directamente el contenido del archivo a tu propio archivo ya que estos cambian constantemente.
Seleccionando las opciones para compilar
Las opciones que selecciones dependerán de que aplicación estés compilando y para qué usarás esa compilación. Si vas a usarla regularmente, querrás una compilación para distribución sin información extra sobre depuración; si eres un desarrollador que desea "hackear" el código fuente, tal vez quieras una compilación sin optimizar y con información de depuración extra.
El Mozilla Build Configurator es una herramienta que puede ayudarte a armar una buena configuración. Actualmente es útil pricinpalmente para compilar la suite Mozilla, para compilar Firefox u otras aplicaciones habría que editarla manualmente.
El script de configuración reconoce muchas opciones que no deberían ser usadas para compilar la suite completa y aplicaciones XUL, ya que son para propósito-especial o ciertas situaciones. La lista completa de opciones puede ser vista ejecutando ./configure --help o mirando Mozilla Build Configurator.
Si no sabes lo que hace alguna opción de configuración, no la uses ! Las siguientes opciones son muy comunes:
Optimización
- ac_add_options --enable-optimize
- Habilita las opciones de optimización del compilador por defecto.
- ac_add_options --enable-optimize=-O2
- Selecciona ciertas opciones en particular de optimización del compilador. Generalmente no da el resultado deseado, a menos que conozcas el código base de Mozilla.
- ac_add_options --disable-debug
- Desactiva las macros de depuración.
- ac_add_options --disable-optimize
- Desactiva la optimización del compilador. Facilita mucho revisar el código en un depurador.
- ac_add_options --enable-debug
- Habilita las macros de depuración y otros códigos de sólo-depuración. Puede que lentifique mucho la compilación pero es invaluable para escribir parches.
Herramientas gráficas
- ac_add_options --enable-default-toolkit=gtk|xlib|qt|cairo-gtk2|cairo-xlib|cairo-windows|windows|mac|cocoa|cairo-cocoa|os2|beos|photon
-
Selecciona la herramienta gráfica. No se necesita para Windows/OS2/BeOS/Photon desde que éstas plataforma seleccionan la herramienta correcta. Tampoco se necesita en Mac, a menos que estés compilando Camino en una versión vieja (Camino usa --enable-default-toolkit=cocoa).
En plataformas *nix selecciona la herramienta adecuada. GTK2 y GTK han sido probadas con éxito. xlib se considera una tier-3 platform. Qt y Cairo son experimentales, vas a encontrar bugs. En el tronco usa Cairo-gtk2 (por defecto).
- ac_add_options --enable-xft
-
Habilita el rendering avanzado de fuente XFT. Sólo esta disponible con --enable-default-toolkit=gtk2, y se recomienda con gtk2.
- ac_add_options --enable-freetype2
- Habilita el rendering de fuente freetype. Es por defecto para GTK. No compatible con --enable-xft.
Compilación estática
- ac_add_options --enable-static --disable-shared
-
Estas opciones generan un único ejecutable muy grande, el cuál tiene componentes enlazados de forma estática. Esto significa que hay muy pocos DLLs. De todas formas, a menos que tengas mucha RAM, no se recomienda su uso. 512 RAM mínimo. Se recomienda 1 GB. Estas opciones se deberían usar siempre juntas, si usas --enable-static, se recomienda que también uses --disable-tests
- ac_add_options --disable-static --enable-shared
-
Estas opciones generan componentes dentro de librerías compartidas separadas. Esto hace la depuración mucho mas fácil, pero la compilación resultante puede ser más lenta y a veces menos eficiente.
Esta opción es por defecto.
Extensiones
- ac_add_options --enable-extensions=default|all|ext1,ext2,-skipext3
-
Hay muchas piezas de código opcionales que habitan en las extensiones/ directorio en el árbol fuente. Muchas de éstas se consideran ya, una parte integral de la navegación. Hay una lista por defecto de extensiones para la suite, y cada aplicación-específica de mozconfig especifica un conjunto diferente por defecto, algunas extensiones no son compatibles con todas las aplicaciones, por ejemplo:
- cookie no es compatible con thunderbird
- typeaheadfind no es compatible con ninguna herramienta (firefox, thunderbird, sunbird)
A menos que conozcas qué extensión es compatible con cada aplicación, no uses --enable-extensions option; el sistema seleccionará automaticamente el conjunto de extesiones apropiado.
Tests
- ac_add_options --disable-tests
- Activada por defecto. Se han creado muchas aplicaciones para testeo, las cuales pueden ayudar a depurar y crear parches para las fuentes de Mozilla. Desabilitando ésta opción ganarás tiempo al compilar y espacio en disco.
Otras opciones
- ac_add_options --disable-crypto
-
La criptografía está activada por defecto, en algunos paises puede ser ilegal usar o exportar software criptográfico. Deberías ponerte al tanto de las leyes de tu país.
En la rama 1.7, la criptografía estaba desactivada, debes especificar --enable-crypto, si deseas SSL, SMIME, o alguna otra caracterísca que requiera criptografía.
- ac_add_options --disable-javaxpcom (No Java)
-
Por defecto, XULRunner compila el Java-XPCOM bridge, que requiere tener instalado un JDK, si tienes el siguiente error al configurar:
The header jni.h was not found. Set $JAVA_HOME or use --with-java-include-path
puedes desactivar las dependencias de java usandoac_add_options --disable-javaxpcom.
Ejemplos de archivos .mozconfig
Firefox estático optimizado
. $topsrcdir/browser/config/mozconfig mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt-static ac_add_options --enable-optimize ac_add_options --disable-debug ac_add_options --enable-static ac_add_options --disable-shared ac_add_options --disable-tests mk_add_options MOZ_CO_PROJECT=browser
Thunderbird, compilación para depurar
. $topsrcdir/mail/config/mozconfig mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/tbird-debug mk_add_options MOZ_CO_PROJECT=mail,calendar ac_add_options --disable-optimize ac_add_options --enable-debug
SeaMonkey, optimizado (pero no estático)
mk_add_options MOZ_CO_PROJECT=suite ac_add_options --enable-application=suite mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/suite-opt ac_add_options --enable-optimize ac_add_options --disable-debug
Construyendo varias aplicaciones desde el mismo árbol fuente
Es posible compilar múltiples aplicaiones desde el mismo árbol fuente, siempre y cuando hayas verificado todos los recursos necesarios y uses un objdir diferente para cada aplicaión.
También puedes crear múltiples archivos mozconfig, o usar la opción MOZ_BUILD_PROJECTS como alternativa.
Usando MOZ_BUILD_PROJECTS en un único mozconfig
Para usar MOZ_BUILD_PROJECTS, debes especificar un MOZ_OBJDIR y una opctión MOZ_BUILD_PROJECTS que contenga nombres separados por espacios. Cada nombre puede ser un nombre de directorio arbitrario. Para cada nombre se crea un subdirectorio debajo del objdir de nivel superior. Tienes que usar ac_add_app_options con los nombre especificados para habilitar cada aplicación en cada directorio objeto .
Por ejemplo:
ac_add_options --disable-optimize --enable-debug ac_add_options --enable-default-toolkit=gtk2 --disable-freetype2 --enable-xft mk_add_options MOZ_OBJDIR=/home/amil082/mozilla_trunk/obj-@CONFIG_GUESS@ mk_add_options MOZ_BUILD_PROJECTS="xulrunner browser mail" mk_add_options MOZ_CO_PROJECT="xulrunner browser mail" ac_add_app_options browser --enable-application=browser ac_add_app_options xulrunner --enable-application=xulrunner ac_add_app_options mail --enable-application=mail
Si deseas compilar un solo projecto usando este mozconfig debes usar: make -f client.mk build MOZ_CURRENT_PROJECT=browser
. Esto generará sólo el navegador.
Usando múltiples archivos mozconfig
Tal vez desees crear mozconfig separados.
El siguiente ejemplo se puede usar para compilar Firefox y Thunderbird. Primero deberías crear tres archivos mozconfig.
mozconfig-en común
mk_add_options MOZ_CO_PROJECT=browser,mail # agrega opciones en común aquí, como hacer una compilación estática para distribuir o # desabilitar tests ac_add_options --enable-optimize --disable-debug ac_add_options --disable-tests
mozconfig-firefox
# incluye el mozconfig-en común . ./mozconfig-en común # compila Firefox mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-static ac_add_options --enable-application=browser
mozconfig-thunderbird
# incluye el mozconfig-en común . ./mozconfig-en común # compila Thunderbird mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/thunderbird-static ac_add_options --enable-application=mail
Para verificar, ejecuta:
export MOZCONFIG=/path/to/mozilla/mozconfig-en común make -f client.mk checkout
Para compilar Firefox, ejecuta:
export MOZCONFIG=/path/to/mozilla/mozconfig-firefox make -f client.mk build
Para compilar Thunderbird, ejecuta:
export MOZCONFIG=/path/to/mozilla/mozconfig-thunderbird make -f client.mk build