Provided by: dpkg-dev_1.18.4ubuntu1.7_all bug

NOM

       dpkg-buildflags  -  retourne les options de compilation à utiliser pour la construction du
       paquet

SYNOPSIS

       dpkg-buildflags [option...] [commande]

DESCRIPTION

       dpkg-buildflags est un script qui  permet  de  récupérer  les  options  de  compilation  à
       utiliser  pour  la  construction  d'un paquet. Les drapeaux par défaut sont définis par le
       fournisseur de la distribution  mais  peuvent  être  étendus  ou  remplacés  de  plusieurs
       façons :

       1.     pour tout le système avec /etc/dpkg/buildflags.conf;

       2.     pour  l'utilisateur courant avec $XDG_CONFIG_HOME/dpkg/buildflags.conf où la valeur
              par défaut de $XDG_CONFIG_HOME est $HOME/.config;

       3.     temporairement par l'utilisateur avec des variables d'environnement (voir VARIABLES
              D'ENVIRONNEMENT).

       4.     dynamiquement  par  le responsable du paquet avec des variables d'environnement via
              debian/rules (voir VARIABLES D'ENVIRONNEMENT).

       Les fichiers de configuration peuvent contenir deux types de directives :

       SET drapeau valeur
              Remplace le drapeau drapeau par la valeur valeur.

       STRIP valeur drapeau
              Retire du drapeau drapeau tous les drapeaux de construction listés dans valeur.

       APPEND drapeau valeur
              Étend le drapeau drapeau avec les options indiquées dans  valeur.  Une  espace  est
              ajoutée  au  début  de ce qui est ajouté si la valeur actuelle du drapeau n'est pas
              vide.

       PREPEND valeur drapeau
              Préfixe le drapeau drapeau avec les options indiquées dans valeur. Une  espace  est
              ajoutée  au  début  de ce qui est ajouté si la valeur actuelle du drapeau n'est pas
              vide.

       Les fichiers de configuration peuvent contenir des commentaires sur les lignes  commençant
       par un dièse (#). Les lignes vides sont également ignorées.

COMMANDES

       --dump Print to standard output all compilation flags and their values. It prints one flag
              per line separated from its value by an equal  sign  (“flag=value”).  This  is  the
              default action.

       --list Affiche  la  liste  des drapeaux gérés par l'éditeur actuel (un par ligne). Voir la
              section DRAPEAUX GÉRÉS pour plus d'informations sur chacun d'eux.

       --status
              Display  any  information  that  can  be  useful  to  explain  the   behaviour   of
              dpkg-buildflags  (since  dpkg  1.16.5):  relevant  environment  variables,  current
              vendor, state of all feature flags. Also print the resulting  compiler  flags  with
              their origin.

              Cette  option est destinée à être utilisée depuis debian/rules, afin de garder dans
              le journal de construction une trace claire des drapeaux de  compilation  utilisés.
              Cela peut être utile pour diagnostiquer des problèmes qui y seraient liés.

       --export=format
              Affiche  sur  la  sortie  standard les commandes qui permettent d'exporter tous les
              drapeaux de compilation pour un outil particulier. Si format n'est pas spécifié, sa
              valeur  est sh. Seuls les drapeaux de compilation commençant par une majuscule sont
              inclus, les autres étant supposés inadaptés  à  l'environnement.  Formats  pris  en
              charge :

              sh     Commandes  shell  pour  définir et exporter tous les drapeaux de compilation
                     dans l'environnement. Les valeurs drapeau sont protégées et ainsi la  sortie
                     est prête à être évaluée par un shell.

              cmdline
                     Arguments  à  passer  à  la ligne de commande d'un programme de construction
                     pour utiliser tous les drapeaux de compilation  (depuis  dpkg  1.17.0).  Les
                     valeurs drapeau sont protégées dans la syntaxe du shell.

              configure
                     C'est un ancien alias pour cmdline.

              make   Directives de make pour définir et exporter tous les drapeaux de compilation
                     dans l'environnement. La  sortie  peut  être  écrite  dans  un  fragment  de
                     makefile et évaluée en utilisant une directive include.

       --get drapeau
              Affiche  la valeur de ce drapeau sur la sortie standard. Retourne un code de sortie
              0 si le drapeau est connu et 1 s'il est inconnu.

       --origin drapeau
              Affiche l'origine de la valeur renvoyée par --get. Retourne un code de sortie 0  si
              le  drapeau  est  connu  et  1  s'il  est  inconnu.  L'origine  est une des valeurs
              suivantes :

              vendor le drapeau défini à l'origine par l'éditeur est renvoyé ;

              system le drapeau est placé ou modifié par un réglage système ;

              user   le  drapeau  est  placé  ou  modifié  par  une  configuration  spécifique  à
                     l'utilisateur ;

              env    le  drapeau  est  placé  ou  modifié  par  une configuration spécifique dans
                     l'environnement.

       --query-features domaine
              Print the features enabled for a given area (since dpkg 1.16.2). The only currently
              recognized  areas  on  Debian  and  derivatives  are qa, reproducible, sanitize and
              hardening, see the FEATURE AREAS section for more details. Exits with 0 if the area
              is known otherwise exits with 1.

              L'affichage  est  dans  le  format RFC822, avec une section par fonctionnalité. Par
              exemple :

                Feature: pie
                Enabled: no

                Feature: stackprotector
                Enabled: yes

       --help Affiche un message d'aide puis quitte.

       --version
              Affiche le numéro de version puis quitte.

DRAPEAUX GÉRÉS

       CFLAGS Options du compilateur C. La valeur par défaut définie par l'éditeur comporte -g et
              le  niveau  d'optimisation  par  défaut  (-O2  en  général,  ou  -O0 si la variable
              d'environnement DEB_BUILD_OPTIONS contient noopt).

       CPPFLAGS
              Options du préprocesseur C. Valeur par défaut : aucune.

       CXXFLAGS
              Options du compilateur C++. Analogue à CFLAGS.

       OBJCFLAGS
              Options du compilateur Objective C. Analogue à CFLAGS.

       OBJCXXFLAGS
              Options du compilateur Objective C++. Analogue à CXXFLAGS.

       GCJFLAGS
              Options du compilateur Java GNU (gcj). Un sous-ensemble de CFLAGS.

       FFLAGS Options du compilateur Fortran 77. Un sous-ensemble de CFLAGS.

       FCFLAGS
              Options du compilateur Fortran 9x. Analogue à FFLAGS.

       LDFLAGS
              Options passées au compilateur lors du processus de liaison des exécutables ou  des
              objets  partagés  (si le linker est appelé directement, alors -Wl et , doivent être
              retirés de ces options). Valeur par défaut : aucune.

       De nouveaux drapeaux pourront être ajoutés si besoin est (par exemple  pour  la  prise  en
       charge de nouveaux langages).

ZONES D'OPTION

       Each   area   feature   can   be   enabled  and  disabled  in  the  DEB_BUILD_OPTIONS  and
       DEB_BUILD_MAINT_OPTIONS environment variable's area value with the ‘+’ and  ‘-’  modifier.
       For  example,  to enable the hardening “pie” feature and disable the “fortify” feature you
       can do this in debian/rules:

         export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify

       The special feature all (valid in any area) can be used to  enable  or  disable  all  area
       features  at  the  same time. Thus disabling everything in the hardening area and enabling
       only “format” and “fortify” can be achieved with:

         export DEB_BUILD_MAINT_OPTIONS=hardening=-all,+format,+fortify

   qa
       Plusieurs options de compilation  (détaillées  ci-dessous)  peuvent  être  utilisées  pour
       détecter des problèmes dans le code source ou dans le système de construction.

       bug    Ce  paramètre  (désactivé  par  défaut)  ajoute  toutes les options d'avertissement
              détectant de façon fiable du code source  problématique.  Les  avertissements  sont
              fatals.

       canary Ce  paramètre  (désactivé  par  défaut)  ajoute  des options détectrices « canary »
              factices  aux  drapeaux  de  construction  de  telle  sorte  que  les  rapports  de
              compilation  permettront  de vérifier la façon dont ces drapeaux se propagent et de
              repérer  toute  ommission  des  paramètres  de  drapeaux  habituels.  Les  drapeaux
              actuellement pris en charge sont CPPFLAGS, CFLAGS, OBJCFLAGS,
               CXXFLAGS    ainsi    que    OBJCXXFLAGS,    avec    les    drapeaux    définis   à
              -D__DEB_CANARY_flag_random-id__,        et        LDFLAGS        paramétré        à
              -Wl,-z,deb-canary-random-id.

   sanitize
       Several  compile-time  options  (detailed  below) can be used to help sanitize a resulting
       binary against memory corruptions, memory leaks, use after free, threading data races  and
       undefined behavior bugs.

       address
              This   setting  (disabled  by  default)  adds  -fsanitize=address  to  LDFLAGS  and
              -fsanitize=address -fno-omit-frame-pointer to CFLAGS and CXXFLAGS.

       thread This setting (disabled by default) adds -fsanitize=thread to CFLAGS,  CXXFLAGS  and
              LDFLAGS.

       leak   This  setting  (disabled  by  default)  adds  -fsanitize=leak  to  LDFLAGS. It gets
              automatically disabled if either the address or the thread features are enabled, as
              they imply it.

       undefined
              This  setting  (disabled  by default) adds -fsanitize=undefined to CFLAGS, CXXFLAGS
              and LDFLAGS.

   hardening
       Plusieurs options de compilation  (détaillées  ci-dessous)  peuvent  être  utilisées  pour
       accroître  la résistance du binaire compilé face aux attaques par corruption de la mémoire
       ou fournir des messages d'avertissement  supplémentaires  lors  de  la  compilation.  Sauf
       mention  contraire  (voir  ci-dessous),  ces  options  sont  activées  par défaut pour les
       architectures qui les gèrent.

       format This setting (enabled by default) adds -Wformat -Werror=format-security to  CFLAGS,
              CXXFLAGS,  OBJCFLAGS  and  OBJCXXFLAGS. This will warn about improper format string
              uses, and will fail when format functions are used in a way that represent possible
              security problems. At present, this warns about calls to printf and scanf functions
              where the format string is not a string literal and there are no format  arguments,
              as in printf(foo); instead of printf("%s", foo); This may be a security hole if the
              format string came from untrusted input and contains ‘%n’.

       fortify
              This setting (enabled by default) adds -D_FORTIFY_SOURCE=2 to CPPFLAGS. During code
              generation the compiler knows a great deal of information about buffer sizes (where
              possible), and attempts to replace insecure unlimited length buffer function  calls
              with  length-limited  ones.  This  is  especially  useful  for  old,  crufty  code.
              Additionally, format strings in writable memory that contain ‘%n’ are  blocked.  If
              an application depends on such a format string, it will need to be worked around.

              Veuillez  noter  que  pour que cette option fasse effet, la source devra aussi être
              compilée avec  -O1  ou  plus.  Si  la  variable  d'environnement  DEB_BUILD_OPTIONS
              contient  noopt, la prise en charge de fortify sera désactivée du fait des nouveaux
              avertissements émis par glibc version 2.16 et ultérieure.

       stackprotector
              Ce réglage (activé par défaut si stackprotectorstrong n'est  pas  employé),  ajoute
              -fstack-protector   --param=ssp-buffer-size=4   à   CFLAGS,   CXXFLAGS,  OBJCFLAGS,
              OBJCXXFLAGS, GCJFLAGS,  FFLAGS  et  FCFLAGS.  Il  ajoute  des  contrôles  liés  aux
              réécritures  de piles. Cela conduit des tentatives d'attaques par injection de code
              à terminer en échec. Dans le meilleur des  cas,  cette  protection  transforme  une
              vulnérabilité  d'injection de code en déni de service ou en non-problème (selon les
              applications).

              Cette fonctionnalité impose de lier le code à glibc (ou  toute  autre  bibliothèque
              fournissant  __stack_chk_fail)  et  doit  donc  être désactivée lorsque le code est
              construit avec -nostdlib, -ffreestanding ou équivalents.

       stackprotectorstrong
              Ce réglage, activé par défaut, ajoute -fstack-protector-strong à CFLAGS,  CXXFLAGS,
              OBJCFLAGS,  OBJCXXFLAGS,  GCJFLAGS,  FFLAGS  et  FCFLAGS.  Il  s'agit d'une version
              renforcée  de  stackprotectorqui  n'affecte  pas  les   performances   de   manière
              importante.

              Désactiver stackprotector désactive également ce paramètre.

              Cette fonctionnalité a les même exigences que stackprotector, en plus de nécessiter
              gcc 4.9 ou plus récent.

       relro  Ce réglage, activé par défaut, ajoute -Wl,-z,relro à LDFLAGS. Lors du chargement du
              programme,  plusieurs  parties de la mémoire ELF doivent être écrites par l'éditeur
              de liens. Ce réglage indique au chargeur de mettre ces sections  en  lecture  seule
              avant  de  rendre  le contrôle au programme. L'utilisation habituelle de ce réglage
              est la protection contre les attaques par  réécriture  GOT.  Si  cette  option  est
              désactivée, l'option bindnow sera également désactivée.

       bindnow
              Ce  réglage,  désactivé par défaut, ajoute -Wl,-z,now à LDFLAGS. Lors du chargement
              du programme, tous les symboles dynamiques sont résolus, ce qui permet  au  « PLT »
              entier  (NdT :  jargon détecté !) d'être en lecture seule (du fait du réglage relro
              ci-dessus). Cette option ne peut être activée si relro ne l'est pas.

       pie    Ce réglage, désactivé par  défaut,  ajoute  -fPIE  à  CFLAGS,  CXXFLAGS  OBJCFLAGS,
              OBJCXXFLAGS,  GCJFLAGS,  FFLAGS  et  FCFLAGS,ainsi  que  -fPIE  -pie à LDFLAGS. Les
              exécutables  à  position   indépendante   (« Position   Independent   Executable »)
              permettent  d'utiliser  la  randomisation de l'organisation de l'espace d'adressage
              (ASLR : « Address Space  Layout  Randomization »),  qui  est  gérée  par  certaines
              versions  du  noyau. Bien que ASLR puisse déjà être mise en ?uvre pour les zones de
              données dans la pile et le tampon (brk et mmap), les zones de  codes  doivent  être
              compilées comme indépendantes de la position. Les bibliothèques partagées font déjà
              cela (-fPIC) ce qui permet automatiquement d'utiliser ASLR. Par contre les  régions
              .text  binaires doivent être construites en mode PIE pour mettre en ?uvre ASLR. Une
              fois cela réalisé, les attaques ROP (« Return  Oriented  Programming »)  deviennent
              plus  difficiles  car  il n'existe pas d'emplacement statique d'où rebondir sur une
              attaque par corruption de la mémoire.

              Ce réglage n'est pas compatible avec -Fpic : la prudence est donc  conseillée  pour
              la construction d'objets partagés.

              De  plus,  comme  la protection PIE est mise en ?uvre à l'aide dun registre global,
              certaines architectures (notamment i386) peuvent souffrir de pertes de performances
              allant jusqu'à 15 % sur des charges d'applications utilisant largement les segments
              de texte ; le plus souvent, cette perte de performances n'excèdera  pas  1 %.  Pour
              des  architectures  offrant  plus  de  registres globaux (par exemple amd64), cette
              pénalisation n'existe pratiquement pas.

   reproducible
       Les  options  de  compilation  (détaillées  ci-dessous)  peuvent  aider  à  améliorer   la
       reproductibilité   de   la   construction   ou   fournir   des   messages  d'avertissement
       supplémentaires lors de la compilation. Sauf  mention  contraire  (voir  ci-dessous),  ces
       options sont activées par défaut pour les architectures qui les gèrent.

       timeless
              This  setting  (enabled  by  default) adds -Wdate-time to CPPFLAGS. This will cause
              warnings when the __TIME__, __DATE__ and __TIMESTAMP__ macros are used.

ENVIRONNEMENT

       Deux jeux de  variables  d'environnement  effectuent  les  mêmes  opérations.  Le  premier
       (DEB_drapeau_opération) ne devrait jamais être utilisé depuis debian/rules. Il est destiné
       aux utilisateurs souhaitant recompiler le paquet source avec des drapeaux  de  compilation
       modifiés.   Le   second  (DEB_drapeau_MAINT_opération)  ne  doit  être  utilisé  que  dans
       debian/rules par les responsables de paquets pour modifier  les  drapeaux  de  compilation
       concernés.

       DEB_drapeau_SET
       DEB_drapeau_MAINT_SET
              Cette variable permet de forcer la valeur renvoyée pour le drapeau indiqué.

       DEB_drapeau_STRIP
       DEB_drapeau_MAINT_STRIP
              Cette  variable  peut  être utilisée pour fournir une liste d'options (séparées par
              des espaces) qui seront retirées  du  jeu  de  drapeaux  renvoyé  pour  le  drapeau
              indiqué.

       DEB_drapeau_APPEND
       DEB_drapeau_MAINT_APPEND
              Cette  variable  permet  d'ajouter des options à la valeur renvoyée pour le drapeau
              indiqué.

       DEB_drapeau_PREPEND
       DEB_drapeau_MAINT_PREPEND
              Cette variable permet de préfixer la valeur renvoyée pour le  drapeau  indiqué  par
              des options supplémentaires.

       DEB_BUILD_OPTIONS
       DEB_BUILD_MAINT_OPTIONS
              Ces variables peuvent être utilisées par un utilisateur ou un responsable de paquet
              pour activer ou désactiver différentes options de zone qui affectent  les  drapeaux
              de construction. La variable DEB_BUILD_MAINT_OPTIONS outrepasse tous les paramètres
              de la zone d'options DEB_BUILD_OPTIONS. Voir la section ZONES D'OPTION pour plus de
              détails.

FICHIERS

   Fichiers de configuration.
       /etc/dpkg/buildflags.conf
              Fichier de configuration pour l'ensemble du système.

       $XDG_CONFIG_HOME/dpkg/buildflags.conf or
       $HOME/.config/dpkg/buildflags.conf
              Fichier de configuration propre à l'utilisateur

   Gestion de l'empaquetage
       /usr/share/dpkg/buildflags.mk
              Fragment  de  fichier Makefile qui chargera (et facultativement exportera) dans les
              variables  (depuis  dpkg  1.16.1)  tous   les   drapeaux   pris   en   charge   par
              dpkg-buildflags.

ENVIRONNEMENT

       DEB_VENDOR
              This  setting  defines the current vendor. If not set, it will discover the current
              vendor by reading /etc/dpkg/origins/default.

EXEMPLES

       Pour passer des drapeaux de compilation à une commande de compilation dans un Makefile :

           $(MAKE) $(shell dpkg-buildflags --export=cmdline)

           ./configure $(shell dpkg-buildflags --export=cmdline)

       To set build flags in a shell script or shell fragment, eval can be used to interpret  the
       output and to export the flags in the environment:

           eval "$(dpkg-buildflags --export=sh)" && make

       ou définir les paramètres de position à passer à la commande :

           eval "set -- $(dpkg-buildflags --export=cmdline)"
           for dir in a b c; do (cd $dir && ./configure "$@" && make); done

   Utilisation dans debian/rules
       Il  faut appeler dpkg-buildflags ou inclure buildflags.mk à partir du fichier debian/rules
       pour obtenir les drapeaux de compilation nécessaires à passer au système de  construction.
       Veuillez noter que les anciennes versions de dpkg-buildpackage (antérieures à dpkg 1.16.1)
       exportaient ces drapeaux automatiquement. Néanmoins, il est déconseillé de dépendre de  ce
       comportement parce qu'il casse l'appel manuel de debian/rules.

       Pour  les  paquets avec des systèmes de construction du style autoconf, il est possible de
       passer les options appropriées à configure ou make(1) directement, comme vu ci-dessus.

       For other build systems, or when you need more fine-grained control about which flags  are
       passed  where,  you  can  use --get. Or you can include buildflags.mk instead, which takes
       care of calling dpkg-buildflags and storing the build flags in make variables.

       Si vous voulez exporter tous les drapeaux  de  compilation  dans  l'environnement  (où  le
       système de construction peut les récupérer) :

           DPKG_EXPORT_BUILDFLAGS = 1
           include /usr/share/dpkg/buildflags.mk

       Pour  un contrôle supplémentaire sur ce qui est exporté, vous pouvez exporter manuellement
       les variables (puisque aucune n'est exportée par défaut) :

           include /usr/share/dpkg/buildflags.mk
           export CPPFLAGS CFLAGS LDFLAGS

       Et enfin, vous pouvez bien sûr passer manuellement les drapeaux aux commandes :

           include /usr/share/dpkg/buildflags.mk
           build-arch:
                $(CC) -o hello hello.c $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)

TRADUCTION

       Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006.  Nicolas  François,
       2006. Veuillez signaler toute erreur à <debian-l10n-french@lists.debian.org>.