svn commit: r293286 - in head: . share/mk
Bryan Drewery
bdrewery at FreeBSD.org
Thu Jan 7 00:19:04 UTC 2016
Author: bdrewery
Date: Thu Jan 7 00:19:03 2016
New Revision: 293286
URL: https://svnweb.freebsd.org/changeset/base/293286
Log:
Move the MAKEOBJDIRPREFIX value guard to sys.mk and expand to MAKEOBJDIR.
This will ensure that the variable was not set as a make override, in
make.conf, src.conf or src-env.conf. It allows setting the value in
src-env.conf when using WITH_AUTO_OBJ since that case properly handles
changing .OBJDIR (except if MAKEOBJDIRPREFIX does not yet exist which is
being discussed to be changed).
This change allows setting a default MAKEOBJDIRPREFIX via local.sys.env.mk.
Sponsored by: EMC / Isilon Storage Division
Modified:
head/Makefile
head/share/mk/sys.mk
Modified: head/Makefile
==============================================================================
--- head/Makefile Thu Jan 7 00:15:02 2016 (r293285)
+++ head/Makefile Thu Jan 7 00:19:03 2016 (r293286)
@@ -143,13 +143,6 @@ TGTS+= ${BITGTS}
PATH= /sbin:/bin:/usr/sbin:/usr/bin
MAKEOBJDIRPREFIX?= /usr/obj
-_MAKEOBJDIRPREFIX!= /usr/bin/env -i PATH=${PATH} ${MAKE} \
- ${.MAKEFLAGS:MMAKEOBJDIRPREFIX=*} __MAKE_CONF=${__MAKE_CONF} \
- -f /dev/null -V MAKEOBJDIRPREFIX dummy
-.if !empty(_MAKEOBJDIRPREFIX)
-.error MAKEOBJDIRPREFIX can only be set in environment, not as a global\
- (in make.conf(5)) or command-line variable.
-.endif
# We often need to use the tree's version of make to build it.
# Choices add to complexity though.
Modified: head/share/mk/sys.mk
==============================================================================
--- head/share/mk/sys.mk Thu Jan 7 00:15:02 2016 (r293285)
+++ head/share/mk/sys.mk Thu Jan 7 00:19:03 2016 (r293286)
@@ -33,6 +33,13 @@ __ENV_ONLY_OPTIONS:= \
${__DEFAULT_YES_OPTIONS} \
${__DEFAULT_DEPENDENT_OPTIONS:H}
+__ENV_ONLY_VARS= \
+ MAKEOBJDIR \
+ MAKEOBJDIRPREFIX
+.for _var in ${__ENV_ONLY_VARS}
+_pre_includes_${_var:tl}:= ${${_var}:U__null}
+.endfor
+
# early include for customization
# see local.sys.mk below
# Not included when building in fmake compatibility mode (still needed
@@ -50,6 +57,9 @@ __ENV_ONLY_OPTIONS:= \
.endif
.endif
.if ${MK_AUTO_OBJ} == "yes"
+# Reset, since it is allowed to be set from src-env.conf included before this.
+_pre_includes_makeobjdirprefix:= ${MAKEOBJDIRPREFIX:U__null}
+_pre_includes_makeobjdir:= ${MAKEOBJDIR:U__null}
# This needs to be done early - before .PATH is computed
# Don't do this for 'make showconfig' as it enables all options where meta mode
# is not expected.
@@ -410,6 +420,15 @@ __MAKE_SHELL?=/bin/sh
path=${__MAKE_SHELL}
.endif
+# Ensure MAKEOBJDIRPREFIX was not incorrectly set.
+.for _var in ${__ENV_ONLY_VARS}
+.if ${.MAKEOVERRIDES:M${_var}} || (defined(${_var}) && \
+ ${${_var}} != ${_pre_includes_${_var:tl}})
+.error ${_var} can only be set in environment, not as a global (in make.conf(5)) or command-line variable.
+.endif
+.undef _pre_includes_${_var:tl}
+.endfor
+
# Hack for ports compatibility. Historically, ports makefiles have
# assumed they can examine MACHINE_CPU without including anything
# because this was automatically included in sys.mk. For /usr/src,
More information about the svn-src-all
mailing list