Section courante

A propos

Section administrative du site

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 :

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 :

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 :

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 :



Dernière mise à jour : Lundi, le 15 août 2022