Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Tutoriel  Programmation  Bibliothèque  Cadre d'application  API  GUI  Projet  Composante  IDE  Outils  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Installation de Free Pascal
Installation de CodeTyphon Studio
Installation de Lazarus
Installation de Pascal XE
Introduction
Les remarques
Les opérateurs
Les instructions conditionnelles
Les instructions de boucles
Les instructions d'exceptions
Type de données élémentaires
Référence des unités
Référence de mots réservés (mots clefs)
Référence de procédures et fonctions
Référence des directives de compilation
Référence de classes
BASEUNIX
CLASSES
CMEM
CRT
CTHREADS
CWSTRING
GRAPH
MATH
SYSTEM
Référence de procédures et fonctions avec prototype
Les jetons
Les constantes
Directives du compilateur
Utiliser des conditions, des messages et des macros
Utilisation du langage de programmation assembleur
Code généré
Prise en charge d'Intel MMX
Problèmes de code
Problèmes de liaison
Problèmes de mémoire
Chaînes de caractères de ressources
Programmation de processus léger
Optimisations
Programmation de bibliothèques partagées
Utiliser les ressources Windows
Bonjour
Affichage
Astronomie
Biochimie
Électricité
Fichiers
Finance
Géographie
Géométrie
Histoire
Jeux & stratégies
Mathématique
Médicale
Météorologie
Océanographie
Sport
Temps
Tri
Trigonométrie
Validation
«DRAW» du BASIC
Phase lunaire
Calcul du calcium corrigé
Calcul le taux d'alcoolémie
Comparaison de séquence de polypeptides
Tarif d'une piscine pour 1 mois
Texte séquentiel
Liste des fichiers
IPaymt/Interet
NPer
PPaymt/Principal
Distance en Km entre deux longitudes et latitudes
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
Treillis
Chiffre romain
Pac-Man
Tetris
Tours d'Hanois
Ackermann
Exp
Factoriel
Fibonacci
Log
Nombre premier
Odd
Random
Sqrt
Triangle Pascal
Hauteur utérine
Unité de mesure
Fréquence des vagues
Hockey
Année bissextile
Calendrier
Date de la Pâque
Heure courante
Horloge à aiguille
FirstDayOfMonth
Tri à bulle (Bubble Sort)
Tri Shell Sort
ArcCos
ArcSin
Atn/ATan/ArcTan
Cos
Sin
Courriel
Extension de nom de domaine
Ararat Synapse
CryptoLib4Pascal
FBLib (Firebird Pascal Library)
FCL (Free Component Library)
GraphiX
HashLib4Pascal
INDY (Internet Direct)
LCL (Lazarus Component Library)
QuickLib
QuickLogger
WinGraph
ZeosLib
Daraja (cadre d'application pour Web)
Fano Framework
Free Spider
Horse
Synopse mORMot
tiOPF
CAI NEURAL API
tensorflowforpascal
fpGUI
MOS
Corail
Double Commander
LDAP Admin for Linux
MSDOS-0
Transmission Remote GUI
UNIX-0
Python for Delphi (P4D)
CodeTyphon Studio
Free Pascal IDE
Lazarus
Pascal XE
GNU Debugger (GDB)
Delp
FPCMake
H2Pas
PPDep
PPUDump
PPUMove
PtoP
Références des codes d'erreur
Anatomie d'un fichier unité
Structure de l'arborescence des sources du compilateur et RTL
Limites du compilateur
Modes du compilateur
Utiliser fpcmake
Compilation du compilateur
Compilateur définit lors de la compilation
Préface
Notes légal
Dictionnaire
Recherche

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 :



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Lundi, le 15 août 2022