Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
BUILDFLAGS.AWK(1)	     General Commands Manual	       BUILDFLAGS.AWK(1)

NAME
     buildflags.awk -- convert buildflags.conf(5) files into make syntax

SYNOPSIS
     buildflags.awk file

DESCRIPTION
     The  buildflags.awk  script  converts  a buildflags.conf(5) file into valid
     make syntax. The script can normally be found  under  '/usr/local/share/bs-
     dadminscripts2/buildflags.awk'.

     This is not end user documentation, if you just want to use buildflags.conf
     files please refer to the buildflags.conf(5) manual page.

SYNTAX
     While  the  buildflags.conf(5)  man  page	describes  how to use the build-
     flags.conf syntax, this page describes the resulting  make  syntax.  Syntax
     examples will always be followed by the resulting make code. The term space
     actually refers to all whitespace characters (including tabs).

   Comments
     Unless  they're  enclosed	by '"' comments have the highest priority in the
     buildflags.conf syntax.  Comments that are found behind valid code will end
     up one line before it.

     EXAMPLE

	   /usr/ports/audio/arts   {IGNORE} # I do not want this, ever!

     RESULT

	   # I do not want this, ever!
	   .if ${.CURDIR:M/usr/ports/audio/arts}
	   IGNORE=		   yes
	   .endif # /usr/ports/audio/arts

   Directives
     Apart from being put behind trailing comments native make(1) directives re-
     main entirely unchanged. Native directives are everything that begins  with
     a '.'.

     EXAMPLE

	   /usr/ports/* {
		   .if defined(WANT_I386)
			   CFLAGS+=	   -m32
			   LDCONFIG+=	   -32
		   .endif
	   }

     RESULT

	   .if ${CURDIR:M/usr/ports/*}
	   .if defined(WANT_I386)
	   CFLAGS+=	   -m32
	   LDCONFIG+=	   -32
	   .endif
	   .endif # /usr/ports/*

   Quotes
     Unless  part  of  a comment quotes always have to follow a variable assign-
     ment.  Whatever lies within them will remain untouched, but  there  are  no
     escape sequences, thus there is no way to enclose a '"' within quotes. Only
     double quotes have meaning, single quotes do not have a special function.

     EXAMPLE

	   # " in a comment does not matter.
	   BUT= "  in an
		   assignment
		   does"
	   CFLAGS="-O2 -pipe" # We want optimized binaries!

     RESULT

	   # " in a comment does not matter.
	   BUT= "  in an
		   assignment
		   does"
	   # We want optimized binaries!
	   CFLAGS="-O2 -pipe"

   Locations
     Locations	are paths that are used to define where a variable assignment is
     valid, this is achieved by make. This script will simply convert such loca-
     tion blocks to a make '.if' statement. If possible symlinked paths will  be
     substituted  with	their  physical  paths. A '!' at the beginning of a path
     means that is should not be matched. Several paths can be appended with '&'
     (logical and) and '|' (logical or).

     After the location a block is opened by the character '{' and closed by the
     character '}'.

     EXAMPLE

	   /usr/ports/* & !*/work/*{
		   */x11*  {IGNORE}
	   }

     RESULT

	   .if ${.CURDIR:M/usr/ports/*} && !${.CURDIR:M*/work/*}
	   .if ${.CURDIR:M*/x11*}
	   IGNORE=		   yes
	   .endif # */x11*
	   .endif # /usr/ports/* & !*/work/*

   Variables
     For buildflags.awk there are two kinds  of  variable  assignments.  Compact
     variable  assignments  and  long variable assignments. Variable assignments
     within quotes are directly dealt with by the quoting code.

     Compact variable assignments are directly followed by their value,  without
     any spaces behind the '=' and their value ends with the first space or line
     break.  This makes it possible to have several such assignments in a single
     line. Any such assignment will be parsed into its own line, though.

     Long variable assignments are followed by spaces and the only  way  to  end
     them without a line break is a '}'.

     EXAMPLE

	   THREADS=4
	   CPUTYPE?=p3 CFLAGS= -O2 -pipe
	   /usr/src{CPUTYPE=i686 CFLAGS= -O -pipe}

     RESULT

	   THREADS=4
	   CPUTYPE?=p3
	   CFLAGS= -O2 -pipe
	   .if ${.CURDIR:M/usr/src}
	   CPUTYPE=i686
	   CFLAGS= -O -pipe
	   .endif # /usr/src

   Flags
     There are two kinds of flags, negated flags and regular flags.

     Regular  flags  are  variable assignments assuming that the mostly used as-
     signment simply is 'yes'. To define a flag it is enough  to  put  the  flag
     name in an appropriate place.

     Negated  flags  are  a way to undefine variables. To do so simply precede a
     flag name with '!'.

     EXAMPLE

	   !THREADS WITHOUT_BDB

     RESULT

	   .undef THREADS
	   WITHOUT_BDB= 	   yes

SEE ALSO
     buildflags.conf(5), buildflags.mk(1)

HISTORY
     The buildflags.awk script first appeared in the bsdadminscripts-2.1 collec-
     tion.

AUTHORS
     Dominic Fandrey <freebsd@k4m1.org>

FreeBSD ports 15.quarterly	18 November, 2023	       BUILDFLAGS.AWK(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=buildflags.awk&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help