1 # $NetBSD: Makefile.params,v 1.13 2015/07/23 08:03:25 mrg Exp $
3 # Makefile fragment for printing build parameters.
7 # List of variables whose value should be printed.
10 # A command to print the desired variables and values
11 # to stdout, without any additional debugging information.
12 # Values are printed as single-quoted strings, with
13 # embedded quotes and newlines escaped in a way that's
14 # acceptable to sh(1). Undefined values are printed
15 # as "(undefined)" (without quotation marks).
19 # Prints the names and values of all the variables
20 # listed in ${RELEASEVARS}. The desired results may be
21 # redirected somewhere other than stdout, for example by
22 # setting _params_redirect='>&3'. stdout and stderr may
23 # contain unwanted debugging information, from make and
28 # If set, this should be a shell redirection specification, such
29 # as '>&3', controlling where the output from "make _params" will
33 # . ${NETBSDSRCDIR}/etc/Makefile.params
34 # show-params: .MAKE .PHONY # print params to stdout
38 .include <bsd.own.mk> # for some variables
40 RELEASEVARS= BSDOBJDIR BSDSRCDIR BUILDID BUILDINFO BUILDSEED \
41 DESTDIR DISTRIBVER EXTERNAL_TOOLCHAIN HAVE_GCC HAVE_GDB \
42 HAVE_LLVM HAVE_PCC INSTALLWORLDDIR \
43 KERNARCHDIR KERNCONFDIR KERNOBJDIR KERNSRCDIR \
44 MACHINE MACHINE_ARCH MAKE MAKECONF MAKEFLAGS \
45 MAKEOBJDIR MAKEOBJDIRPREFIX MAKEVERBOSE \
46 MKARZERO MKATF MKBFD MKBINUTILS MKCATPAGES \
47 MKCRYPTO MKCRYPTO_RC5 MKCTF MKCVS \
48 MKDEBUG MKDEBUGLIB MKDOC MKDTRACE MKDYNAMICROOT \
49 MKGCC MKGCCCMDS MKGDB \
50 MKHESIOD MKHTML MKIEEEFP MKINET6 MKINFO MKIPFILTER \
51 MKKERBEROS MKKYUA MKLDAP MKLINKLIB MKLINT MKLLVM \
52 MKMAN MKMANZ MKMDNS MKNLS MKNPF MKOBJ MKOBJDIRS \
53 MKPAM MKPCC MKPF MKPIC MKPICINSTALL MKPICLIB MKPOSTFIX \
55 MKSHARE MKSKEY MKSOFTFLOAT MKSTATICLIB \
56 MKUNPRIVED MKUPDATE MKX11 MKYP \
57 NBUILDJOBS NETBSDSRCDIR \
58 NOCLEANDIR NODISTRIBDIRS NOINCLUDES \
60 RELEASEDIR RELEASEMACHINEDIR TOOLCHAIN_MISSING TOOLDIR \
61 USE_HESIOD USE_INET6 USE_JEMALLOC USE_KERBEROS USE_LDAP \
62 USE_PAM USE_SKEY USE_YP \
63 USETOOLS USR_OBJMACHINE \
68 # Duplicate the DISTRIBVER setting from src/etc/Makefile.
71 DISTRIBVER!= ${HOST_SH} ${NETBSDSRCDIR}/sys/conf/osrelease.sh
75 # _params does the printing.
77 _params_redirect?= # empty
80 .for var in ${RELEASEVARS}
82 @printf "%20s = '%-s'\n" ${var} ${${var}:C/'/'\\\\''/gW:Q} \
85 @printf "%20s = (undefined)\n" ${var} \
92 # The output from the "make _params" can include the following types of
95 # make -j prints "--- _params ---";
97 # if MAKEVERBOSE is set to 3 or more then make prints each "printf"
98 # command in addition to executing it;
100 # if MAKEVERBOSE is set to 4 then the shell prints each command
101 # (prefixed with "+").
103 # So the resulting output can look like this:
106 # + echo 'printf "%20s = '\''%-s'\''\n" BSDOBJDIR /usr/obj'
107 # printf "%20s = '%-s'\n" BSDOBJDIR /usr/obj
108 # + printf '%20s = '\''%-s'\''\n' BSDOBJDIR /usr/obj
109 # BSDOBJDIR = '/usr/obj'
110 # + echo 'printf "%20s = '\''%-s'\''\n" BSDSRCDIR /usr/src'
111 # printf "%20s = '%-s'\n" BSDSRCDIR /usr/src
112 # + printf '%20s = '\''%-s'\''\n' BSDSRCDIR /usr/src
113 # BSDSRCDIR = '/usr/src'
116 # where what we want is just this:
118 # BSDOBJDIR = '/usr/obj'
119 # BSDSRCDIR = '/usr/src'
122 # The shell redirections in ${PRINT_PARAMS} ensure that the unwanted
123 # noise is discarded (via ">/dev/null"), while the desired information
124 # ends up on the subshell's stdout (via ">&3" and "3>&1"). The value
125 # of _params_redirect is passed in the environment instead of on the
126 # command line, to prevent it from appearing in MAKEFLAGS (which would
127 # appear in the output).
129 PRINT_PARAMS:= (_params_redirect='>&3' ${MAKE} -f ${.PARSEDIR:Q}/${.PARSEFILE:Q} _params 3>&1 >/dev/null)