Provided by: dpkg-dev_1.21.1ubuntu2.3_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
           De vlag met vlag als naam overschrijven om ze de waarde waarde te geven.

       STRIP vlag waarde
           Van de vlag met vlag als naam alle bouwvlaggen verwijderen die in waarde opgesomd worden.

       APPEND vlag waarde
           De  vlag  met  vlag  als  naam uitbreiden 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
           De  vlag  met  vlag  als  naam  uitbreiden  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
           Op standaarduitvoer alle compilatievlaggen en hun waarden tonen. Dit geeft per regel één vlag  en  de
           waarde ervan weer met daartussenin een gelijkheidsteken (“vlag=waarde”). Dit is de standaardactie.

       --list
           Een  lijst  weergeven van vlaggen die door de huidige leverancier ondersteund worden (één per regel).
           Zie het onderdeel SUPPORTED FLAGS (ondersteunde vlaggen) voor meer informatie daarover.

       --status
           Eventuele informatie laten zien welke nuttig kan zijn om het gedrag te verklaren van  dpkg-buildflags
           (sinds   dpkg   1.16.5):  relevante  omgevingsvariabelen,  huidige  leverancier,  toestand  van  alle
           functievlaggen. Ook de resulterende compileervlaggen met hun oorsprong weergeven.

           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
           Op  standaarduitvoer  commando's  weergeven  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
           De  waarde van de vlag op de standaarduitvoer weergeven. Sluit af met 0 bij een gekende vlag en sluit
           anders af met 1.

       --origin vlag
           De origine weergeven 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
           Alle  informatie  tonen  welke  nuttig kan zijn om het gedrag van het programma te verklaren: huidige
           leverancier, relevante omgevingsvariabelen, functiegebieden, toestand van alle functievlaggen  en  de
           compileervlaggen met hun oorsprong (sinds dpkg 1.19.0).

           Bijvoorbeeld:

            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
           De  functies  weergeven die voor een opgegeven gebied geactiveerd zijn (sinds dpkg 1.16.2). Momenteel
           worden door Debian en zijn  derivaten  enkel  de  gebieden  future,  qa,  reproducible,  sanitize  en
           hardening herkend. Zie het onderdeel FUNCTIEGEBIEDEN voor meer details. Sluit af met 0 als het gebied
           gekend is, anders met 1.

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

            Feature: pie
            Enabled: yes

            Feature: stackprotector
            Enabled: yes

       --help
           Info tonen over het gebruik en afsluiten.

       --version
           De versie tonen en afsluiten.

ONDERSTEUNDE VLAGGEN

       ASFLAGS
           Options for the assembler. Default value: empty. Since dpkg 1.21.0.

       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.

       DFLAGS
           Opties voor de D-compiler (ldc of gdc). Sinds dpkg 1.20.6.

       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).

FUNCTIEGEBIEDEN

       Elke  gebiedsfunctie  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   functie   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
       Er  kunnen  verschillende  compilatieopties (die hierna beschreven worden) gebruikt worden om functies te
       activeren die standaard geactiveerd zouden moeten zijn, maar dat niet zijn om  redenen  van  terugwaartse
       compatibiliteit.

       lfs Deze  instelling  (standaard  uitgezet)  activeert  ondersteuning  voor  grote  bestanden (Large File
           Support) op 32-bits architecturen  waarvan  de  ABI  standaard  geen  LFS-ondersteuning  biedt,  door
           -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 toe te voegen aan 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.

   optimize
       Several compile-time options (detailed below) can be used to help optimize a resulting binary (since dpkg
       1.21.0).  Note: enabling all these options can result in unreproducible binary artifacts.

       lto This setting (since dpkg 1.21.0; disabled by  default)  enables  Link  Time  Optimization  by  adding
           -flto=auto  -ffat-lto-objects  to CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS, FCFLAGS
           and LDFLAGS.

   sanitize (saneren)
       Er kunnen verschillende compilatie-opties (die hierna beschreven worden) gebruikt worden om te helpen bij
       het gezond houden van een resulterend binair pakket op het vlak van geheugenvervuiling,  geheugenlekkage,
       geheugengebruik  na vrijgave, dataraces bij threads en bugs door ongedefinieerd gedrag. Noot: deze opties
       zouden niet gebruikt mogen worden voor een bouw voor productiedoeleinden, aangezien  ze  een  verminderde
       betrouwbaarheid bieden inzake codeconformiteit en de beveiliging en zelfs de functionaliteit reduceren.

       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,  aangezien  het  nu   standaard
           geactiveerd  wordt  door  gcc op de Debian-architecturen amd64, arm64, armel, armhf, hurd-i386, i386,
           kfreebsd-amd64, kfreebsd-i386, mips, mipsel, mips64el, powerpc, ppc64, ppc64el, riscv64, s390x, sparc
           en sparc64) voegt zo nodig de vereiste opties toe om PIE te  activeren  of  te  deactiveren  via  gcc
           specs-bestanden,  afhankelijk  van  het feit of gcc op die architectuur de vlaggen zelf injecteert of
           niet. Indien de instelling geactiveerd is en gcc de vlaggen injecteert, voegt ze niets toe. Indien de
           instelling  geactiveerd  is  en  gcc  de  vlaggen  niet  injecteert,  voegt   ze   -fPIE   toe   (via
           /usr/share/dpkg/pie-compiler.specs) aan CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS en
           FCFLAGS,  en  -fPIE  -pie  (via  /usr/share/dpkg/pie-link.specs)  aan  LDFLAGS.  Indien de instelling
           gedeactiveerd   is   en   gcc   de   vlaggen    injecteert,    voegt    ze    -fno-PIE    toe    (via
           /usr/share/dpkg/no-pie-compile.specs)  aan CFLAGS, CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS
           en FCFLAGS, en -fno-PIE -no-pie (via /usr/share/dpkg/no-pie-link.specs) aan 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.

       fixfilepath
           Deze instelling (standaard geactiveerd) voegt -ffile-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 elk
           gegenereerd bestand.

           Indien zowel fixdebugpath als fixfilepath ingesteld zijn, heeft deze laatste  optie  voorrang,  omdat
           het een superset is van de eerste.

       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.

       DPKG_COLORS
           Stelt de kleurmodus in (sinds dpkg 1.18.5). Waarden die momenteel gebruikt mogen  worden  zijn:  auto
           (standaard), always en never.

       DPKG_NLS
           Indien  dit  ingesteld  is,  zal  het  gebruikt  worden  om  te  beslissen  over  het  activeren  van
           moedertaalondersteuning, ook gekend als  internationaliseringsondersteuning  (of  i18n)  (sinds  dpkg
           1.19.0). Geldige waarden zijn: 0 and 1 (standaard).

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 en de vlaggen in 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)

1.21.1                                             2024-02-23                                 dpkg-buildflags(1)