Provided by: dpkg-dev_1.19.0.5ubuntu2.4_all bug

NAAM

       dpkg-buildflags - geeft de bij pakketbouw te gebruiken bouwvlaggen terug

OVERZICHT

       dpkg-buildflags [optie...] [commando]

BESCHRIJVING

       dpkg-buildflags  is gereedschap om de compilatievlaggen op te halen die tijdens het bouwen
       van Debian pakketten gebruikt moeten worden.  De standaardvlaggen worden gedefinieerd door
       de leverancier, maar ze kunnen op verschillende manieren uitgebreid/vervangen worden:

       1.     voor het hele systeem met /etc/dpkg/buildflags.conf;

       2.     voor   de  huidige  gebruiker  met  $XDG_CONFIG_HOME/dpkg/buildflags.conf,  waarbij
              $XDG_CONFIG_HOME als standaardwaarde $HOME/.config heeft;

       3.     tijdelijk door de gebruiker met omgevingsvariabelen (zie het onderdeel OMGEVING);

       4.     dynamisch door de pakketonderhouder met omgevingsvariabelen  die  ingesteld  worden
              via debian/rules (zie het onderdeel OMGEVING).

       De configuratiebestanden kunnen vier types opdrachten bevatten:

       SET vlag waarde
              Vervang de waarde van de vlag die vlag als naam heeft in waarde waarde.

       STRIP vlag waarde
              Verwijder  van  de  vlag  die  vlag  als  naam heeft alle bouwvlaggen die in waarde
              opgesomd worden.

       APPEND vlag waarde
              Breid de vlag die vlag als naam heeft uit door er de opties aan toe te  voegen  die
              in  waarde  opgegeven  worden.  Er  wordt  een  spatie geplaatst voor de waarde die
              toegevoegd wordt, indien de huidige waarde van de vlag niet leeg is.

       PREPEND vlag waarde
              Breid de vlag die vlag als naam heeft uit door er vooraan  de  opties  aan  toe  te
              voegen  die  in  waarde  opgegeven  worden. Er wordt een spatie geplaatst achter de
              waarde die toegevoegd wordt, indien de huidige waarde van de vlag niet leeg is.

       De configuratiebestanden kunnen commentaar bevatten op regels die beginnen met  een  hekje
       (#). Ook lege regels worden genegeerd.

COMMANDO'S

       --dump Laat  op standaarduitvoer alle compilatievlaggen en hun waarden zien. Dit geeft per
              regel één vlag en de  waarde  ervan  weer  met  daartussenin  een  gelijkheidsteken
              (“vlag=waarde”). Dit is de standaardactie.

       --list Geeft  een lijst weer van vlaggen die door de huidige leverancier ondersteund wordt
              (één per regel). Zie  het  onderdeel  ONDERSTEUNDE  VLAGGEN  voor  meer  informatie
              daarover.

       --status
              Laat  eventuele  informatie zien die nuttig kan zijn om het gedrag te verklaren van
              dpkg-buildflags  (sinds  dpkg  1.16.5):  relevante   omgevingsvariabelen,   huidige
              leverancier,   toestand   van   alle   functievlaggen.  Geef  ook  de  resulterende
              compileervlaggen met hun oorsprong weer.

              Het is de bedoeling dat dit uitgevoerd wordt vanuit debian/rules, zodat de  bouwlog
              een  duidelijk spoor van de gebruikte vlaggen kan bijhouden. Dit kan nuttig zijn om
              ermee verband houdende problemen te diagnosticeren.

       --export=indeling
              Geef op standaarduitvoer  commando's  weer  die  gebruikt  kunnen  worden  om  alle
              compilatievlaggen  te  exporteren ten behoeve van een specifiek gereedschap. Indien
              de  waarde  indeling  niet  opgegeven   werd,   wordt   sh   verondersteld.   Enkel
              compilatievlaggen  die met een hoofdletter beginnen worden opgenomen. Van de andere
              wordt aangenomen  dat  ze  niet  bruikbaar  zijn  voor  de  omgeving.  Ondersteunde
              indelingen:

              sh     Shell-opdrachten  om  alle compilatievlaggen in de omgeving in te stellen en
                     te exporteren. Er worden  aanhalingstekens  geplaatst  rond  de  vlagwaarden
                     waardoor de uitvoer gereed is om door een shell geëvalueerd te worden.

              cmdline
                     Argumenten om door te geven aan de commandoregel van een bouwprogramma om al
                     de compilatievlaggen te gebruiken (sinds dpkg 1.17.0). De vlagwaarden worden
                     volgens de shell-syntaxis tussen haakjes geplaatst.

              configure
                     Dit is een verouderde alias voor cmdline.

              make   Make-opdrachten om alle compilatievlaggen in de omgeving in te stellen en te
                     exporteren. De uitvoer kan naar een makefile-fragment geschreven  worden  en
                     geëvalueerd met behulp van een include-opdracht.

       --get vlag
              Geef  de  waarde  van  de  vlag weer op de standaarduitvoer. Sluit af met 0 bij een
              gekende vlag en sluit anders af met 1.

       --origin vlag
              Geef de origine weer van de waarde die teruggegeven wordt door --get. Sluit af  met
              0 bij een gekende vlag en sluit anders af met 1. De origine kan één van de volgende
              waarden hebben:

              vendor de  originele  vlag  die  door  de   leverancier   ingesteld   werd,   wordt
                     teruggegeven;

              system de vlag werd ingesteld/gewijzigd door een systeemconfiguratie;

              user   de vlag werd ingesteld/gewijzigd door een gebruikersspecifieke configuratie;

              env    de vlag werd ingesteld/gewijzigd door een omgevingsspecifieke configuratie.

       --query
              Print  any  information that can be useful to explain the behaviour of the program:
              current vendor, relevant environment variables, feature areas, state of all feature
              flags, and the compiler flags with their origin (since dpkg 1.19.0).

              For example:
                Vendor: Debian
                Environment:
                 DEB_CFLAGS_SET=-O0 -Wall

                Area: qa
                Features:
                 bug=no
                 canary=no

                Area: reproducible
                Features:
                 timeless=no

                Flag: CFLAGS
                Value: -O0 -Wall
                Origin: env

                Flag: CPPFLAGS
                Value: -D_FORTIFY_SOURCE=2
                Origin: vendor

       --query-features gebied
              Print  the  features  enabled  for  a  given  area  (since  dpkg 1.16.2).  The only
              currently recognized areas on Debian and derivatives are future, 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.

              De uitvoer is in RFC822-indeling met één sectie per functie. Bijvoorbeeld:

                Feature: pie
                Enabled: yes

                Feature: stackprotector
                Enabled: yes

       --help Toon info over het gebruik en sluit af.

       --version
              Toon de versie en sluit af.

ONDERSTEUNDE VLAGGEN

       CFLAGS Opties voor de  C-compiler.  De  door  de  leverancier  ingestelde  standaardwaarde
              bestaat  uit  -g  en  het standaardniveau van optimalisatie (gewoonlijk -O2, of -O0
              indien de omgevingsvariabele DEB_BUILD_OPTIONS noopt aangeeft).

       CPPFLAGS
              Opties voor de C-preprocessor. Standaardwaarde: leeg.

       CXXFLAGS
              Opties voor de C++ compiler. Hetzelfde als CFLAGS.

       OBJCFLAGS
              Opties voor de Objective C compiler. Hetzelfde als CFLAGS.

       OBJCXXFLAGS
              Opties voor de Objective C++ compiler. Hetzelfde als CXXFLAGS.

       GCJFLAGS
              Opties voor de GNU Java compiler (gcj). Een subset van CFLAGS.

       FFLAGS Opties voor de Fortran 77 compiler. Een subset van CFLAGS.

       FCFLAGS
              Opties voor de Fortran 9x compiler. Hetzelfde als FFLAGS.

       LDFLAGS
              Opties die aan de compiler  doorgegeven  worden  bij  het  linken  van  uitvoerbare
              programma's  en gedeelde objecten (indien de linker rechtstreeks aangeroepen wordt,
              dan moeten -Wl en , van die opties verwijderd worden). Standaardwaarde: leeg.

       In de toekomst kunnen nog andere vlaggen toegevoegd worden als daar behoefte aan  ontstaat
       (bijvoorbeeld om andere talen te ondersteunen).

FUNCTIONALITEITSGEBIEDEN

       Elke   gebiedsfunctionaliteit   kan   in   de  gebiedswaarde  van  de  omgevingsvariabelen
       DEB_BUILD_OPTIONS en DEB_BUILD_MAINT_OPTIONS ingeschakeld en uitgeschakeld worden  met  de
       schakelaars ‘+’ en ‘-’. Om bijvoorbeeld de hardening-functionaliteit “pie” te activeren en
       de functionaliteit “fortify” uit te schakelen, kunt u in debian/rules het volgende doen:

         export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify

       De  bijzondere  functionaliteit  all  (geldig  in  elk  gebied)  kan  gebruikt  worden  om
       gelijktijdig   alle  gebiedsfunctionaliteit  te  activeren  of  uit  te  schakelen.  Alles
       uitschakelen in het gebied hardening en enkel “format” en “fortify” activeren kunt  u  dus
       doen met:

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

   future
       Several  compile-time  options (detailed below) can be used to enable features that should
       be enabled by default, but cannot due to backwards compatibility reasons.

       lfs    This  setting  (disabled  by  default)  enables  Large  File  Support   on   32-bit
              architectures  where  their  ABI  does  not  include  LFS  by  default,  by  adding
              -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 to CPPFLAGS.

   qa (kwaliteitsbevordering)
       Er kunnen verschillende compilatieopties (die hierna beschreven worden) gebruikt worden om
       problemen in de broncode of het bouwsysteem te helpen detecteren.

       bug    Deze instelling (die standaard uitgeschakeld is) voegt alle waarschuwingsopties toe
              die op een betrouwbare wijze problematische broncode  opsporen.  De  waarschuwingen
              zijn  fataal.  De  enige  vlaggen  die  momenteel ondersteund worden zijn CFLAGS en
              CXXFLAGS   waarbij   de   vlaggen   ingesteld   staan   op    -Werror=array-bounds,
              -Werror=clobbered,             -Werror=implicit-function-declaration             en
              -Werror=volatile-register-var.

       canary Deze instelling (die standaard uitgeschakeld is) voegt loze kanarievogelopties  toe
              aan  de  bouwvlaggen,  zodat in de bouwlogs nagekeken kan worden hoe de bouwvlaggen
              doorgegeven   worden   en   zodat   het    eventueel    ontbreken    van    normale
              bouwvlaginstellingen  ontdekt  kan  worden.  Momenteel  zijn  de enige ondersteunde
              vlaggen CPPFLAGS, CFLAGS, OBJCFLAGS, CXXFLAGS en OBJCXXFLAGS, waarbij  die  vlaggen
              als   -D__DEB_CANARY_vlag_willekeurige-id__   ingesteld   worden,  en  LDFLAGS  dat
              ingesteld wordt op -Wl,-z,deb-canary-willekeurige-id.

   sanitize (saneren)
       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.  Note: these options should not be used for production builds  as
       they can reduce reliability for conformant code, reduce security or even functionality.

       address
              Deze  instelling (standaard uitgeschakeld) voegt -fsanitize=address toe aan LDFLAGS
              en -fsanitize=address -fno-omit-frame-pointer aan CFLAGS en aan CXXFLAGS.

       thread Deze instelling (standaard uitgeschakeld) voegt -fsanitize=thread toe  aan  CFLAGS,
              CXXFLAGS en LDFLAGS.

       leak   Deze instelling (standaard uitgeschakeld) voegt -fsanitize=leak toe aan LDFLAGS. Ze
              wordt  automatisch  uitgeschakeld  als  ofwel  de  address-functionaliteit  of   de
              thread-functionaliteit geactiveerd is, aangezien die dit impliceren.

       undefined
              Deze  instelling  (standaard  uitgeschakeld)  voegt  -fsanitize=undefined  toe  aan
              CFLAGS, CXXFLAGS en LDFLAGS.

   hardening (kwetsbaarheidsreductie)
       Er kunnen verschillende compilatie-opties (die hierna beschreven worden)  gebruikt  worden
       om   te   helpen   bij   het   versterken   van   een   resulterend  binair  pakket  tegen
       geheugenvervuilingsaanvallen of om bijkomende waarschuwingsberichten te geven tijdens  het
       compileren.  Behalve  wanneer  hierna  anders  aangegeven is, worden deze opties standaard
       geactiveerd voor architecturen die ze ondersteunen.

       format Deze instelling (standaard geactiveerd) voegt -Wformat -Werror=format-security  toe
              aan  CFLAGS,  CXXFLAGS,  OBJCFLAGS en OBJCXXFLAGS. Dit zal waarschuwingen geven bij
              verkeerd gebruik van indelingstekenreeksen en zal mislukken  als  indelingsfuncties
              gebruikt  worden op een manier die mogelijke veiligheidsproblemen tot gevolg kunnen
              hebben. Momenteel  geeft  dit  een  waarschuwing  als  een  printf-functie  of  een
              scanf-functie  aangeroepen  wordt  met een indelingstekenreeks die geen letterlijke
              tekenreeks is en er  ook  geen  indelingsargumenten  opgegeven  werden,  zoals  bij
              printf(foo);  in plaats van printf("%s", foo);. Dit kan een veiligheidslek zijn als
              de indelingstekenreeks afkomstig was van onbetrouwbare invoer en ‘%n’ bevat.

       fortify
              Deze instelling (standaard geactiveerd) voegt -D_FORTIFY_SOURCE=2 toe aan CPPFLAGS.
              Tijdens  het  produceren van de code heeft de compiler een heleboel informatie over
              buffergroottes (waar mogelijk), en tracht  een  functieaanroep  met  een  onveilige
              ongelimiteerde   buffergrootte   te  vervangen  door  een  functieaanroep  met  een
              gelimiteerde buffergrootte. Dit is in het  bijzonder  nuttig  bij  oude  en  slecht
              geschreven  code.  Daarnaast  wordt  het gebruik in het voor schrijven toegankelijk
              geheugen van indelingstekenreeksen  die  ‘%n’  bevatten,  geblokkeerd.  Indien  een
              toepassing op een dergelijke indelingstekenreeks steunt, zal het er een alternatief
              voor moeten gebruiken.

              Merk op dat de code ook met -O1 of hoger gecompileerd moet worden opdat deze  optie
              effect  zou hebben. Indien de omgevingsvariabele DEB_BUILD_OPTIONS noopt bevat, dan
              wordt ondersteuning voor  fortify  uitgeschakeld.  Dit  is  te  wijten  aan  nieuwe
              waarschuwingen die gegeven worden door glibc 2.16 en hoger.

       stackprotector
              Deze  instelling  (standaard  geactiveerd  als  stackprotectorstrong  niet gebruikt
              wordt) voegt -fstack-protector --param=ssp-buffer-size=4 toe aan CFLAGS,  CXXFLAGS,
              OBJCFLAGS,    OBJCXXFLAGS,    GCJFLAGS,    FFLAGS    en    FCFLAGS.    Dit    voegt
              beveiligingscontroles tegen het overschrijven van de stack toe. Dit maakt  dat  bij
              veel mogelijke code-injectieaanvallen afgebroken wordt. In het beste geval wordt op
              die manier een kwetsbaarheid voor code-injectie omgebogen tot een denial-of-service
              (dienst niet beschikbaar) of een fictief probleem (afhankelijk van de toepassing).

              Deze  functionaliteit  vereist  het  linken  van  de  code met glibc (of een andere
              aanbieder van __stack_chk_fail) en moet dus uitgeschakeld  worden  als  er  gebouwd
              wordt met -nostdlib of -ffreestanding of iets gelijkaardigs.

       stackprotectorstrong
              Deze  instelling  (standaard  geactiveerd)  voegt  -fstack-protector-strong toe aan
              CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS en FCFLAGS. Dit  is  een
              sterkere variant van stackprotector, maar zonder noemenswaardig prestatieverlies.

              Het uitzetten van stackprotector schakelt ook deze functionaliteit uit.

              Deze   functionaliteit   stelt  dezelfde  vereisten  als  stackprotector  en  heeft
              daarenboven ook gcc 4.9 of een recentere versie nodig.

       relro  Deze instelling (standaard geactiveerd) voegt -Wl,-z,relro toe aan LDFLAGS. Tijdens
              het  laden  van  het  programma moet de linker in verschillende ELF-geheugensecties
              schrijven. Dit  zet  voor  de  programmalader  een  vlag  zodat  die  deze  secties
              alleen-lezen maakt alvorens de controle over te dragen aan het programma. Het meest
              noemenswaardige effect is dat dit aanvallen door het overschrijven  van  de  Global
              Offset  Table  (GOT)  voorkomt.  Indien  deze  optie uitgeschakeld wordt, wordt ook
              bindnow uitgezet.

       bindnow
              Deze instelling (standaard uitgeschakeld) voegt -Wl,-z,now toe aan LDFLAGS. Tijdens
              het  laden  van  het programma worden alle dynamische symbolen omgezet, waardoor de
              volledige PLT (Procedure Linkage Table) als alleen lezen gemarkeerd kan worden (ten
              gevolge  van  relro  hiervoor).  Deze optie kan niet aangezet worden als relro niet
              geactiveerd is.

       pie    Deze  instelling  (zonder  standaardinstelling  sinds  dpkg  1.18.23  en  door  gcc
              standaard  geïnjecteerd  bij  de  Debian  architecturen amd64, arm64, armel, armhf,
              i386, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, mips64el, ppc64el, s390x,  sparc
              en  sparc64)  voegt  zo  nodig  de  vereiste  opties  toe om PIE te activeren of te
              deactiveren. In geval van activering en  door  gcc  geïnjecteerd,  wordt  er  niets
              toegevoegd,  In  geval  van  activering  en niet geïnjecteerd door gcc, wordt -fPIE
              toegevoegd bij  CFLAGS,  CXXFLAGS,  OBJCFLAGS,  OBJCXXFLAGS,  GCJFLAGS,  FFLAGS  en
              FCFLAGS,  en -fPIE -pie bij LDFLAGS. In geval van deactivering en geïnjecteerd door
              gcc  wordt  -fno-PIE  toegevoegd  bij  CFLAGS,  CXXFLAGS,  OBJCFLAGS,  OBJCXXFLAGS,
              GCJFLAGS, FFLAGS en FCFLAGS, en -fno-PIE -no-pie bij LDFLAGS.

              Position  Independent  Executable  (PIE  - positie-onafhankelijke programma's) zijn
              nodig om voordeel te halen uit  Address  Space  Layout  Randomization  (ASLR  -  de
              adresruimte   rangschikken   in   toevallige   volgorde),   hetgeen   door  sommige
              kernelversies ondersteund wordt. Hoewel ASLR reeds voor datagebieden in de stack en
              de   heap   opgelegd  kan  worden  (brk  and  mmap),  moeten  de  codegebieden  als
              positieonafhankelijk gecompileerd worden.  Gedeelde  bibliotheken  doen  dit  reeds
              (-fPIC),  waardoor zij automatisch ASLR krijgen, maar binaire .text-gebieden moeten
              als PIE gebouwd worden om ASLR te krijgen. Als dit gebeurt,  worden  aanvallen  van
              het  type  ROP  (Return  Oriented  Programming  -  op  terugkeerwaarde georiënteerd
              programmeren) veel moeilijker aangezien er geen statische locaties  meer  zijn  die
              bij een aanval van geheugenvervuiling als springplank gebruikt kunnen worden.

              PIE  is  niet compatibel met -fPIC, dus over het algemeen moet men voorzichtig zijn
              bij het bouwen van gedeelde objecten. Maar aangezien de PIE-vlaggen die  meegegeven
              worden  geïnjecteerd  worden  via  specs-bestanden  van  gcc, zou het altijd veilig
              moeten zijn om ze onvoorwaardelijk  in  te  stellen  ongeacht  het  objecttype  dat
              gecompileerd of gelinkt wordt.

              Statische bibliotheken kunnen door programma's of door andere gedeelde bibliotheken
              gebruikt worden. Afhankelijk van de gebruikte vlaggen bij het compileren  van  alle
              objecten  in een statische bibliotheek, zullen deze bibliotheken door verschillende
              reeksen objecten gebruikt kunnen worden:

              geen   Kan niet gelinkt  worden  aan  een  PIE-programma,  noch  aan  een  gedeelde
                     bibliotheek.

              -fPIE  Kan gelinkt worden aan elk programma, maar niet aan een gedeelde bibliotheek
                     (aanbevolen).

              -fPIC  Kan gelinkt worden aan elk programma en elke gedeelde bibliotheek.

              Indien er een behoefte bestaat om deze vlaggen manueel in  te  stellen  en  de  gcc
              specs-injectie  te overbruggen, moet u rekening houden met verschillende zaken. Het
              onvoorwaardelijk  en  expliciet  doorgeven  van  -fPIE,  -fpie  of  -pie  aan   een
              bouwsysteem  dat  libtool  gebruikt,  is  veilig  aangezien deze vlaggen weggelaten
              worden bij het bouwen van gedeelde bibliotheken. Bij projecten  waarin  daarentegen
              zowel  programma's  als  gedeelde bibliotheken gebouwd worden, moet u ervoor zorgen
              dat  bij  het  bouwen  van  de  gedeelde  bibliotheken  -fPIC  steeds  als  laatste
              doorgegeven  wordt  (waardoor  het  een  eventuele  voorafgaande  -PIE  opheft) aan
              compilatievlaggen zoals  CFLAGS  en  dat  -shared  als  laatste  doorgegeven  wordt
              (waardoor  het  een  eventuele  voorafgaande  -pie  opheft)  aan  linkvlaggen zoals
              LDFLAGS. Opmerking: dit is niet nodig met het standaard specs-mechanisme van gcc.

              Aangezien PIE via een algemeen register geïmplementeerd wordt, kunnen bovendien bij
              sommige  architecturen  (maar niet meer bij i386 sinds de optimalisaties die in gcc
              >= 5 toegepast zijn)  prestatieverminderingen  tot  15%  optreden  bij  zeer  zware
              belasting  met tekstsegmenten van toepassingen. De meeste belastingen hebben minder
              dan 1% prestatievermindering tot gevolg. Architecturen met meer algemene  registers
              (bijv. amd64) vertonen niet zo een hoge terugval in de ergste gevallen.

   reproducible (reproduceerbaar)
       De hierna behandelde compilatieopties kunnen gebruikt worden om de bouwreproduceerbaarheid
       te helpen verbeteren of om bijkomende waarschuwingsberichten af  te  leveren  tijdens  het
       compileren.  Behalve  wanneer  het  hierna  aangegeven wordt, worden deze opties standaard
       geactiveerd voor architecturen die ze ondersteunen.

       timeless
              Deze instelling (standaard geactiveerd) voegt -Wdate-time  toe  bij  CPPFLAGS.  Dit
              leidt tot waarschuwingen als de macros __TIME__, __DATE__ en __TIMESTAMP__ gebruikt
              worden.

       fixdebugpath
              Deze instelling (standaard geactiveerd)  voegt  -fdebug-prefix-map=BUILDPATH=.  toe
              aan  CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS en FCFLAGS, waarbij
              BUILDPATH ingesteld wordt op de basismap van het  pakket  dat  gebouwd  wordt.  Dit
              heeft  als  effect  dat  het  bouwpad  verwijderd  wordt van eventueel gegenereerde
              debug-symbolen.

OMGEVING

       Er zijn  twee  sets  omgevingsvariabelen  die  dezelfde  operaties  uitvoeren.  De  eerste
       (DEB_vlag_operatie)  zou  nooit  gebruikt mogen worden binnen debian/rules. Die is bedoeld
       voor eventuele gebruikers die het bronpakket opnieuw willen bouwen met andere bouwvlaggen.
       De  tweede set (DEB_vlag_MAINT_operatie) zou door pakketonderhouders enkel in debian/rules
       gebruikt moeten worden om de resulterende bouwvlaggen aan te passen.

       DEB_vlag_SET
       DEB_vlag_MAINT_SET
              Deze variabele kan gebruikt worden om de teruggegeven waarde voor de opgegeven vlag
              vlag af te dwingen.

       DEB_vlag_STRIP
       DEB_vlag_MAINT_STRIP
              Deze   variabele   kan   gebruikt   worden  om  in  een  lijst  met  witruimte  als
              scheidingsteken opties op te geven die weggehaald zullen worden uit de set  vlaggen
              die teruggegeven wordt voor de opgegeven vlag.

       DEB_vlag_APPEND
       DEB_vlag_MAINT_APPEND
              Deze variabele kan gebruikt worden om bijkomende opties toe te voegen aan de waarde
              die teruggegeven wordt voor de opgegeven vlag.

       DEB_vlag_PREPEND
       DEB_vlag_MAINT_PREPEND
              Deze variabele kan gebruikt worden om vooraan bijkomende opties toe te  voegen  aan
              de waarde die teruggegeven wordt voor de opgegeven vlag.

       DEB_BUILD_OPTIONS
       DEB_BUILD_MAINT_OPTIONS
              Deze  variabelen  kunnen  door  een gebruiker of een onderhouder gebruikt worden om
              diverse gebiedsfuncties die bouwvlaggen beïnvloeden, te activeren of uit te zetten.
              De   variabele   DEB_BUILD_MAINT_OPTIONS  vervangt  eventuele  instellingen  in  de
              functionaliteitsgebieden      DEB_BUILD_OPTIONS.      Zie       het       onderdeel
              FUNCTIONALITEITSGEBIEDEN voor de details.

       DEB_VENDOR
              Deze  instelling  definieert  de huidige leverancier. Indien zij niet ingesteld is,
              zal  gezocht  worden  naar  de  huidige  leverancier  door   te   gaan   lezen   in
              /etc/dpkg/origins/default.

       DEB_BUILD_PATH
              Deze  variabele  stelt in welk bouwpad (sinds dpkg 1.18.8) gebruikt moet worden bij
              functionaliteit zoals fixdebugpath waardoor die gesuperviseerd kan worden door  het
              aanroepende programma. Momenteel is deze variabele Debian- en derivaat-specifiek.

BESTANDEN

   Configuratiebestanden
       /etc/dpkg/buildflags.conf
              Configuratiebestand dat voor het hele systeem geldt.

       $XDG_CONFIG_HOME/dpkg/buildflags.conf of
       $HOME/.config/dpkg/buildflags.conf
              Configuratiebestand dat gebruikersafhankelijk is.

   Ondersteuning bij het maken van een pakket
       /usr/share/dpkg/buildflags.mk
              Makefile-fragment  dat  alle  vlaggen  die door dpkg-buildflags ondersteund worden,
              laadt in variabelen (en eventueel exporteert) (sinds dpkg 1.16.1).

VOORBEELDEN

       Om in een makefile bouwvlaggen door te geven aan een bouwcommando:

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

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

       Om in een shell-script of shell-fragment bouwvlaggen in  te  stellen,  kan  eval  gebruikt
       worden om de uitvoer te interpreteren van en de vlaggen naar de omgeving te exporteren:

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

       of om de positieparameters in te stellen die aan een commando doorgegeven moeten worden:

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

   Het gebruik in debian/rules
       Om  de benodigde bouwvlaggen te bekomen die aan het bouwsysteem doorgegeven moeten worden,
       moet  u  vanuit  het  bestand  debian/rules  dpkg-buildflags  aanroepen  of  buildflags.mk
       invoegen. Merk op dat oudere versies van dpkg-buildpackage (voor dpkg 1.16.1) deze vlaggen
       automatisch exporteerden. U zou hierop echter niet  mogen  betrouwen,  aangezien  dit  het
       handmatig aanroepen van debian/rules defect maakt.

       Voor   pakketten   met  een  autoconf-achtig  bouwsysteem,  kunt  u  de  relevante  opties
       rechtstreeks doorgeven aan configure of make(1), zoals hiervoor geïllustreerd werd.

       Voor andere bouwsystemen, of indien u een meer fijnmazige controle nodig heeft over  welke
       vlaggen  waar  doorgegeven  worden, kunt u --get gebruiken. Of in de plaats daarvan kunt u
       buildflags.mk invoegen, dat zorgt voor het aanroepen van dpkg-buildflags  en  het  opslaan
       van de bouwvlaggen in variabelen voor make.

       Indien  u  alle  bouwvlaggen  naar  de  omgeving  wenst  te  exporteren  (waar  ze door uw
       bouwsysteem opgepikt kunnen worden):

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

       Als u bijkomende controle  wenst  over  wat  geëxporteerd  wordt,  kunt  u  de  variabelen
       handmatig exporteren (aangezien er standaard geen enkele geëxporteerd wordt):

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

       En u kunt de vlaggen natuurlijk ook handmatig doorgeven aan commando's:

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