Provided by: dpkg-dev_1.21.9ubuntu1_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
           Opties voor de assembler. Standaardwaarde: leeg. Sinds 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.

   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.

   optimalisering
       Er kunnen verschillende compilatieopties (die hierna beschreven worden) gebruikt worden om
       een resulterend binair bestand te optimaliseren (sinds dpkg 1.21.0). Opmerking: het
       inschakelen van al deze opties kan resulteren in niet-reproduceerbare ongewenste
       bijverschijnselen in het binair bestand.

       lto Deze instelling (sinds dpkg 1.21.0; standaard uitgeschakeld) zet Link Time
           Optimization aan door -flto=auto -ffat-lto-objects toe te voegen aan CFLAGS, CXXFLAGS,
           OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS, FCFLAGS of LDFLAGS.

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

   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.

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