summaryrefslogtreecommitdiffstats
path: root/share/mk
diff options
context:
space:
mode:
authorbdrewery <bdrewery@FreeBSD.org>2016-01-07 00:19:03 +0000
committerbdrewery <bdrewery@FreeBSD.org>2016-01-07 00:19:03 +0000
commit469f276a0963d4901818f18679faa28406439f56 (patch)
treebad099d28a61ca220b015c5a121cfc72c1a6066d /share/mk
parent00b2bfda556b5760eaf34e9fdd62bced9d2197a9 (diff)
downloadFreeBSD-src-469f276a0963d4901818f18679faa28406439f56.zip
FreeBSD-src-469f276a0963d4901818f18679faa28406439f56.tar.gz
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
Diffstat (limited to 'share/mk')
-rw-r--r--share/mk/sys.mk19
1 files changed, 19 insertions, 0 deletions
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index 51f2818..d8fc057 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -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,
OpenPOWER on IntegriCloud