Provided by: dpkg-dev_1.19.7ubuntu3.2_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 SUPPORTED FLAGS (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
              Laat alle informatie zien die 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
              Geef de functies weer 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 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).

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.

   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 gedeactiveerd)  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 eventueel gegenereerde bestanden.

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

1.19.7                                             2022-05-25                                 dpkg-buildflags(1)