diff options
author | bdrewery <bdrewery@FreeBSD.org> | 2016-01-07 00:19:03 +0000 |
---|---|---|
committer | bdrewery <bdrewery@FreeBSD.org> | 2016-01-07 00:19:03 +0000 |
commit | 469f276a0963d4901818f18679faa28406439f56 (patch) | |
tree | bad099d28a61ca220b015c5a121cfc72c1a6066d /share/mk | |
parent | 00b2bfda556b5760eaf34e9fdd62bced9d2197a9 (diff) | |
download | FreeBSD-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.mk | 19 |
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, |