diff options
Diffstat (limited to 'contrib/bmake/mk/yacc.mk')
-rw-r--r-- | contrib/bmake/mk/yacc.mk | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/contrib/bmake/mk/yacc.mk b/contrib/bmake/mk/yacc.mk index 7f7e99578d70..30e377d1991c 100644 --- a/contrib/bmake/mk/yacc.mk +++ b/contrib/bmake/mk/yacc.mk @@ -1,4 +1,6 @@ -# $Id: yacc.mk,v 1.7 2020/08/19 17:51:53 sjg Exp $ +# SPDX-License-Identifier: BSD-2-Clause +# +# $Id: yacc.mk,v 1.9 2024/02/17 17:26:57 sjg Exp $ # # @(#) Copyright (c) 1999-2011, Simon J. Gerraty @@ -23,6 +25,28 @@ RM?= rm YACC.y?= ${YACC} ${YFLAGS} +# first deal with explicit *.y in SRCS +.for y in ${SRCS:M*.y} +.if ${YACC.y:M-d} == "" || defined(NO_RENAME_Y_TAB_H) +.ORDER: ${y:T:R}.c y.tab.h +y.tab.h: .NOMETA +${y:T:R}.c y.tab.h: $y + ${YACC.y} ${.IMPSRC} + [ ! -s y.tab.c ] || mv y.tab.c ${.TARGET} + ${RM} -f y.tab.[!h] +.else +.ORDER: ${y:T:R}.c ${y:T:R}.h +${y:T:R}.h: .NOMETA +${y:T:R}.c ${y:T:R}.h: $y + ${YACC.y} ${.IMPSRC} + [ ! -s y.tab.c ] || mv y.tab.c ${.TARGET:T:R}.c + [ ! -s y.tab.h ] || cmp -s y.tab.h ${.TARGET:T:R}.h \ + || mv y.tab.h ${.TARGET:T:R}.h + ${RM} -f y.tab.* +.endif +.endfor + +.if ${SRCS:M*.y} == "" .if ${YACC.y:M-d} == "" || defined(NO_RENAME_Y_TAB_H) .y.c: @@ -50,8 +74,10 @@ YACC.y?= ${YACC} ${YFLAGS} { [ ! -s y.tab.c ] || mv y.tab.c ${.TARGET}; \ ${RM} y.tab.*; }; } .endif +.endif beforedepend: ${SRCS:T:M*.y:S/.y/.c/g} CLEANFILES+= ${SRCS:T:M*.y:S/.y/.[ch]/g} CLEANFILES+= y.tab.[ch] + |