Always try to set .OBJDIR, even if AUTO_OBJ is enabled, and fallback to .CURDIR.

When AUTO_OBJ is enabled this change becomes redundant with the auto.obj.mk
check added in r325404.  However, it is possible that new code is added
at some point between src.sys.obj.mk and auto.obj.mk that disables AUTO_OBJ.
That could leave make with a bogus and unsafe .OBJDIR in some cases.

Sponsored by:	Dell EMC Isilon
This commit is contained in:
Bryan Drewery
2017-11-05 00:12:05 +00:00
parent dea21cf465
commit 00428a515c
+8 -4
View File
@@ -154,9 +154,8 @@ MK_AUTO_OBJ:= ${OBJDIR_WRITABLE}
.export MK_AUTO_OBJ .export MK_AUTO_OBJ
.endif # ${MK_AUTO_OBJ} == "no" && ... .endif # ${MK_AUTO_OBJ} == "no" && ...
# Assign this directory as .OBJDIR if possible after determining if AUTO_OBJ # Assign this directory as .OBJDIR if possible.
# can be enabled by default. #
.if ${MK_AUTO_OBJ} == "no"
# The expected OBJDIR already exists, set it as .OBJDIR. # The expected OBJDIR already exists, set it as .OBJDIR.
.if !empty(MAKEOBJDIRPREFIX) && exists(${MAKEOBJDIRPREFIX}${.CURDIR}) .if !empty(MAKEOBJDIRPREFIX) && exists(${MAKEOBJDIRPREFIX}${.CURDIR})
.OBJDIR: ${MAKEOBJDIRPREFIX}${.CURDIR} .OBJDIR: ${MAKEOBJDIRPREFIX}${.CURDIR}
@@ -169,5 +168,10 @@ MK_AUTO_OBJ:= ${OBJDIR_WRITABLE}
.elif ${MAKE_VERSION} <= 20170720 && \ .elif ${MAKE_VERSION} <= 20170720 && \
${.CURDIR} == ${SRCTOP} && ${.OBJDIR} == ${SRCTOP}/ ${.CURDIR} == ${SRCTOP} && ${.OBJDIR} == ${SRCTOP}/
.OBJDIR: ${.CURDIR} .OBJDIR: ${.CURDIR}
.else
# The OBJDIR we wanted does not yet exist, ensure we default to safe .CURDIR
# in case make started with a bogus MAKEOBJDIR, that expanded before OBJTOP
# was set, that happened to match some unexpected directory. Either
# auto.obj.mk or bsd.obj.mk will create the directory and fix .OBJDIR later.
.OBJDIR: ${.CURDIR}
.endif .endif
.endif # ${MK_AUTO_OBJ} == "no"