Improve bsd.progs.mk compatibility with bsd.prog.mk

1. Do not install FILES/SCRIPTS multiple times if PROGS is specified; this is
   already handled via bsd.prog.mk when it's called recursively (PR: 191055,
   191955).
2. Some variables, like BINDIR and PROGNAME, default to a value if unset
   whereas others get appended to, like CFLAGS. Add support for the former case
   (PR: 191056)
3. Make "checkdpadd" and "clean" available targets for recursive execution.

Reviewed by: marcel, sjg
Phabric: D822
PR: 191055, 191056, 191955
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
This commit is contained in:
ngie 2014-09-24 04:45:35 +00:00
parent 35a979c5fb
commit 21dcd3f250

View File

@ -42,10 +42,15 @@ PROG ?= $t
.if defined(PROG)
# just one of many
PROG_VARS += BINDIR CFLAGS CPPFLAGS CXXFLAGS DPADD DPLIBS LDADD MAN SRCS
PROG_OVERRIDE_VARS += BINDIR MAN SRCS
PROG_VARS += CFLAGS CPPFLAGS CXXFLAGS DPADD DPLIBS LDADD ${PROG_OVERRIDE_VARS}
.for v in ${PROG_VARS:O:u}
.if defined(${v}.${PROG}) || defined(${v}_${PROG})
$v += ${${v}_${PROG}:U${${v}.${PROG}}}
.if empty(${PROG_OVERRIDE_VARS:M$v})
.if defined(${v}.${PROG})
$v += ${${v}.${PROG}}
.elif defined(${v}_${PROG})
$v += ${${v}_${PROG}}
.endif
.else
$v ?=
.endif
@ -61,7 +66,7 @@ UPDATE_DEPENDFILE ?= NO
DEPENDFILE?= .depend.${PROG}
# prog.mk will do the rest
.else
all: ${PROGS}
all: ${FILES} ${PROGS} ${SCRIPTS}
# We cannot capture dependencies for meta mode here
UPDATE_DEPENDFILE = NO
@ -75,7 +80,7 @@ UPDATE_DEPENDFILE = NO
.ifndef _RECURSING_PROGS
# tell progs.mk we might want to install things
PROGS_TARGETS+= cleandepend cleandir cleanobj depend install
PROGS_TARGETS+= checkdpadd clean cleandepend cleandir cleanobj depend install
.for p in ${PROGS}
.if defined(PROGS_CXX) && !empty(PROGS_CXX:M$p)
@ -98,18 +103,15 @@ $p.$t: .PHONY .MAKE
$t: ${PROGS:%=%.$t}
.endfor
SCRIPTS_TARGETS+= cleandepend cleandir cleanobj depend install
.if empty(PROGS) && !empty(SCRIPTS)
.for p in ${SCRIPTS}
.for t in ${SCRIPTS_TARGETS:O:u}
$p.$t: .PHONY .MAKE
(cd ${.CURDIR} && ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS= \
SUBDIR= SCRIPT=$p ${x.$p} ${@:E})
.endfor
.endfor
.for t in ${SCRIPTS_TARGETS:O:u}
$t: ${SCRIPTS:%=%.$t}
.for t in ${PROGS_TARGETS:O:u}
scripts.$t: .PHONY .MAKE
(cd ${.CURDIR} && ${MAKE} -f ${MAKEFILE} SUBDIR= _RECURSING_PROGS= \
$t)
$t: scripts.$t
.endfor
.endif
.endif