Utiliser fpcmake
Free Pascal est livré avec un outil makefile spécial, fpcmake, pouvant être utilisé pour construire un Makefile à utiliser avec GNU make. Toutes les sources de l'équipe Free Pascal sont compilées avec ce système. fpcmake utilise un fichier Makefile.fpc et construit un fichier Makefile à partir de celui-ci, basé sur les paramètres de Makefile.fpc.
Les sections suivantes expliquent quels paramètres peuvent être définis dans Makefile.fpc, quelles variables sont définies par fpcmake, quelles variables il s'attend à définir et quelles cibles il définit. Après cela, certains paramètres du Makefile résultant sont expliqués.
Fonctionnalité
fpcmake génère un makefile, adapté à GNU make, pouvant être utilisé pour :
- Compiler des unités et des programmes, adaptés aux tests ou à la distribution finale.
- Compilez des exemples d'unités et de programmes séparément.
- Installez les unités et programmes compilés dans des emplacements standard.
- Créez des archives pour la distribution des programmes et unités générés.
- Nettoyer après compilation et tests.
fpcmake sait comment fonctionne le compilateur Free Pascal, quelles options de ligne de commande il utilise, comment il recherche les fichiers,... Il utilise ces connaissances pour construire des lignes de commande sensées. Plus précisément, il construit les cibles suivantes dans le makefile final :
Cible | Description |
---|---|
all | Crée toutes les unités et programmes. |
debug | Crée toutes les unités et programmes avec les informations de débogage incluses. |
smart | Rend toutes les unités et programmes en version smartlink. |
examples | Crée tous les exemples d'unités et de programmes. |
shared | Crée toutes les unités et programmes en version bibliothèque partagée (actuellement désactivée). |
install | Installe toutes les unités et programmes. |
sourceinstall | Installe les sources dans l'arborescence des sources de Free Pascal. |
exampleinstall | Installe tous les exemples de programmes et d'unités. |
distinstall | Installe toutes les unités et programmes, ainsi que des exemples d'unités et de programmes. |
zipinstall | Crée une archive des programmes et des unités qui peuvent être utilisées pour les installer à un autre emplacement, c'est-à-dire qu'il crée une archive qui peut être utilisée pour distribuer les unités et les programmes. |
zipsourceinstall | Crée une archive du programme et des sources unitaires pouvant être utilisée pour distribuer les sources. |
zipexampleinstall | Crée une archive des exemples de programmes et d'unités qui peut être utilisée pour les installer sur un autre emplacement, c'est-à-dire qu'il crée une archive qui peut être utilisée pour distribuer les exemples d'unités et de programmes. |
zipdistinstall | Crée une archive à la fois des programmes et des unités normaux ainsi que des exemples. Cette archive peut être utilisée pour les installer sur un autre emplacement, c'est-à-dire qu'elle crée une archive qui peut être utilisée pour la distribution. |
clean | Nettoie tous les fichiers produits par une compilation. |
distclean | Nettoie tous les fichiers produits par une compilation, ainsi que toutes les archives, exemples ou fichiers laissés par les exemples. |
cleanall | Pareil que clean. |
info | Produit des informations à l'écran sur les programmes utilisés, les emplacements des fichiers et des répertoires, où iront les choses lors de l'installation,... |
Chacune de ces cibles peut être hautement configurée, voire totalement remplacée par le fichier de configuration Makefile.fpc.
Utilisation
fpcmake lit un Makefile.fpc et le convertit en un Makefile adapté à la lecture par GNU make pour compiler vos projets. Ses fonctionnalités sont similaires à celles de GNU configure ou d'Imake pour la création de projets X.
fpcmake accepte les noms de fichiers des fichiers de description makefile comme arguments de ligne de commande. Pour chacun de ces fichiers, il créera un Makefile dans le même répertoire où se trouve le fichier, écrasant tout fichier existant portant ce nom.
Si aucune option n'est donnée, il tente simplement de lire le fichier Makefile.fpc dans le répertoire courant et essaie de construire un Makefile à partir de celui-ci si l'option -m est donnée. Tout Makefile existant précédemment sera effacé.
si l'option -p est donnée, au lieu d'un Makefile, un Package.fpc est généré. Un fichier Package.fpc décrit le paquet et ses dépendances sur d'autres paquets.
De plus, les options de ligne de commande suivantes sont reconnues :
Option | Description |
---|---|
-p | Un fichier Package.fpc est généré. |
-w | Un Makefile est généré. |
-T targets | Prend en charge uniquement les systèmes cibles spécifiés. Les cibles sont une liste de cibles séparées par des virgules. Seules les règles pour les cibles spécifiées seront écrites. |
-v | Soyez plus verbeux. |
-q | La commande est en mode silencieux ou sans détails. |
-h | Écrit un petit message d'aide à l'écran. |
Format du fichier de configuration
Cette section décrit les règles pouvant être présentes dans le fichier traité par fpcmake.
Le fichier Makefile.fpc est un fichier ASCII simple contenant un certain nombre de sections prédéfinies comme dans un fichier .ini de Windows ou un fichier de configuration Samba.
Ils se présentent plus ou moins comme suit :
[package] name=mysql version=1.0.5 [target] units=mysql_com mysql_version mysql examples=testdb [require] libc=y [install] fpcpackage=y [default] fpcdir=../.. |
Les sections suivantes sont reconnues (par ordre alphabétique) :
clean
Spécifie les règles de nettoyage du répertoire des unités et des programmes. Les entrées suivantes sont reconnues :
Entrée | Description |
---|---|
units | Noms de toutes les unités devant être retirées lors du nettoyage. Ne spécifiez pas d'extensions, le make-file les ajoutera lui-même. |
files | Noms de fichiers supplémentaires (pas de fichiers unité) devant être supprimés. Spécifiez les noms de fichiers complets. Les fichiers de table de chaînes de ressources (fichiers .rst) sont nettoyés s'ils sont spécifiés dans la section fichiers. |
compiler
Dans cette section, les valeurs de diverses options du compilateur peuvent être spécifiées, telles que l'emplacement de plusieurs répertoires et chemins de recherche.
Les mots-clefs généraux suivants sont reconnus :
Mots clefs | Description |
---|---|
options | La valeur de cette clef sera transmise au compilateur (textuellement) sous forme d'options de ligne de commande. |
version | Si une version spécifique ou minimale du compilateur est nécessaire pour compiler les unités ou les programmes, alors cette version doit être spécifiée ici. |
Les clefs suivantes peuvent être utilisées pour contrôler l'emplacement des différents répertoires utilisés par le compilateur :
Clefs | Description |
---|---|
unitdir | Une liste de répertoires séparés par des deux-points qui doivent être ajoutés au chemin de recherche d'unités du compilateur (à l'aide de l'option -Fu). |
librarydir | Une liste de répertoires séparés par des deux-points qui doivent être ajoutés au chemin de recherche de bibliothèque du compilateur (à l'aide de l'option -Fl). |
objectdir | Une liste de répertoires séparés par des deux-points qui doivent être ajoutés au chemin de recherche des fichiers objets du compilateur (à l'aide de l'option -Fo). |
targetdir | Spécifie le répertoire où doivent aller les programmes compilés (en utilisant l'option -FE). |
sourcedir | Une liste de répertoires séparés par des espaces dans lesquels les sources peuvent résider. Ceci sera utilisé pour le paramètre vpath de GNU make. |
unittargetdir | Spécifie le répertoire où doivent aller les unités compilées (en utilisant l'option -FU). |
includedir | Une liste de répertoires séparés par des deux-points qui doivent être ajoutés au chemin de recherche des fichiers d'inclusion du compilateur (à l'aide de l'option -Fi). |
default
La section default contient certains paramètres par défaut. Les mots clefs suivants sont reconnus :
Mots clefs | Description |
---|---|
cpu | Spécifie le microprocesseur cible par défaut pour lequel le Makefile doit compiler les unités et les programmes. Par défaut, cela est déterminé à partir des informations du compilateur. |
dir | Spécifie tous les sous-répertoires dans lesquels make doit également descendre et y créer également la cible spécifiée. |
fpcdir | Spécifie le répertoire où résident toutes les arborescences sources de Free Pascal. Sous ce répertoire, le Makefile s'attend à trouver les arborescences de répertoires rtl et packages. |
rule | Spécifie la règle par défaut à exécuter. fpcmake s'assurera que cette règle est exécutée si make est exécuté sans arguments, c'est-à-dire sans cible explicite. |
target | Spécifie la cible du système d'exploitation par défaut pour laquelle le Makefile doit compiler les unités et les programmes. Par défaut, cela est déterminé à partir de la cible par défaut du compilateur. |
Dist
La section Dist contrôle la génération d'un paquet de distribution. Un paquet de distribution est un ensemble de fichiers d'archive (fichiers zip ou fichiers tar sur les systèmes Unix) pouvant être utilisés pour distribuer le paquet. Les clefs suivantes peuvent être placées dans cette section :
Clefs | Description |
---|---|
destdir | Spécifie le répertoire dans lequel les fichiers zip générés doivent être placés. |
zipname | Nom du fichier d'archive à créer. Si aucun nom zip n'est spécifié, la valeur par défaut est le nom du paquet. |
ziptarget | Il s'agit de la cible qui doit être exécutée avant la création du fichier d'archive. La valeur par défaut est install. |
Install
Contient des instructions pour l'installation des unités et des programmes compilés. Les mots-clefs suivants sont reconnus :
Mots clefs | Description |
---|---|
basedir | Le répertoire utilisé comme répertoire de base pour l'installation des unités. Par défaut, il s'agit du préfixe ajouté à /lib/fpc/FPC_VERSION pour Linux ou simplement du répertoire de préfixe sur d'autres plates-formes. |
datadir | Répertoire où seront installés les fichiers de données, c'est-à-dire les fichiers spécifiés avec le mot-clef files. |
fpcpackage | Une clef booléenne. Si cette clef est spécifiée et égale à y, les fichiers seront installés en tant que paquet fpc dans le répertoire des unités Free Pascal, c'est-à-dire dans un répertoire séparé. Le répertoire sera nommé avec le nom spécifié dans la section package. |
files | Fichiers de données supplémentaires à installer dans le répertoire spécifié avec la clef datadir. |
prefix | C'est le répertoire sous lequel toutes les installations sont effectuées. Cela correspond au paramètre de préfixe de GNU configure. Il est utilisé pour l'installation de programmes et d'unités. Par défaut, il s'agit de /usr sous Linux et de /pp sur toutes les autres plateformes. |
units | Unités supplémentaires devant être installées et qui ne font pas partie des unités cibles. Les unités dans les unités cibles seront installées automatiquement. |
Les unités seront installées dans le sous-répertoire units/$(OS_TARGET) de l'entrée du répertoire.
package
Si un package (c'est-à-dire un ensemble d'unités fonctionnant ensemble) est en cours de compilation, cette section est utilisée pour conserver les informations sur le paquet. Les informations suivantes peuvent être entreposées :
Clef | Description |
---|---|
name | Le nom du paquet. Lors de son installation sous le répertoire du paquet, ce nom sera utilisé pour créer un répertoire (sauf s'il est remplacé par l'une des options d'installation). |
version | La version de ce paquet. |
main | Si le paquet fait partie d'un autre paquet, cette clef peut être spécifiée pour indiquer de quel paquet il fait partie. |
Prerules
Tout ce qui se trouve dans cette section sera inséré tel quel dans le makefile avant les règles cibles du makefile générées par fpcmake. Cela signifie que les variables normalement définies par les règles fpcmake ne doivent pas être utilisées dans cette section.
Requires
Cette section est utilisée pour indiquer la dépendance à l'égard de paquets externes (c'est-à-dire d'unités) ou d'outils. Les mots clefs suivants peuvent être utilisés :
Mots clefs | Description |
---|---|
fpcmake | Version minimale de fpcmake dont ce makefile.fpc a besoin. |
packages | Autres paquets devant être compilés avant que ce paquet puisse être compilé. Notez que cela ajoutera également tous les paquets dont dépendent ces paquets aux dépendances de ce paquet. Par défaut, la bibliothèque Free Pascal Run-Time est ajoutée à cette liste. |
libc | Une valeur booléenne indiquant si ce paquet a besoin de la bibliothèque C. |
nortl | Un booléen empêchant l'ajout de la bibliothèque d'exécution Free Pascal aux paquets requis. |
unitdir | Ces répertoires seront ajoutés au chemin de recherche d'unités du compilateur. |
packagedir | Liste des répertoires de paquets. Les paquets dans ces répertoires seront également créés avant de créer le paquet actuel. |
tools | Une liste d'exécutables d'outils supplémentaires requis. Le chemin complet de ces outils sera défini dans le makefile en tant que variable portant le même nom
que le nom de l'outil, uniquement en majuscules. Par exemple, la définition suivante : tools=upx conduira à la définition d'une variable portant le nom UPX contenant le chemin complet de l'exécutable upx. |
Rules
Dans cette section, des règles de dépendance pour les unités et toutes autres cibles nécessaires peuvent être insérées. Il sera inclus à la fin du makefile généré. Les cibles ou «default rules» définies par fpcmake peuvent être insérées ici ; s'ils ne sont pas présents, alors fpcmake générera une règle appelant la version générique de fpc_.
Par exemple, il est possible de définir une cible all:. S'il n'est pas défini, alors fpcmake en générera un qui appelle simplement fpc_all :
all: fpc_all |
La règle fpc_all rendra toutes les cibles telles que définies dans la section Target.
Target
Il s'agit de la section la plus importante du fichier makefile.fpc. Ici, les fichiers sont définis devant être compilés lorsque la cible «all» est exécutée.
Les mots-clefs suivants peuvent y être utilisés :
Mots clefs | Description |
---|---|
dirs | Une liste de répertoires séparés par des espaces dans lesquels make doit également être exécuté. |
exampledirs | Une liste de répertoires séparés par des espaces avec des exemples de programmes. La cible des exemples descendra également dans cette liste de répertoires. |
examples | Une liste d'exemples de programmes séparés par des espaces qui doivent être compilés lorsque l'utilisateur demande à compiler les exemples. Ne spécifiez pas d'extension, l'extension sera ajoutée. |
loaders | Une liste de noms de fichiers assembleur séparés par des espaces qui doivent être assemblés. Ne spécifiez pas l'extension, l'extension sera ajoutée. |
programs | Une liste de noms de programmes séparés par des espaces qui doivent être compilés. Ne spécifiez pas d'extension, l'extension sera ajoutée. |
rsts | Une liste des premiers fichiers devant être convertis en fichiers .po pour être utilisés avec les routines gettext de GNU et d'internationalisation. Ces fichiers seront installés avec les fichiers de l'unité. |
units | Une liste de noms d'unités séparés par des espaces devant être compilés. Ne spécifiez pas d'extension, juste le nom de l'unité tel qu'il apparaîtrait dans une clause Uses est suffisant. |
Programmes nécessaires pour utiliser le makefile généré
Au moins les programmes suivants sont nécessaires au Makefile généré pour fonctionner correctement :
Programme/Commande | Description |
---|---|
cp | Un programme de copie. |
date | Un programme affichant la date. |
install | Un programme pour installer des fichiers. |
make | Le programme make, évidemment. |
pwd | Un programme affichant le répertoire de travail actuel. |
rm | Un programme pour supprimer des fichiers. |
zip | Le programme d'archivage zip. (sur les systèmes DOS/Windows/OS/2 uniquement) |
tar | Le programme d'archivage tar (sur les systèmes Unix uniquement). |
Ce sont des programmes standards sur les systèmes Linux, à l'exception peut-être de make. Pour DOS, Windows NT ou OS/2/eComStation, ils sont distribués dans le cadre des versions Free Pascal.
Les programmes suivants sont éventuellement nécessaires si vous utilisez des cibles spéciales. Ceux dont vous avez besoin sont contrôlés par les paramètres de la section tools.
Programme | Description |
---|---|
cmp | Une comparaison de fichiers DOS et Windows NT. |
diff | Un fichier à comparer. |
ppdep | Le listeur de dépendances ppdep. Distribué avec Free Pascal. |
ppumove | Le moteur d'unité Free Pascal. |
upx | L'empaqueteur exécutable UPX. |
Tous ces éléments peuvent également être trouvés sur le site FTP de Free Pascal pour DOS et Windows NT. ppdep et ppumove sont distribués avec le compilateur Free Pascal.
Variables affectant le makefile généré
Le makefile généré par fpcmake contient de nombreuses variables. Certains d'entre eux sont définis dans le makefile lui-même, d'autres peuvent être définis et sont pris en compte lors de leur définition.
Ces variables peuvent être divisées en deux groupes :
- Variables de répertoire.
- Variables de ligne de commande du compilateur.
Chaque groupe sera discuté séparément.
Variables de répertoire
Le premier ensemble de variables contrôle les répertoires reconnus dans le makefile. Ils ne doivent pas être définis dans le fichier Makefile.fpc, mais peuvent être spécifiés sur la ligne de commande.
Variable | Description |
---|---|
INCDIR | Il s'agit d'une liste de répertoires, séparés par des espaces, étant ajoutés en tant que répertoires d'inclusion à la ligne de commande du compilateur. Chaque répertoire de la liste est précédé de -Fi et ajouté aux options du compilateur. |
UNITDIR | Il s'agit d'une liste de répertoires, séparés par des espaces, qui seront ajoutés en tant que répertoires de recherche d'unités à la ligne de commande du compilateur. Chaque répertoire de la liste est précédé de -Fu et ajouté aux options du compilateur. |
LIBDIR | Est une liste de chemins de bibliothèque, séparés par des espaces. Chaque répertoire de la liste est précédé de -Fl et ajouté aux options du compilateur. |
OBJDIR | Est une liste de répertoires de fichiers objets, séparés par des espaces, étant ajoutée au chemin des fichiers objets, c'est-à-dire que chaque répertoire de la liste est précédé de -Fo. |
Variables de ligne de commande du compilateur
Les variables suivantes peuvent être définies sur la ligne de commande make, elles seront reconnues et intégrées dans les options de ligne de commande du compilateur :
Variable | Description |
---|---|
CREATESMART | Si cette variable est définie, elle indique au compilateur de créer des unités intelligentes. Ajoute -CX aux options de ligne de commande. |
DEBUG | Si défini, cela amènera le compilateur à inclure des informations de débogage dans les unités et programmes générés. Il ajoute -gl à la ligne de commande du compilateur et définira la définition DEBUG. |
LINKSMART | La définition de cette variable indique au compilateur d'utiliser le SMARTLINK. Il ajoute -XX aux options de ligne de commande du compilateur. |
OPT | Toutes les options que vous souhaitez transmettre au compilateur. Le contenu d'OPT est simplement ajouté à la ligne de commande du compilateur. |
OPTDEF | Sont des définitions facultatives, ajoutées à la ligne de commande du compilateur. Ils reçoivent -d ajouté au début. |
OPTIMIZE | Si cette variable est définie, cela ajoutera -OG2p3 aux options de ligne de commande. |
RELEASE | Si cette variable est définie, cela ajoutera les options -Xs -OG2p3 -n aux options de ligne de commande et définira la définition RELEASE. |
STRIP | Si cette variable est définie, cela ajoutera l'option -Xs aux options de ligne de commande. |
VERBOSE | Si cette variable est définie, alors -vnwi sera ajouté aux options de ligne de commande, |
Variables définies par fpcmake
Le makefile généré par fpcmake contient de nombreuses variables makefile. fpcmake écrira toutes les clefs du makefile.fpc en tant que variables makefile sous la forme SECTION_KEYNAME. Cela signifie que la section suivante :
[package] name=mysql version=1.0.5 |
entraînera les définitions de variables suivantes :
override PACKAGE_NAME=mysql override PACKAGE_VERSION=1.0.5 |
La plupart des cibles et des règles sont construites à l'aide de ces variables. Elles seront répertoriées ci-dessous, avec d'autres variables définies par fpcmake.
Les ensembles de variables suivants sont définis :
- Variables de répertoire.
- Noms des programmes.
- Extensions de fichiers.
- Fichiers cibles.
Chacun de ces ensembles est discuté ci-dessous :
Variables de répertoire
Les répertoires du compilateur suivants sont définis par le makefile :
Variable | Description |
---|---|
BASEDIR | Est défini sur le répertoire actuel si la commande pwd est disponible. Dans le cas contraire, il est défini sur «.». |
COMPILER_INCDIR | Est une liste de chemins de fichiers d'inclusion séparés par des espaces. Chaque répertoire de la liste est précédé de -Fi et ajouté aux options du compilateur. Défini par le mot-clef incdir dans la section Compiler. |
COMPILER_LIBDIR | Est une liste de chemins de bibliothèque séparés par des espaces. Chaque répertoire de la liste est précédé de -Fl et ajouté aux options du compilateur. Défini par le mot-clef libdir dans la section Compiler. |
COMPILER_OBJDIR | Est une liste de répertoires de fichiers objets, séparés par des espaces. Chaque répertoire de la liste est précédé de -Fo et ajouté aux options du compilateur. Défini par le mot-clef objdir dans la section Compiler. |
COMPILER_TARGETDIR | Ce répertoire est ajouté comme répertoire de sortie du compilateur, où toutes les unités et exécutables sont écrits, c'est-à-dire qu'il est précédé de -FE. Il est défini par le mot-clef targetdir dans la section Compiler. |
COMPILER_TARGETUNITDIR | S'il est défini, ce répertoire est ajouté comme répertoire de sortie du compilateur, où toutes les unités et exécutables sont écrits, c'est-à-dire qu'il est précédé de -FU. Il est défini par le mot-clef targetdir dans la section Dirs. |
COMPILER_UNITDIR | Est une liste de répertoires d'unités, séparés par des espaces. Chaque répertoire de la liste est précédé de -Fu et est ajouté aux options du compilateur. Défini par le mot-clef unitdir dans la section Compiler. |
GCCLIBDIR | (Linux uniquement) Est défini sur le répertoire où se trouve libgcc.a. Si needgcclib est défini sur True dans la section Libs, alors ce répertoire est ajouté à la ligne de commande du compilateur avec -Fl. |
OTHERLIBDIR | Est une liste de chemins de bibliothèque séparés par des espaces. Chaque répertoire de la liste est précédé de -Fl et ajouté aux options du compilateur. S'il n'est pas défini sous Linux, alors le contenu du fichier /etc/ld.so.conf est ajouté. |
Les répertoires suivants sont utilisés pour les installations :
Répertoire | Description |
---|---|
INSTALL_BASEDIR | Est la base de tous les répertoires où les unités sont installées. Par défaut, sous Linux, ceci est défini sur $(INSTALL_PREFIX)/lib/fpc/$(RELEASEVER). Sur d'autres systèmes, il est défini sur $(PREFIXINSTALLDIR). Vous pouvez également le définir avec la variable basedir dans la section Install. |
INSTALL_BINDIR | Est défini sur $(INSTALL_BASEDIR)/bin sous LINUX et $(INSTALL_BASEDIR)/bin/$(OS_TARGET) sur d'autres systèmes. C'est l'endroit où les binaires sont installés. |
INSTALL_DATADIR | Le répertoire dans lequel les fichiers de données sont installés. Défini par la clef Data dans la section Install. |
INSTALL_LIBDIR | Est défini sur $(INSTALL_PREFIX)/lib sous LINUX et $(INSTALL_UNITDIR) sur d'autres systèmes. |
INSTALL_PREFIX | Est défini sur /usr/local sous LINUX, /pp sous DOS ou WINDOWS NT. Défini par le mot-clef préfixe dans la section Installer. |
INSTALL_UNITDIR | C'est là que les unités seront installées. Ceci est défini sur $(INSTALL_BASEDIR)/units/$(OS_TARGET). Si les unités sont compilées sous forme de package, $(PACKAGE_NAME) est ajouté au répertoire. |
Variables cibles
Le deuxième ensemble de variables contrôle les cibles construites par le makefile. Ils sont créés par fpcmake, vous pouvez donc les utiliser dans vos règles, mais vous ne devez pas leur attribuer de valeurs vous-même.
Variable | Description |
---|---|
TARGET_DIRS | Il s'agit de la liste des répertoires dans lesquels make descendra lors de la compilation. Défini par la clef Dirs dans la section Target. |
TARGET_EXAMPLES | La liste des exemples de programmes devant être compilés. Défini par la clef des exemples dans la section Target. |
TARGET_EXAMPLEDIRS | La liste des répertoires dans lesquels make descendra lors de la compilation des exemples. Défini par la clef exampledirs dans la section Target. |
TARGET_LOADERS | Est une liste de noms séparés par des espaces identifiant les chargeurs à compiler. Ceci est principalement utilisé dans les sources RTL du compilateur. Il est défini par le mot-clef loaders dans la section Targets. |
TARGET_PROGRAMS | Il s'agit d'une liste de noms d'exécutables étant compilés. Le makefile ajoute $(EXEEXT) à ces noms. Il est défini par le mot-clef programmes dans la section Target. |
TARGET_UNITS | Il s'agit d'une liste de noms d'unités éttant compilées. Le makefile ajoute $(PPUEXT) à chacun de ces noms pour former le nom du fichier unité. Le nom source est formé en ajoutant $(PASEXT). Il est défini par le mot-clef unités dans la section Target. |
ZIPNAME | Est le nom de l'archive étant créée par le makefile. Il est défini par le mot-clef zipname dans la section Zip. |
ZIPTARGET | Est la cible étant construite avant la création de l'archive. Cette cible est construite en premier. En cas de succès, l'archive zip sera créée. Il est défini par le mot-clef ziptarget dans la section Zip. |
Variables de ligne de commande du compilateur
Les variables suivantes contrôlent la ligne de commande du compilateur :
Variable | Description |
---|---|
CPU_SOURCE | Le type de CPU source est ajouté en tant que définition à la ligne de commande du compilateur. Ceci est déterminé par le Makefile lui-même. |
CPU_TARGET | Le type de CPU cible est ajouté en tant que définition à la ligne de commande du compilateur. Ceci est déterminé par le Makefile lui-même. |
OS_SOURCE | Sur quelle plateforme le makefile est utilisé. Détecté automatiquement. |
OS_TARGET | Pour quelle plate-forme sera compilée. Ajouté à la ligne de commande du compilateur avec un -T ajouté. |
Noms des programmes
Les variables suivantes sont des noms de programmes, utilisés dans les cibles makefile.
Variable | Description |
---|---|
AS | L'assembleur. La valeur par défaut est as. |
COPY | Un programme de copie de fichiers. Valeur par défaut cp -fp. |
COPYTREE | Un programme de copie d'arborescence de répertoires. La valeur par défaut est cp -frp. |
CMP | Un programme pour comparer des fichiers. La valeur par défaut est cmp. |
DEL | Un programme de suppression de fichiers. La valeur par défaut est rm -f. |
DELTREE | Un programme de suppression de répertoire. La valeur par défaut est rm -rf. |
DATE | Un programme pour afficher la date. |
DIFF | Un programme pour produire des fichiers diff. |
ECHO | Un programme d'écho. |
FPC | L'exécutable du compilateur Free Pascal. Valeur par défaut ppc386.exe |
INSTALL | Un programme pour installer des fichiers. Défini par défaut pour installer -m 644 sous LINUX. |
INSTALLEXE | Un programme pour installer des fichiers exécutables. Défini par défaut pour installer -m 755 sous LINUX. |
LD | L'éditeur de liens. La valeur par défaut est ld. |
LDCONFIG | (Linux uniquement) Programme utilisé pour mettre à jour le cache du chargeur. |
MKDIR | Un programme pour créer des répertoires s'ils n'existent pas encore. Défini par défaut pour installer -m 755 -d. |
MOVE | Un programme de déplacement de fichiers. Valeur par défaut mv -f. |
PP | L'exécutable du compilateur Free Pascal. Valeur par défaut ppc386.exe. |
PPAS | Le nom du script de l'interpréteur de commande créé par le compilateur si l'option -s est spécifiée. Cette commande sera exécutée après compilation, si l'option -s a été détectée parmi les options. |
PPUMOVE | e programme pour déplacer des unités dans une grande bibliothèque d'unités. |
PWD | Le programme pwd. |
SED | Un programme d'édition simplifié. Valeur par défaut sed. |
UPX | Un empaqueteur d'exécutables pour compresser vos exécutables en exécutables compressés auto-extractibles. |
ZIPPROG | Un programme zip pour compresser des fichiers. Les cibles Zip sont créées avec ce programme. |
Extensions de fichiers
Les variables suivantes désignent les extensions de fichiers. Ces variables incluent le «.» (point) de l'extension. Ils sont ajoutés aux noms d'objet.
Variable | Description |
---|---|
ASMEXT | Est l'extension des fichiers assembleur produits par le compilateur. |
LOADEREXT | Est l'extension des fichiers assembleur qui composent le code de démarrage exécutable. |
OEXT | Est l'extension des fichiers objets créés par le compilateur. |
PACKAGESUFFIX | Est un suffixe ajouté aux noms de paquets dans les cibles zip. Cela permet de créer des paquets pour différents systèmes d'exploitation. |
PPLEXT | Est l'extension des fichiers d'unités de bibliothèque partagées. |
PPUEXT | Est l'extension des unités par défaut. |
RSTEXT | Est l'extension des fichiers de chaînes de ressources .rst. |
SHAREDLIBEXT | Est l'extension des bibliothèques partagées. |
SMARTEXT | Est l'extension des fichiers assembleur d'unités smartlink. |
STATICLIBEXT | Est l'extension des bibliothèques statiques. |
Fichiers cibles
Les variables suivantes sont définies pour faciliter les cibles et les règles :
Variable | Description |
---|---|
COMPILER | Est la ligne de commande complète du compilateur, avec toutes les options ajoutées, une fois que toutes les variables Makefile ont été examinées. |
DATESTR | Contient la date. |
UNITPPUFILES | Une liste des fichiers unitaires étant créés. Il s'agit simplement de la liste des objets d'unité, avec l'extension d'unité correcte ajoutée. |
Règles et cibles créées par fpcmake
Le makefile.fpc définit une série de cibles, pouvant être appelées par vos propres cibles. Ils ont des noms ressemblant aux noms par défaut (tels que «all», «clean»), sauf qu'ils sont précédés de fpc_.
Règles de modèle
Le makefile crée les règles de modèle suivantes :
Modèle | Description |
---|---|
units | Comment créer une unité pascal à partir d'un fichier source Pascal. |
executables | Comment créer un exécutable à partir d'un fichier source Pascal. |
object file | Comment créer un fichier objet à partir d'un fichier assembleur. |
Règles de construction
Les cibles de constructions suivantes sont définies :
Construction | Description |
---|---|
fpc_all | Construit toutes les unités et exécutables ainsi que les chargeurs. |
fpc_debug | Identique à fpc_all, uniquement avec les informations de débogage incluses. |
fpc_exes | Créez tous les exécutables dans EXEOBJECTS. |
fpc_loaders | Créez tous les fichiers dans LOADEROBJECTS. |
fpc_packages | Créez tous les paquets nécessaires à la création des fichiers. |
fpc_shared | Transformez toutes les unités en bibliothèques dynamiques. |
fpc_smart | Transformez toutes les unités en unités intelligentes. |
fpc_units | Créer toutes les unités dans UNITOBJECTS. |
Règles de nettoyage
Les cibles de nettoyage suivants sont définis :
Nettoyage | Description |
---|---|
fpc_clean | Nettoie tous les fichiers résultant de la création de fpc_all. |
fpc_distclean | Est identique aux deux commandes cibles précédentes, mais supprime également tous les fichiers d'objet, d'unité et d'assembleur présents. |
Règles d'archivage
Les cibles d'archivage suivantes sont définies :
Archivage | Description |
---|---|
fpc_zipdistinstall | Effectuez une installation distribuée du paquet. |
fpc_zipinstall | Créez un zip d'installation des unités compilées du paquet. |
fpc_zipexampleinstall | Faites un zip des fichiers d'exemple. |
fpc_zipsourceinstall | Faites un zip des fichiers sources. |
Le zip est réalisé à l'aide du programme ZIPEXE. Sous Linux, un fichier .tar.gz est créé.
Règles d'installation
Installation | Description |
---|---|
fpc_distinstall | Cible appelant les cibles install et exampleinstall. |
fpc_install | Installez les unités. |
fpc_sourceinstall | Installez les sources, au cas où une distribution serait effectuée. |
fpc_exampleinstall | Installez les exemples, au cas où une distribution serait faite. |
Règles informatives
Il n'existe qu'une seule cible produisant des informations sur les variables, règles et cibles utilisées : fpc_info.
Les informations suivantes sur le makefile sont présentées :
- Informations générales de configuration : l'emplacement du makefile, la version du compilateur, le système d'exploitation cible, le microprocesseur.
- Les répertoires, utilisés par le compilateur.
- Tous les répertoires dans lesquels les fichiers seront installés.
- Tous les objets étant fabriqués.
- Tous les outils définis.