From b6725ecdb25725f9fb32bb809f4e9e16ac128873 Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Tue, 1 Dec 2015 03:09:54 +0000 Subject: [PATCH] FAST_DEPEND: Workaround hacks in the wild that have '..' or '/' in OBJS. This is mostly working around the converts/iconv port having '../ces/file.o' in its OBJS list which resulted in '.depend../ces/file.o'. Now it will have '.depend.._ces_file.o'. Other implementations have :T which would result in '.depend.file.o' here, but that could lead to collisions. X-MFC-With: r291554 MFC after: 1 week Sponsored by: EMC / Isilon Storage Division --- share/mk/bsd.dep.mk | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk index 30f2b8f6c30..aac932a0941 100644 --- a/share/mk/bsd.dep.mk +++ b/share/mk/bsd.dep.mk @@ -60,15 +60,18 @@ DEPENDFILES= ${DEPENDFILE} .if ${MK_FAST_DEPEND} == "yes" && ${.MAKE.MODE:Unormal:Mmeta*} == "" DEPENDFILES+= ${DEPENDFILE}.* DEPEND_MP?= -MP -DEPEND_CFLAGS+= -MD -MF${DEPENDFILE}.${.TARGET} +# Handle OBJS=../somefile.o hacks. Just replace '/' rather than use :T to +# avoid collisions. +DEPEND_FILTER= C,/,_,g +DEPEND_CFLAGS+= -MD -MF${DEPENDFILE}.${.TARGET:${DEPEND_FILTER}} DEPEND_CFLAGS+= -MT${.TARGET} CFLAGS+= ${DEPEND_CFLAGS} DEPENDOBJS+= ${OBJS} ${POBJS} ${SOBJS} .for __obj in ${DEPENDOBJS:O:u} .if ${.MAKEFLAGS:M-V} == "" -.sinclude "${DEPENDFILE}.${__obj}" +.sinclude "${DEPENDFILE}.${__obj:${DEPEND_FILTER}}" .endif -DEPENDFILES_OBJS+= ${DEPENDFILE}.${__obj} +DEPENDFILES_OBJS+= ${DEPENDFILE}.${__obj:${DEPEND_FILTER}} .endfor .endif # ${MK_FAST_DEPEND} == "yes"