Use a full path to the target for make rules which create symlinks @,

machine and ${MACHINE_CPUARCH}. Otherwise the presence of a file named
"x86" or "x86.c" in the make path can cause problems.

Submitted by:	lwhsu (original version)
MFC after:	1 month
This commit is contained in:
markj 2014-03-04 14:00:49 +00:00
parent 58a9881ebd
commit 4e7fa16cf6

View File

@ -238,7 +238,7 @@ beforedepend: ${_ILINKS}
# causes all the modules to be rebuilt when the directory pointed to changes.
.for _link in ${_ILINKS}
.if !exists(${.OBJDIR}/${_link})
${OBJS}: ${_link}
${OBJS}: ${.OBJDIR}/${_link}
.endif
.endfor
@ -252,18 +252,23 @@ SYSDIR= ${_dir}
.error "can't find kernel source tree"
.endif
${_ILINKS}:
@case ${.TARGET} in \
.for _link in ${_ILINKS}
.PHONY: ${_link}
${_link}: ${.OBJDIR}/${_link}
${.OBJDIR}/${_link}:
@case ${.TARGET:T} in \
machine) \
path=${SYSDIR}/${MACHINE}/include ;; \
@) \
path=${SYSDIR} ;; \
*) \
path=${SYSDIR}/${.TARGET}/include ;; \
path=${SYSDIR}/${.TARGET:T}/include ;; \
esac ; \
path=`(cd $$path && /bin/pwd)` ; \
${ECHO} ${.TARGET} "->" $$path ; \
ln -sf $$path ${.TARGET}
${ECHO} ${.TARGET:T} "->" $$path ; \
ln -sf $$path ${.TARGET:T}
.endfor
CLEANFILES+= ${PROG} ${KMOD}.kld ${OBJS}