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
This commit is contained in:
parent
dbecd1bfdf
commit
3ba0785a74
7
Makefile
7
Makefile
@ -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.
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user