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/lo-
       cal/share/bsdadminscripts2/buildflags.awk'.

       This is not end user documentation, if you  just	 want  to  use	build-
       flags.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.  Syn-
       tax  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
       remain 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 as-
       signment.  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 location blocks to a make '.if' statement. If  possible  symlinked
       paths  will  be substituted with	their physical paths. A	'!' at the be-
       ginning 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 assign-
       ments 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  as-
       signments 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
       assignment  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
       collection.

AUTHORS
       Dominic Fandrey <freebsd@k4m1.org>

FreeBSD	Ports 14.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+14.3.quarterly>

home | help