Attention : Le contenu de ces pages n'a pas été mis à jour depuis longtemps. Il est probablement obsolète pour Firefox 4.0/Gecko 4.0 et supérieur. Pour du contenu plus récent, allez consulter developer.mozilla.org.

Makefile

Dans chaque repertoire de votre composant (que vous devez placer dans le répertoire des sources de Mozilla), il doit y avoir un fichier Makefile.in.

Voici sa structure générale :

 DEPTH		= ../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 include $(DEPTH)/config/autoconf.mk
  ...(autres constantes et directives)...
 include $(topsrcdir)/config/rules.mk

Entre les deux includes, vous y mettrez un certain nombre de constantes décrites ci-aprés. Du fait du manque de documentation officielle, il y a encore pas mal de zone d'ombres. Certaines informations ici peuvent ne pas être complètement exactes.

Toutes ces constantes ne sont pas obligatoires

DEPTH
indique le chemin relatif du repertoire des sources de mozilla par rapport au répertoire courant
topsrcdir
mettre @top_srcdir@ dans Makefile.in. il sera remplacé par le chemin absolu vers le repertoire des sources de mozilla.
srcdir
mettre @srcdir@ dans Makefile.in. Il sera remplacé par configure par le chemin absolu du répertoire courant.
VPATH
liste de répertoire nécéssaire à make. En général, mettre @srcdir@ dans Makefile.in
MODULE
nom du "module". Il s'agit en gros le nom de votre projet. Ce nom sera utilisé pour par exemple créer un répertoire spécifique à votre module dans dist/include/
XPIDL_MODULE
nom du module xpidl. Indique le nom du fichier .xpt qui contiendra tout les xpt indiqués dans XPIDLSRCS (pour cela, xpt_link sera appelé). Si cette constante n'est pas présente, ce sera le nom de MODULE qui sera utilisé pour le fichier xpt.
LIBRARY_NAME
nom de la bibliothèque. Ce sera le nom de la bibliothèque. Le fichier généré sera libXXXXX.dll ou libXXXXX.so, où XXXXX est le nom indiqué dans LIBRARY_NAME
SHORT_LIBNAME
nom sur 8 lettres de LIBRARY_NAME. indispensable si le nom de LIBRARY_NAME fait plus de 8 lettres.
MODULE_NAME
le nom du module que vous avez déclaré à l'aide de NS_IMPL_GETMODULE
IS_COMPONENT
indique si il s'agit d'un composant, c'est-à-dire où placer la librairie générée par la compilation (.so sous Linux, .dylib sous Mac OS X, .dll sous Windows)
  • si IS_COMPONENT = 1, la librairie générée ira dans le répertoire dist/bin/components à la fin de l'installation (ou dans le répertoire dist/lib/components -- dans quelles conditions ?)
  • si IS_COMPONENT = 0 (ou n'est pas défini ?) la librairie générée ira dans le répertoire dist/bin (ou dans le répertoire dist/lib -- dans quelles conditions ?)
EXPORT_LIBRARY
indique si il faut lier le code du module à l'éxecutable principal même en mode de compilation statique
  • si EXPORT_LIBRARY = 1 liaison toujours dynamique -- c'est cette option qu'il faut définir pour créer une extension indépendante placée dans un xpi
  • si EXPORT_LIBRARY = 0 (ou n'est pas défini ?), votre librairie sera liée dynamiquement si le mode de compilation est dynamique (--enable-dynamic --disable-static), statiquement dans le cas contraire (--enable-static --disable-dynamic)
GRE_MODULE
indique si le module fait parti du GRE (c'est à dire ? ) (valeur = 0 ou 1)
FORCE_STATIC_LIB
indique si on veut générer une bibliothèque statique (valeur = 0 ou 1)
FORCE_SHARED_LIB
indique si ? (valuer = 1 ou ne pas définir)
PACKAGE_FILE
?
DEFINES
?
DIRS
indique les sous répertoires qui doivent être parcouru pour la construction. Chacun d'eux doivent contenir un Makefile.in
REQUIRES
liste des noms des repertoires de modules dans dist/include/
EXTRA_DSO_LDOPTS
Une liste de bilbilothèque et d'options pour le lieur. doit se terminer par $(NULL)
EXTRA_DSO_LIBS
Une liste de ?
SDK_HEADERS
Une liste de ?, devant se terminer par $(NULL)
LIBS
Une liste de ?, devant se terminer par $(NULL)
SHARED_LIBRARY_LIBS
Une liste de ?, devant se terminer par $(NULL)
XPIDLSRCS
liste des fichiers idl à compiler. La liste doit se terminer par $(NULL)
CPPSRCS
liste des fichiers cpp à compiler. La liste doit se terminer par $(NULL)
CSRCS
liste des fichiers c à compiler. La liste doit se terminer par $(NULL)
EXTRA_COMPONENTS
liste de fichiers javascript xpcom
EXPORTS
liste de fichier .h qui seront installés dans dist/include/
SIMPLE_PROGRAMS
?

Pour plus de détails, voir http://www.mozilla.org/build/build-syste(..) et http://www.mozilla.org/build/glossary.ht(..)

Chapitre XpCom


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.